Development blog

Table of Contents
Popular Tags
Twitter Updates
Random Pictures

I'm an Android developer

This page contains full list of blog posts related to software development posted to Aqris blog.

Last changed Feb 23, 2010 09:04 by Luiz Ribeiro
Labels: confluence

Recently we have been doing quite a lot of hardcore customizations on Atlassian's Confluence.
Often we find ourselves in a situation where we would like to have more control over the application's default behaviour. Confluence allows us to override some of the velocity files, or extend the default actions into our own custom actions, but some times these don't seem to be enough. …

Read more…

Posted at Feb 22, 2010 by Luiz Ribeiro | 0 comments
Last changed Feb 23, 2010 09:04 by Luiz Ribeiro
Labels: testing, webdriver

WebDriver is a new framework by Google for writing web automated tests. It is being merged with Selenium by OpenQA into Selenium 2.0, but as of Feb 19th, 2010, it is already available at http://code.google.com/p/selenium/ while the development is still in progress. Some of the advantages of WebDriver are a better and object-oriented API, use of browser-specific mechanisms to execute the tests and better support for advanced cases like drag and drop and dealing with pop-ups or multiple windows. …

Read more…

Posted at Feb 19, 2010 by Luiz Ribeiro | 5 comments
Last changed Feb 23, 2010 09:03 by Luiz Ribeiro
Labels: testing, patterns

Writing and maintaining automated functional tests for web applications has always been a very complicated issue for us. We are usually between using Selenium or Canoo WebTest but regardless of the choice we seemed to always have to spend a lot of time fixing broken funcional tests and having trouble running them on continuous integration tools such as Cruise Control. Plus writing the tests itself was usually a very dull activity with all those xpaths and problems with Ajax calls, timers, etc. …

Read more…

Posted at Feb 05, 2010 by Luiz Ribeiro | 3 comments
Last changed Jan 19, 2010 14:58 by Luiz Ribeiro

Spock is a testing framework based on the Groovy language but can also be used for regular Java projects. It is based on JUnit so running the test cases is as easy as running any regular JUnit tests, be it from an IDE or continuous integration servers. The framework aims to allow developers and testers to write specifications that are easily read and, ideally, may serve as documentation for actual code. …

Read more…

Posted at Jan 19, 2010 by Luiz Ribeiro | 3 comments
Last changed Jan 05, 2010 10:31 by Ürgo Ringo
Labels: testing, testautomation, uitesting, grails, javascript

I recently found this interesting article about UI test automation. I agree with most points mentioned there.

By definition the only thing that cannot be tested any other way than via UI is the UI itself - in a typical web application this means mainly JavaScript. However the good thing with JavaScript is that usually there are not many dependencies between different pages. …

Read more…

Posted at Jan 05, 2010 by Ürgo Ringo | 3 comments
Last changed Dec 18, 2009 08:23 by Ürgo Ringo
Labels: groovy, design, refactoring, ddd, domainmodel

In general design decisions are driven by either implementation problems or desire to improve readability. Interestingly I have found that for me the latter often drives refactorings inside existing classes but rarely creation of new classes. However creating new class to make important domain constraints or business rules explicit can be much more expressive than just introducing some new local variable or method. …

Read more…

Posted at Dec 18, 2009 by Ürgo Ringo | 0 comments
Last changed Nov 17, 2009 08:53 by Sven Filatov
Labels: android, mobiil-id

The thing that I seriously missed since I started to use Android Dev Phone 1 was Estonian Mobiil-ID. So in order to visit internet bank I had to use my ID-card again. And as I haven't bothered to set ID-card software up to my Gentoo box, I could only use bank services in Windows.

Android [cupcake roadmap|http://source.android. …

Read more…

Posted at Nov 17, 2009 by Sven Filatov | 7 comments
Last changed Nov 06, 2009 13:46 by Ürgo Ringo
Labels: springsource, spring, aspectj, grails, groovy

Spring Roo is essentially RAD tool that simplifies project setup and some other common tasks like creating simple persistence queries, stubbing controllers/views, adding JMS/email support.

Internal architecture is more described here http://blog.springsource.com/2009/06/18/roo-part-3/ but essentially it relies heavily on AspectJ inter-type declarations (ITD - "mixin" for Java) to separate the generated code and code written by developer. …

Read more…

Posted at Nov 06, 2009 by Ürgo Ringo | 0 comments
Last changed Nov 05, 2009 13:42 by Ürgo Ringo
Labels: javafx, gwt, ams

It's not possible to talk about technology and not to try writing something on it. So, because I have something to compare to (Aqris AMS, which was written using GWT http://ams.aqris.com) I wanted to make a similar calendar, but on javafx.

Firstly, it was really hard to get used to new syntax. Secondly, components base is a little poor and I'll show you why.

My first thought was to do calendar view using simple table, that has 96 rows and 7 columns. …

Read more…

Posted at Nov 05, 2009 by Ürgo Ringo | 3 comments
Last changed Nov 05, 2009 09:30 by Ürgo Ringo
Labels: grails, gorm, orm, hql, criteriabuilder

By default GORM injects whole set of dynamic finders into domain entities. However what should one do if he needs to implement more complex queries that require use of Criteria Builder or HQL?

Simplest option is just to do this in the layer on top of domain model. So our controllers or services would call something like Customer.executeQuery or Customer.createCriteria. Although this is the simplest option it is also the worst. First, …

Read more…

Posted at Nov 05, 2009 by Ürgo Ringo | 0 comments
Last changed Nov 02, 2009 16:36 by Ürgo Ringo
Labels: javafx, ria, mvc, eclipse, netbeans

Intro

JavaFX is a quite new platform for developing Rich Internet Applications (RIAs).
The claim is that it:

  • reaches every Internet consumer - on desktops, mobile, and new devices too.
  • delivers high performance - and the ability to engage creative professionals in the design process.
  • leverages existing skills and enterprise infrastructure.
  • is totally free, and open source.
  • provides content owners with control and ownership of their own data.

At first glance it seems, …

Read more…

Posted at Nov 02, 2009 by Ürgo Ringo | 3 comments
Last changed Oct 26, 2009 12:34 by Ürgo Ringo
Labels: grails, gorm, orm, dao, repository, ddd

Like many other new web application frameworks (e.g Rails, Spring Roo) Grails with its GORM has taken the approach that separate DAO or Repository layer is removed. Is this a bad thing or is it just a change in implementation that doesn't affect conceptual design?

In Grails persistence query functionality is added to domain entities by injecting set of static finder methods (e.g Customer.findByFirstname, Customer.executeQuery). I find that there are two main issues with this approach. …

Read more…

Posted at Oct 26, 2009 by Ürgo Ringo | 0 comments
Last changed Oct 20, 2009 10:49 by Ürgo Ringo
Labels: grails, hibernate, orm, criteria

If you implement search form functionality using Hibernate Criteria Builder in Grails then the resulting code usually looks something like this:


def criteria = Account.createCriteria();
def results = criteria {
if (seachCmd.accountNo !=null && searchCmd.accountNo != '')

Unknown macro: { eq("accountNo", searchCmd.accountNo) }

if (searchCmd.ownerName != null && searchCmd.ownerName != '') {
owner {
ilike("name", "${searchCmd. …

Read more…

Posted at Oct 20, 2009 by Ürgo Ringo | 0 comments
Last changed Oct 16, 2009 11:02 by Sven Filatov
Labels: picup, android, release

I'm pleased to announce the release of PicUP v. 2.2.0. After several months I had a bit of free time to implement the most requested feature in PicUP – possibility to add a comment (or a caption or a title) for the image that will be uploaded to the selected services.

This version of PicUP is compatible with Android SDK 1.5 or higher.

Go to Android Market to get the new version of PicUP.

Posted at Oct 16, 2009 by Sven Filatov | 1 comment
Last changed Oct 12, 2009 13:12 by Ürgo Ringo

Some interesting facts from recent interview (http://agile.dzone.com/videos/scott-ambler-agile-2009) with Scott Ambler:

  • over 90% of agile projects are required to do some upfront estimations
  • average project is required to give an estimate which should be +/-11% of actual
  • 70% of IBM's projects had actual time spent plus or minus 30% of original estimate, and then the other 30% of the projects were just all over the board
Posted at Sep 21, 2009 by Ürgo Ringo | 0 comments
Last changed Sep 01, 2009 19:11 by Aleksandr Zuikov
Labels: mvc, mvp, gwt, google, architecture, practice, best

Inspired by a talk by Ray Ryan on Google IO conference (http://code.google.com/events/io/sessions/GoogleWebToolkitBestPractices.html), I decided to try out some of his ideas. One of the main reasons to switch architecture was a promise of improved unit testing. Those, who are familiar with testing of GWT code, know that in order to test code that calls GWT.create(), you have to extend GWTTestCase in unit tests. However, there are couple of reasons why nobody likes such tests:

  • They are slow. …

Read more…

Posted at Sep 01, 2009 by Aleksandr Zuikov | 4 comments
Last changed Sep 01, 2009 19:03 by Aleksandr Zuikov
Labels: gae, google, app, engine, cloud

Introduction.

Not so long time ago GAE introduced Java environment (previously it was only Python). Currently environment is being developed and they offer only 10000 accounts for testing and feedback.

GAE can be described as a sandbox hosting for web applications. Which means that you do not have to set up the environment, it is all there and ready to go. In other words, it is a cloud of "Platform as a Service" type.

Key points

  • Java 5, 6. …

Read more…

Posted at Sep 01, 2009 by Aleksandr Zuikov | 0 comments
Last changed Aug 27, 2009 08:58 by Ürgo Ringo

I used to think that hours burndown is better that story points for tracking sprint progress. However now I think that hours are not so good at all.

First problem with hours is that it is easy to start tracking only implementation time ignoring acceptance testing or functional testing done by testers. We could of course track remaining time for implementation and testing separately for each story but then we had to spend even more time keeping our estimates up to date. …

Read more…

Posted at Aug 27, 2009 by Ürgo Ringo | 2 comments
Last changed Aug 17, 2009 21:47 by Ürgo Ringo
Labels: grails, mvc, spring, orm, gorm, groovy

Following are some notes based on initial Grails experience in a 1 month greenfield web application project.

Getting started

This is where Grails is really good at. It provides tools to help you create initial application and generates initial scaffolding code. We found that for a team without any previous Groovy experience it took about 1-2 weeks to get into decent development speed.

Read more…

Posted at Aug 17, 2009 by Ürgo Ringo | 0 comments
Last changed Jul 21, 2009 11:55 by Sven Filatov
Labels: picup, release, android

Today PicUP 2.1.0 was released. It includes support for Twitpic and Flickr services, and fixes a bug in logging on to Facebook.

Go to Android Market to get the new version of PicUP.

Posted at Jul 21, 2009 by Sven Filatov | 0 comments
Last changed Jun 24, 2009 12:26 by Sven Filatov
Labels: picup, android, release

Today PicUP 2.0.1 was released. It fixes a bug in interface to Facebook that prevented successful logins. Hopefully Facebook won't change their login procedures and API so often anymore.

Go to Android Market to get the new version of PicUP.

Posted at Jun 24, 2009 by Sven Filatov | 1 comment
Last changed Jun 12, 2009 20:52 by Sven Filatov
Labels: picup, android, release

I'm pleased to announce the release of PicUP 2.0. This version adds support for uploading images to FriendFeed service. Additionally, the application is now redesigned to be more deeply integrated to Android platform. So, you can open up camera application, capture the image and share it via PicUP. Or, you can browse through your images on SD card and, again, share them via PicUP. If you have both [Facebook|http://www.facebook. …

Read more…

Posted at Jun 12, 2009 by Sven Filatov | 0 comments
Last changed May 07, 2009 22:31 by Ürgo Ringo
Labels: hamcrest, junit, javadocs

Hamcrest library that provides Matchers used in Junit assertThat feature has interesting technique for documentation.
If you try to create new custom matcher by implementing Matcher interface you will also need to implement this method:

void dont_implement_Matcher_instead_extend_BaseMatcher()

Seems to be more effective than Javadocs

Posted at May 07, 2009 by Ürgo Ringo | 0 comments
Last changed Mar 25, 2009 09:50 by Ürgo Ringo
Labels: requirements, userstory

It seems that from requirements management perspective there are two types of non-functional requirements. These that can be implemented once and for all ("independent" requirements) and these that affect many other user stories and hence will not get done until almost all user stories are finished ("distributed" requirement). …

Read more…

Posted at Mar 25, 2009 by Ürgo Ringo | 0 comments
Last changed Dec 16, 2008 14:13 by Sven Filatov
Labels: hibernate, orm
Unknown macro: { return this instanceof Cat; }
Posted at Dec 16, 2008 by Sven Filatov | 0 comments
Last changed Dec 05, 2008 12:39 by Ürgo Ringo
Labels: scrum

Scrum followers say that often Scrum fails because it is just used to label some existing waterfallish process. Interestingly Scrum offers quite many such labels like sprint, scrum master, daily scrum, backlog etc.

If one wants to improve the current process then one should find out what are the problems and then deal with them. In some cases using "solutions" like [Containment Building|http://c2.com/cgi/wiki? …

Read more…

Posted at Dec 05, 2008 by Ürgo Ringo | 0 comments
Last changed Dec 02, 2008 01:31 by Andrei Tkatšov
Labels: gwt, smartgwt, gwt-ext

SmartGWT 1.0: A Q&A with Sanjiv Jivan (Developer of SmartGWT)
http://www.infoq.com/news/2008/11/smartgwt

SmartGWT showcase:
http://www.smartclient.com/smartgwt/showcase

Posted at Dec 02, 2008 by Andrei Tkatšov | 0 comments
Last changed Nov 28, 2008 13:48 by Ürgo Ringo
Labels: validation, design, hibernate, mvc

Introduction

In a typical business web applications there are following common options for validating business rules:

  • Validator, …

Read more…

Posted at Nov 28, 2008 by Ürgo Ringo | 1 comment
Last changed Nov 19, 2008 08:47 by Sven Filatov
Labels: testing

Might be interesting: http://www.jsystemtest.org/

Posted at Nov 19, 2008 by Sven Filatov | 0 comments
Last changed Nov 19, 2008 08:44 by Sven Filatov
Labels: agile, conference, scrum, lean, kanban

Some notes from the Agile Scandinavia 2008 conference:

  • Scrum seems to be the most popular agile methodology these days. If you want to impress co-developer then tell him/her that you are using scrum.
  • in order to get the full benefits of any agile process you need to change the thinking in whole organization towards lean/agile. If your development teams are doing scrum but operations and business people are still geared towards waterfall, you will not gain much. …

Read more…

Posted at Nov 07, 2008 by Ürgo Ringo | 0 comments
Last changed Nov 19, 2008 08:42 by Sven Filatov
Labels: conference, agile, scrum

Random thoughts from the conference:

The night before

When I arrived to the airport, I discovered our flight was scheduled 20 minutes before the time marked on our tickets. Luckily we had some time left and we managed to check in without problems. The security check guys did a good job making our bags lighter (deodorant, tooth paste, shaving foam - all taken away). Anyway, an hour later, after a bumpy road through the air, …

Read more…

Posted at Oct 30, 2008 by Sven Filatov | 0 comments
Last changed Oct 26, 2008 14:43 by Ürgo Ringo
Labels: ddd, design, architecture

Sample DDD application has been released. I guess it's sort of DDD "reference implementation" since Eric Evans' company is also involved.

I think that having such sample applications which concentrate on good design practices rather than features of some framework or library is very beneficial to the whole community. …

Read more…

Posted at Oct 26, 2008 by Ürgo Ringo | 0 comments
Last changed Oct 20, 2008 09:13 by Ürgo Ringo
Labels: codestyle, commenting

Probably everyone has sometimes come across comments like this:

// fix for issue #3604 Ronald        
if (response == null) {
    ...
}

It seems to me that some people are adding such comments in sincere belief that it will make code more easily understandable. Unfortunately the result is quite the opposite.

Issue id itself will not tell anything about the rationale for given fix. So we have to find it from issue tracker. In most cases this issue does not exist anymore, …

Read more…

Posted at Oct 20, 2008 by Ürgo Ringo | 1 comment
Last changed Oct 02, 2008 22:42 by Ürgo Ringo
Labels: estimation

As said in article below if you have fixed price project then it may be beneficial not to have very detailed requirements spec referenced in contract

http://feeds.dzone.com/~r/zones/agile/~3/401890175/fixed-price-contracts-agile-pr

Posted at Sep 26, 2008 by Ürgo Ringo | 3 comments
Last changed Sep 25, 2008 14:57 by Ürgo Ringo
Labels: hibernate, orm

Problem

You want to create association based on some advanced condition not just primary and foreign keys.

For example each Asset can have one or more AssetOwners but only one of them is the primary owner.

Solution

AssetOwner.hbm.xml
<class name="AssetOwner" table="asset_owner">
  <id name="id" column="owner_id">
  ...
</class>
Asset.hbm.xml

<class name="Asset" table="asset">
<id name="id" column="asset_id">
...
<join table="asset_owner" inverse="true">
<subselect>
SELECT o.owner_id AS primary_owner, o.asset_id
FROM asset_owner o
WHERE o.asset_id = asset_id
AND o.</id></id></class></join></subselect> …

Read more…

Posted at Sep 25, 2008 by Ürgo Ringo | 0 comments
Last changed Sep 24, 2008 10:21 by Oliver Wihler
Labels: spring, license

According to new maintenance policy after every major release (3.0, 3.1, 4.0 etc) bugfix releases for it will be freely available for 3 months. After this time bugfixes will be available in source repository but binary releases will be available only for subscribed users. Also bugfixes to any previous major release will only be available to SpringSource Enterprise customers. …

Read more…

Posted at Sep 23, 2008 by Ürgo Ringo | 1 comment
Last changed Sep 14, 2008 17:06 by Ürgo Ringo
Labels: mvc, gwt, design

General idea

Since MVC is probably the most most widely used architectural pattern for designing classical web applications it is also appealing choice for GWT. However optimal implementation of this pattern differs quite significantly from traditional web MVC and is much closer to MVC for desktop clients. One of these differences is that the Model in MVC should be allowed to communicate with underlying (business) layer. …

Read more…

Posted at Sep 14, 2008 by Ürgo Ringo | 1 comment
Last changed Aug 27, 2008 11:18 by Mart Toom
Labels: webtest, jmeter, htmlunit, testing

As WebTest is our main test automation tool that we are using since 2004, it is always good to read about it.

Marc Guillemot, lead developer of WebTest and HtmlUnit had a speech about WebTest in the JUG Cologne and has published some future plans of WebTest amongst other things. …

Read more…

Posted at Aug 27, 2008 by Mart Toom | 0 comments
Last changed Aug 24, 2008 16:13 by Ürgo Ringo
Labels: teamwork, bookreview

In my opinion there are three types of project management books:

  • ones that tell you nothing
  • ones that tell what you should do in order to follow some process (e.g Scrum, XP, RUP)
  • ones that tell why and in what context one or the other practice or solution works

I just finished reading "Managing Teams for Dummies" by Marty Brounstein and I think that this book falls under the 3rd category. Some things I found particularly interesting:

Work groups function on 3 levels: dependent, …

Read more…

Posted at Aug 24, 2008 by Ürgo Ringo | 1 comment
Last changed Aug 18, 2008 12:43 by Mart Toom
Labels: howto, rss

Hopefully following instructions are helpful, if someone wishes to subscribe to RSS feed from www.aqris.com.

  1. In top right corner open Space menu and select Advanced. On that page on the left is "RSS feeds" link - click on it.
  2. Click on "Feed Builder" link there.
  3. Select options which suite to Your needs most and press "Create RSS Feed" button
  4. Copy generated link to your RSS feed client (Thunderbird, …

Read more…

Posted at Aug 18, 2008 by Mart Toom | 0 comments
Last changed Aug 07, 2008 17:34 by Dea Oja
Labels: testing, agile

Found an interesting entry about writing testable code: http://googletesting.blogspot.com/2008/08/by-miko-hevery-so-you-decided-to.html
It mainly caught my eye due to the lunch time talk about code review organization in AMS team. Perhaps there are some useful tips for our reviewers as well? Or perhaps we find some more truths to add to the list?
In any case - speak up AMS team!

Second link was sent by Mart about testing in Agile world: http://www.agiletester. …

Read more…

Posted at Aug 07, 2008 by Dea Oja | 0 comments
Last changed Aug 06, 2008 09:12 by Ürgo Ringo
Labels: eclipse
Unknown macro: { return true; }
Posted at Aug 06, 2008 by Ürgo Ringo | 3 comments
Last changed Aug 04, 2008 13:29 by Ürgo Ringo
Labels: easymock, java5

In my old [post] I came up with idea that we could implement EasyMock extension that enabled to use EasyMock 2 API with Java 1.4. Now we have finally made it public and you can get it from here. We are using Apache License so there shouldn't be any licensing problems.

Although currently version is 0.8 this utility is fully functional and thoroughly unit tested. …

Read more…

Posted at Aug 04, 2008 by Ürgo Ringo | 0 comments
Last changed Jul 23, 2008 13:33 by Sven Filatov
Labels: eclipse, plugin

A tiny plug-in for Eclipse that enables tuning colors in console output: http://marian.musgit.com/projects_grepconsole.php. There is one sample configuration visible in http://marian.musgit.com/grepconsole/index.html, but I can also provide my own if anyone's interested.

Sample logging output:

Posted at Jul 23, 2008 by Sven Filatov | 0 comments
Labels: ams

Hey hey everyone,

Just wanted to tell you what can you do in the new AMS 2 interface

1) Easy enter activity interface (Hotkey for "Submit" button is Ctrl+Enter)
2) Editing is much more quicker, just drag or resize (you can drag only from activity title)
3) In profile page you can set if you want to see weekend or not ("Render weekends in the Calendar module")
4) You can set your calendar start hour ("Start hour in calendar"), …

Read more…

Posted at Jul 12, 2008 by Rene Katsev | 0 comments
Last changed Jul 31, 2008 09:37 by Auris Aume
Labels: ddd, domainmodel, domain, design, casestudy

Introduction

Following is a brief description of the lessons learned when rewriting one single player online game using DDD. Team who did this work was: Kirill, Jaanus, Erik and I. I think that this is the first implementation of Domain Model or DDD in Aqris.

Background

This application was a web based game consisting of Flash client and Java server. They communicated with each other using simple proprietary protocol built upon HTTP. …

Read more…

Posted at Jul 11, 2008 by Ürgo Ringo | 0 comments

Introduction

In this post I will analyze problems related to presentation and domain model mapping in GWT applications. I will use AMS2 as the basis of discussion but most issues are not specific to any particular application. …

Read more…

Posted at Jul 10, 2008 by Ürgo Ringo | 1 comment
Last changed Jul 07, 2008 12:03 by Ürgo Ringo
Labels: ajax, threading, javascript

The interesting thing about Ajax and JavaScript is that browsers run JavaScript in a single thread. Actually even same thread is often used for both JavaScript execution and UI event handling. So how is it possible to support asynchronous requests?

It turns out that when new asynchronous request is made UI thread spawns worker thread that handles sending the request to server in background. …

Read more…

Posted at Jul 07, 2008 by Ürgo Ringo | 0 comments
Labels: patterns

It might be worth of thinking about.. from "An Introduction to Lean Thinking for Software" http://www.infoq.com/articles/lean-thinking-software

Several interesting patterns that are commonly used to reduce those forms of waste:

  • Treat it positively: reduce the number of team members and beef up recruitment requirements
  • Change personal tasks to "team tasks": the whole team together takes on the work of design, test, and part of integration. The team is self-organized. …

Read more…

Posted at Jun 29, 2008 by Andrei Tkatšov | 0 comments
Last changed Jul 30, 2008 11:03 by Auris Aume
Labels: spring, mvc, hibernate, validation

Validating entities for unique constraints violations

Once again, apologies for the long title I think it's the last blog rant of mine before the joining the military, so I must make it worth your while. I'll try, …

Read more…

Posted at Jun 22, 2008 by Timur Strekalov | 2 comments
Last changed Jun 20, 2008 16:19 by Mart Toom
Labels: jmeter, webtest, testing

Just discovered from Marc Guillemot's blog that they have started work on joining Apache Jmeter and WebTest.
So it promises quite powerful tool also for web application load testing - functional testing from WebTest and load generating from Jmeter.
Though the news is already a month old, its still good
I'm really looking forward for that promising testing tool.

Posted at Jun 20, 2008 by Mart Toom | 0 comments
Labels: conference

It was great to arrive in pleasantly warm Prague as, when we left Tallinn, it was chucking it down like hell! We then arrived at the hotel around 18:30 only. Mostly because flight was delayed by 30 minutes and almost everyone had to pee after waiting for the luggage for 20 minutes . Some nasty scenes during hotel checking because some guys (reasonably) refused to leave their personal credit card swiped. Finally, …

Read more…

Posted at Jun 18, 2008 by Oliver Wihler | 0 comments

I must say I am surprised to see people using indirect conversion of integers to strings. Not only it looks bad to me, but simple tests show that it's inefficient.

In short: use Integer.toString(int), for God's sake!

Posted at May 29, 2008 by Timur Strekalov | 0 comments
Last changed May 29, 2008 15:11 by Timur Strekalov
Labels: gwt, ant, testing, linux, cruisecontrol

I really feel like sharing this with the world, because it has been an excruciating pain in the butt to get these to work.

Anyone having downloaded a GWT package for Linux might have noticed that it includes the Mozilla browser — it seems that GWT needs a browser to run its tests, and while on a Windows machine it can safely assume IE is installed, on Linux it cannot. Hence the browser in the package. As of GWT 1.4.61, …

Read more…

Posted at May 29, 2008 by Timur Strekalov | 0 comments
Last changed Jul 29, 2008 13:51 by Oliver Wihler
Labels: spring, mvc, binding

Okay, I finally got to write this — it's really been a while since I actually faced this problem, a couple of months or so. And it's also been a while since me posting any furious rant in the blog, so here you go .

WARNING 1: This column describes a probably uncommon pitfall when binding collection elements in Spring MVC 2.5, but a rather nasty one, so you are better off reading it, trust me.
WARNING 2: A whole bunch of code examples follows! …

Read more…

Posted at May 09, 2008 by Timur Strekalov | 3 comments
Labels: spring, springsource

let's watch this OSGi based platform.

posted in response of Timurs forwarded springsource.com newsletter 01.05.2008:

-----------------------------
SpringSource Application Platform
-----------------------------
Yesterday was a very big day for Spring and for the Java community. The attached press release describes the launch of the SpringSource Application Platform. The SpringSource Application Platform is a next-generation, …

Read more…

Posted at May 07, 2008 by Oliver Wihler | 0 comments
Last changed Jul 31, 2008 09:53 by Auris Aume
Labels: bigdecimal

So, BigDecimal type is widely used in one of our projects. Here are some interesting facts that I've faced while working with them:

1) According to javadoc, constructor that ussed a Number (new BigDecimal(42.52)) won't give you a predictable value of 42.52. Actual value will have about 30 digits.
"it cannot be represented exactly as a double or, for that matter, …

Read more…

Posted at Apr 21, 2008 by Aleksandr Zuikov | 5 comments
Last changed Jun 23, 2008 00:30 by Timur Strekalov
Labels: javascript, performance

Updated with test results for Firefox 3.0 — amazing job, guys

Okay, I guess string concatenation performance can always be a sort of pain-in-the-ass-issue, and even more so in JavaScript. So I made a couple of tests.

System configuration: Windows XP SP 3, Intel Core Duo 2.16 GHz, 2 GiB RAM (DDR2 667 MHz)

The code:


var start = new Date(). …

Read more…

Posted at Apr 13, 2008 by Timur Strekalov | 0 comments
Last changed Jul 31, 2008 09:47 by Auris Aume
Labels: domainmodel, ddd, design, orm

Sorry about the title

In a typical data management system significant amount of effort is spent on implementing mappings between three different models - presentation, domain and persistence model. In this article I will describe one approach to dealing with these transformations in case special ORM tool cannot be used.

Absence of sophisticated ORM layer does not only complicate conversions related to persistence but also adds complexity to UI related issues. …

Read more…

Posted at Apr 08, 2008 by Ürgo Ringo | 2 comments
Labels: svn, cruisecontrol, ant

For telling to CruiseControl which SVN repository to use, you have to use some more tricky way than just configuring CVS location into <bootstrapper/> element.

First make sure you have SVN command line client installed on your server. That will save you lot of trouble shooting time! If not, please install it before continuing with next steps.

Then get svnant and copy three .</bootstrapper> …

Read more…

Posted at Apr 02, 2008 by Mart Toom | 0 comments
Last changed Jul 31, 2008 09:57 by Auris Aume
Labels: cruisecontrol, luntbuild, svn

On request of one developer I made a little research about Continuous Integration (CI) tools available.

Luckily I found out that this job is already done by other people and I can do just copy and paste to our blog.

There is a good article in JavaWorld about open source CI tools.
And there is also a shorter summary about this article available here. …

Read more…

Posted at Apr 02, 2008 by Mart Toom | 0 comments
Labels: ajax, ide

Aptana Studio - AJAX development IDE (uses eclipse, available also as a plugin for eclipse)

http://www.aptana.com/studio/

Posted at Mar 20, 2008 by Andrei Tkatšov | 0 comments
Last changed Jul 31, 2008 10:21 by Auris Aume
Labels: jira, macro, plugin

This is a summary of my experiences writing a macro plugin for JIRA in case someone else will need this information in the future for other projects...

The plugin I wrote fetches the content of a Confluence page right into JIRA issue description (with accompanying picture attachments). This is a nice feature to keep all project documentation in Confluence, …

Read more…

Posted at Mar 11, 2008 by Aleksei Rovenski | 2 comments
Last changed Jul 31, 2008 10:26 by Auris Aume
Labels: easymock, wrapper

Version 1 RC1 is fully functional and thoroughly tested version but we may need to change some things once we got licensing figured out.
In any case license will be something well known and with minimal restrictions so shouldn't cause any problems with customers.

If you have any concerns/questions let me know.

Posted at Feb 27, 2008 by Ürgo Ringo | 0 comments
Last changed Mar 08, 2008 14:21 by Timur Strekalov
Labels: java5, dao, hibernate, orm

When writing Hibernate DAOs (for the AMS especially, as there are tons of them) there were two things that always bothered me:

  1. these four methods that I had to write every single time: find(Serializable id), findAll(), save(Object entity), delete(Serializable id)
  2. @SuppressWarnings("unchecked") annotations everywhere

A couple of days ago it hit me: why not try and make life easier for such cases? So here's what came out in the end. …

Read more…

Posted at Feb 27, 2008 by Timur Strekalov | 3 comments
Last changed Feb 26, 2008 15:48 by Ürgo Ringo
Labels: easymockwrapper, easymock, mit

In my old [post] I came up with idea that we could implement EasyMock extension that enabled to use EasyMock 2 API with Java 1.4. Aleksei has done good work on this project and first version will soon be ready.

We think it would be cool if we made this library publicly available. However following issues need to be solved for that:

  1. what to publish
    I think we should create one zip archive containing all artifacts like source, …

Read more…

Posted at Feb 26, 2008 by Ürgo Ringo | 0 comments
Last changed Feb 20, 2008 13:21 by Aleksei Rovenski
Labels: terminal

If you need an easy to set up console for Windows with tab support - consider Console2 (Open Source). The nicest thing about it is that you can select an actual console program that it will wrap about offering tabs, shortcuts, image or transparent backgrounds, etc on top of it. By default it uses cmd.exe, but if you have a cygwin (or mingw, etc.) installation, you can easily use bash, ash, etc. terminals. …

Read more…

Posted at Feb 20, 2008 by Aleksei Rovenski | 0 comments
Labels: testing

Test your web design in different browsers

There is free online service available at:
http://browsershots.org/
where you can test your sites presentation under different browsers.  Just submit the URL of your site and wait a bit -> you'll get the result as a set of screenshots soon.

There is another similar and simplier service available here:
[http://www.browsrcamp.com/|http://www.browsrcamp. …

Read more…

Posted at Feb 15, 2008 by Andrei Tkatšov | 2 comments
Last changed Feb 15, 2008 09:50 by Ürgo Ringo
Labels: easymock, testing

I have been long time wondering if it is possible to improve API of EasyMock Java 1.3 version so that you get rid of MockControls in your test code. So as an experiment I wrote following classes to check how much work does this require. I wanted to achieve same simple API as in EasyMock 2.x but still be Java 1.4 compatible. Also I didn't want to rewrite EasyMock or extend it in any fragile way. …

Read more…

Posted at Feb 15, 2008 by Ürgo Ringo | 4 comments

Juhuu.. so there is an electronic version IT year book for 2007:

http://www.riso.ee/et/node/355 http://www.riso.ee/et/pub/2007it/

Posted at Feb 14, 2008 by Dea Oja | 0 comments

I found that there is nice extension to JUnit called Unitils (http://www.unitils.org). It offers some generic utilities for unit testing, EasyMock mock object management, database testing (either plain JDBC or Hibernate). Also it's integrated with DBUnit and Spring.

General testing utilities

This feature set contains some things that are sometimes quite useful like reflection based equality (which we have more or less implemented ourselves in many projects I believe), …

Read more…

Posted at Feb 08, 2008 by Ürgo Ringo | 0 comments
Last changed Jul 29, 2008 16:25 by Oliver Wihler
Labels: refactorit

2008 January 28th, Aqris makes available the full functionality of RefactorIt with the 2.6 Freeware edition.

RefactorIt is a tool for Java developers. A developer can take source code of any size and complexity and rework it into well-designed code by means of over 30 automated refactorings. In addition, it provides a comprehensive set of smart query functions, a graphical dependency analyzer, and over 100 quality metrics, audits, and corrective actions, …

Read more…

Posted at Jan 29, 2008 by Oliver Wihler | 0 comments
Labels: agile, yagni

One widely knowns agile principle is Do the Simplest Thing That Works. Often this guideline transforms into "Do the Fastest Things that Works". I suppose that the logic behind this is that if something can be done fast then it must be simple, right? Problem is that given principle is as much about simplicity of reading the code than it is about writing it. …

Read more…

Posted at Jan 28, 2008 by Ürgo Ringo | 2 comments

http://www.ddj.com/architect/201202925?pgno=1

Especially good is the summary on last page.

Posted at Jan 22, 2008 by Ürgo Ringo | 3 comments

It seems to me that the complexity of any system (solution) that doesn't contain unnecessary redundancy is constant given the set of requirements is has to fulfill. It is only possible to redefine that complexity - to move it from one level to other but one cannot reduce it. So what are the possibilities to tackle with complexity? Basically we can either abstract or partition. …

Read more…

Posted at Jan 21, 2008 by Ürgo Ringo | 3 comments
Labels: meetings, etiquette

Here are some tips and guidelines that we all should try to follow to make everybody's life easier and save everybody's time and nerves Please understand that below are just some guidelines of how we can be more effective, how to get more out of the meetings and how to have short and constructive meetings. Would be great if we all acknowledge those tips.

Be prepared - prepare yourself for the meeting, …

Read more…

Posted at Jan 16, 2008 by Dea Oja | 0 comments
Last changed Jan 15, 2008 16:25 by Timur Strekalov

I've been talking to this guy for like a couple of minutes, then I'm sorta explaining the situation, talking for quite some time. All this time he seemed to be listening very carefully, staring at me with this "I hear you, mate" look and muttering only something in the lines of "Uh-uh, um, uh". As I'm finally through with my tirade, he goes:

— What do you mean?

I swear, at this point I'm very ready to smack the ever-living crap out of his childishly-innocent looking face. …

Read more…

Posted at Jan 15, 2008 by Timur Strekalov | 0 comments

Majandus- ja Kommunikatsiooniministeeriumi pressiteade

14.01.2008

Kutse konverentsile "E-riik - uued horisondid?"

Majandus- ja Kommunikatsiooniministeerium koostöös e-Riigi Akadeemia Sihtasutusega korraldab 22. jaanuaril algusega kl 9.30 Sokos Hotell Viru konverentsisaalis e-Eesti konverentsi 2008 üldnimetusega "E-riik - uued horisondid?". Tervituskõne ja lõppkokkuvõtte teeb majandus- ja kommunikatsiooniminister Juhan Parts.

Konverentsi peaesineja on Hamadoun Touré (Secretary General, …

Read more…

Posted at Jan 14, 2008 by Dea Oja | 2 comments
Labels: design

I recently listened to Interview with Jürgen Höller on SE-Radio (lead developer on Spring framework project). One interesting thing he mentioned was that they are following really strictly the rule that there must be no circular dependencies between packages. Of course it's quite obvious that such dependencies on any level are not good but still quite often this heuristic is broken especially on package level. …

Read more…

Posted at Jan 07, 2008 by Ürgo Ringo | 0 comments

This may be known to many, yet I faced this fact lately, so it seems to be a common problem anyway, so here goes.

Some may think that a JavaScript Date object works as fine as does the Java Calendar object. Beep, wrong, it does not. …

Read more…

Posted at Jan 04, 2008 by Timur Strekalov | 0 comments
Last changed Dec 10, 2007 10:09 by Ürgo Ringo
Labels: testing

Introduction

Everybody knows that one should write tests in order to guarantee good internal and external software quality. In most cases developers focus on structural tests leaving high level functional testing to separate testing expert. However I believe that in many cases it can be useful to include functional tests in the process of writing production code same way as structural tests. …

Read more…

Posted at Dec 10, 2007 by Ürgo Ringo | 2 comments
Last changed Jul 31, 2008 10:31 by Auris Aume

On the 4 of December I had an opportunity to be a part of a Mikko Hyppönen`s lecture at IT College. F-Secure's Mikko Hypponen has been selected as one of the 50 most important people on the Web (PC World March 2007, http://www.pcworld.com/printable/article/id,129301/printable.html).

In his lecture he covers next topics:

  • World map live (monitoring system)
  • Google Earth with F-Secure
  • 1986-2006 = 250 000 different viruses and trojans, …

Read more…

Posted at Dec 06, 2007 by Rene Katsev | 0 comments

It's a new peer 2 peer system that works like a file system (with groups and privacy). As for usability it seems like a mac application so I think I finally would even get my sister to upload pictures.

Below, the google tech talk on youtube - is a bit too long to watch at work but probably a nice after dinner perusal. It was quite inspirational when I watched it. Though, I must admit that I got a bit lost when he talked about replication with the many m's (I think of it as M&M's http://www. …

Read more…

Posted at Nov 27, 2007 by Oliver Wihler | 0 comments

I have created a small framework for testing JSPs and JavaScript directly from JUnit. The interesting part for me is that it does not need a deployment step: the framework itself compiles and runs JSPs, without a web server or browser. This allows us to test JSPs like regular source files: just write a test and run it. We use it on the Loan Component project in Hansapank. I just put the framework into Aqris CVS (module "aqris-common-jsptest"), …

Read more…

Posted at Nov 19, 2007 by Risto Alas | 4 comments
Last changed Jul 31, 2008 10:34 by Auris Aume
Labels: coverage, webtest, ams, testing

Thanks to Ürgo we found solution how to measure automated functional test (WebTest tests) coverage. For first tests we picked AMS tests and AMS. As coverage measuring tool we are using Cobertura.

And the process is quite simple:

  • first build application classes
  • then instrument them with Cobertura
  • then start tomcat with instrumented classes
  • then run all your tests. No matter if you use automated or manual testing
  • When tests finished, …

Read more…

Posted at Nov 16, 2007 by Mart Toom | 0 comments
Labels: webtest, selenium

I think many of testers have done this comparison when selecting testing tool for automated testing.
At least I have made through this process and what I most missed by Selenium was support for parameters/properties to write language/installation specific tests.

Marc Guillemot wrote also a good comparison in his blog: http://mguillem.wordpress.com/2007/10/29/webtest-vs-selenium-webtest-wins-13-5/

Posted at Oct 29, 2007 by Mart Toom | 2 comments
Last changed Oct 17, 2007 18:08 by Oliver Wihler

Hi!

We have more and more useful information in Confluence that you may need to share with our customers or partners who don't have a confluence login or don't want to go through the troubles of logging in. One easy way is to click on the PDF icon in the upper right corner of the page "Export Page as PDF" and send it by e-mail. However, it could be that the page contains partly confidential information or, for another reason, you think some parts should not be published. …

Read more…

Posted at Oct 17, 2007 by Oliver Wihler | 2 comments

...silly question huh? But it do not want to turn off automatically already about a month! When I click `turn off` it just restarts...so, I have to turn it out manually. Any ideas what could be a reason of that?

Posted at Oct 05, 2007 by alexg | 3 comments
Last changed Oct 04, 2007 09:33 by Risto Alas
Labels: testing, design, tdd

Test-Driven Development is not just a testing technique, it is also a design technique. In fact, many proponents claim that the design benefits of TDD are even bigger than its testing benefits. TDD (done well) can teach a lot about the design of the code being tested. Here is one such example about how TDD causes us to decouple our objects.

I have noticed this antipattern a few times in our project (written without TDD): domain methods take parameters that are database IDs, …

Read more…

Posted at Oct 04, 2007 by Risto Alas | 6 comments
Labels: javascript

Ever used JavaScript snippet similar to this?

var myArray = new Array();
myArray["January"] = "Some value";
myArray["February"] = "Some other value";
myArray["March"] = "Yet another value";
 
for (item in myArray) {
  // do something with item
  alert(item);
}

Well, there was one such usage in our project. It worked fine... until another application was upgraded that called our application and displayed our JSP page results within its own Web page. …

Read more…

Posted at Oct 02, 2007 by Sven Filatov | 0 comments
Last changed Jul 31, 2008 10:37 by Auris Aume
Labels: review

We have started to use a form of informal reviews in project team and so far it has given quite positive results.

The main purpose why we decided to try out this practice is because due to the nature of our project it wasn't possible for multiple people to work on closely related tasks. Hence the typical knowledge sharing related to team members having related everyday tasks wasn't very effective. …

Read more…

Posted at Oct 01, 2007 by Ürgo Ringo | 3 comments

http://www.paulgraham.com/articles.html Click on The 18 Mistakes...

Try to avoid those mistakes 

Posted at Sep 28, 2007 by Rene Katsev | 0 comments
Last changed Sep 27, 2007 08:27 by Svjatoslav Agejenko
Labels: linux

I discovered a nice system performance related tip I would like to share:

After system has been running for a long time and with a memory intensive applications
it becomes unresponsive for a while when new big application is started on top.
Even just opening up a large picture creates delay.

The reason in my case was because all RAM was already used up by running applications.
And when new big program starts or image opens, …

Read more…

Posted at Sep 27, 2007 by Svjatoslav Agejenko | 0 comments
Labels: deployment

http://www.javarebel.com/index.php

allegedly, there are no other comparable technologies around (according to E. Kabanov).

so, is this any good? it comes from the same guy(s) who do http://www.araneaframework.org/. They are about to launch it commercially as http://www.zeroturnaround.com/ (probably together with jspweaver.com?). When aranea came out about one year ago it was crappy (so I've been told). Are things till crappy or is Webmedia up to something great?

Posted at Sep 20, 2007 by Oliver Wihler | 3 comments
Labels: knowhow, saxon, xml

NOTE: original text entered by Anton accidentally as a regular page - I'm just transforming it to news post

If you have a Document which you want to transform with Saxon, then you usually do something like:


org.w3c.dom.Document doc;
java.xml.transform.Transform transform; // in our case Saxon

ByteArrayOutputStream output = new ByteArrayOutputStream(64000);
transformer.transform(new DOMSource(doc), …

Read more…

Posted at Sep 19, 2007 by Dea Oja | 1 comment
Labels: mocks, testing

I tend to write most of my "mock" objects by hand, without frameworks like EasyMock or JMock. Here are some reasons why I prefer that.

First, let's look at an example of this style. Say we need to test some code that performs a simple database lookup:


class CustomerService {
...

public Order createOrder(String customerCode) {
Customer customer = customerDao. …

Read more…

Posted at Sep 17, 2007 by Risto Alas | 9 comments
Labels: eclipse, plugin

This is really old news and you may know this already but nonetheless... I found a neat Eclipse plugin KeepResident that has significantly improved my Eclipse experience under Windows. You may want to give it a try as well.

There's just Windows version available. I guess there's no need for such a tool for Linux though as memory management is a lot different there. …

Read more…

Posted at Aug 31, 2007 by Sven Filatov | 0 comments
Last changed Aug 08, 2007 15:22 by Ürgo Ringo
Labels: design

The problem

How to solve situation when your Entity is getting too big and there are clearly certain subsets of attributes inside it.

Good heuristics suggest that class should not contain more than 6 attributes. However I have found that in practice it is usually not easy to follow this suggestion. …

Read more…

Posted at Aug 08, 2007 by Ürgo Ringo | 0 comments
Last changed Jun 13, 2007 17:56 by Timur Strekalov

Dear fellow developers, I suppose that the topic of my rant here is going to make you smile due to the fact that we all know Java code conventions and bla-bla-bla, but here it goes.

It is with great sadness that I always find messy code in our applications. Boy, does it frustrate me. Sifting through hundrends of lines of structurized, clear yet complex code is one thing, but making one's way through the jungle of code that resembles me some other languages' coding "styles" (no [names|http://en. …

Read more…

Posted at Jun 13, 2007 by Timur Strekalov | 7 comments

We have a nice question for the Monday morning, which we need a very fast answer to

Does anybody has any experience in testing xslt transformations with unit-tests?
Did you see any code-coverage tool for xslt similar to Clover for Java?

And another general one not related to just xslt:
How would you estimate the time needed to reach certain code-coverage level, e.g. 90%?

If you have any information or ideas on the topic, please contact me immediately!

Regards,


Anton Safonov

Posted at Jun 04, 2007 by Dea Oja | 2 comments
Labels: mock, testing

Sometimes you want to test not only each class in isolation but subset of one class in isolation. I suppose that in many cases this means that you actually have something wrong in your design and you should consider splitting responsibilities of given class or make the API more fine grained. However sometimes above options are not that good - for example in case of legacy code. …

Read more…

Posted at May 28, 2007 by Ürgo Ringo | 2 comments
Last changed May 17, 2007 11:39 by Dea Oja

Dea and Oliver went to FocusIT seminar on the 16th of May. The topic was related to different methodologies, models and standards that can be used in IT development and maintenance projects/organizations. …

Read more…

Posted at May 17, 2007 by Dea Oja | 2 comments
Last changed May 16, 2007 16:56 by hugo.lousa

An Aqris blog post was done in order to share experiences about unit testing. In order to generate what we understand as Unit Test, I will share a basic definition here and some points we should pay special attention while defining it.

From wikipedia (I personally dont like it for formal research, but as this is not our point at this moment, …

Read more…

Posted at May 16, 2007 by hugo.lousa | 3 comments

How to store boolean values to Oracle database table? Or perhaps a field that can have a few predefined values, like 'A', 'B', 'C', 'D'? A table in Oracle cannot have a data type BOOLEAN. So the first solution that comes to mind is using CHAR(1) data type, making it NOT NULL and limiting the allowed values with a CHECK constraint (remember that a CHECK constraint allows NULL values). Works almost always. Almost. …

Read more…

Posted at Mar 14, 2007 by Sven Filatov | 0 comments
Last changed Jul 31, 2008 10:49 by Auris Aume

Context:

Hibernate uses lazy initialization to load entities. E.g if some association is accessed after Hibernate session is closed we get LazyInitializationException. To solve this problem Hibernate team invented a pattern called Open Session In View. Spring offers OpenSessionInViewFilter that implement this pattern. This filter is used in many applications we have developed including AMS.

Read more…

Posted at Mar 01, 2007 by Ürgo Ringo | 10 comments

Input related to Unit Testing on different projects/experiences you have worked on is needed. I talked with some people here in the office and a pattern/common points of how usually our approach is done couldn't be found. Reasons for that are many:

  • it depends very much on type of code (core code, business logic code, JDBC code..)
  • requirements concerning to test are different on each project.
  • make effective unit test on legacy code is very difficult. …

Read more…

Posted at Feb 05, 2007 by hugo.lousa | 10 comments

There were many interesting things for me: http://www.todoorelse.com/gtd/index.html

Enjoy

Posted at Feb 05, 2007 by Dea Oja | 5 comments

It seems to me that widespread popularity of agile processes makes it easy to just blindly start following these principles often missing the key concepts behind the whole thing.

First of all being agile means that you are valuing people over processes. So if you are applying XP, Scrum or some Crystal methodology just because they are "good" you are not in a much better situation than if following some heavyweight waterfall approach. …

Read more…

Posted at Jan 29, 2007 by Ürgo Ringo | 7 comments

Problem

MVC Controller easily becomes too complex resembling more Transaction Script than plain adapter. Although if using Spring it is possible to make controllers less dependent on underlying HTTP requests/responses they will still be tied to one logical presentation view (property which is inherent to MVC).

Also it is not very easy to test Controller as its public API is based on HTTP. …

Read more…

Posted at Jan 08, 2007 by Ürgo Ringo | 0 comments

When you use iframes with https protocol under IE, if the iframe doesn't have proper src with a relative path, IE starts complaining all the time that there are secure and unsecure items on the same page.

The correct src for an empty iframe (which you gonna fill dynamically later) is src="javascript: false;".

src="about:blank" is not working, checked.

Posted at Dec 01, 2006 by anton | 3 comments

Has anyone ever used MIT license?

I need to use and modify a library that uses this license. I googled a bit (http://en.wikipedia.org/wiki/MIT_License, http://www.opensource.org/licenses/mit-license.php) and it seems that there are no problems if license file is contained in distributed package but still...

Thanks!

Posted at Nov 28, 2006 by Ürgo Ringo | 1 comment

Something that I stumbled on: http://ats.cs.ut.ee/courses/2005/tvt/Main/Essays

Lots of the topics sounded familiar for me
I'll be reading some of the essays here... maybe you will find something interesting as well

Posted at Nov 24, 2006 by Dea Oja | 3 comments

If you ever decide to format existing sources, then commit the changes separately, first the formatting with the message "format" and then the fix (if any) with appropriate message as usually.
It is a complete nightmare to try to track down one line change in the file which at the same time was completely reformatted.

Please, be nice and respect your neighbor developers.

Posted at Nov 13, 2006 by anton | 1 comment

little bit of reading, some notes were quite interesting to me... and some just proved the point of what we are already practicing: http://yahoo.businessweek.com/smallbiz/content/sep2006/sb20060927_259688.htm

Posted at Oct 12, 2006 by Dea Oja | 0 comments
Last changed Jul 31, 2008 11:09 by Auris Aume

Here's an interesting video about some cool syntax in the next C#:
http://channel9.msdn.com/Showpost.aspx?postid=236352

It gets interesting after the first 8 minutes or so, when they show a
demo in Visual Studio 2007. As a simple example, you can write SQL-like
queries on regular data:


int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, …

Read more…

Posted at Sep 20, 2006 by Risto Alas | 2 comments
Last changed Sep 20, 2006 09:47 by Ürgo Ringo

In bigger projects or projects where client relationships require more management it is good idea to have someone in the team who is able to play the role of a proxy between development team and client. It seems to me that this proxying is one of the main reasons to have organizational and technical parts of project management divided between two people. Of course organizational manager can have several other tasks as well. …

Read more…

Posted at Sep 20, 2006 by Ürgo Ringo | 1 comment

If you subclass AbstractDependencyInjectionSpringContextTests (or any of its subclasses) then you don't need to lookup beans under test using

applicationContext.getBean("myBeanUnderTest")

.
By default these Spring classes use autowire by type so all you need to do is to add setter for required type.
E. …

Read more…

Posted at Sep 06, 2006 by Ürgo Ringo | 0 comments

I know that test should drive the code not vice versa but sometimes you still have to write tests post factum. Here is a related anti-pattern I have noticed to be using quite often.

Lets say there is a service class that does nothing else but coordinates calls to different DAOs. How do you test it?

Here is the way I have done it many times. As I said you have the service class that is supposed to work. …

Read more…

Posted at Sep 05, 2006 by Ürgo Ringo | 0 comments

Has anyone developed an application using something else than transaction scripts or "service oriented" approach? If yes then it would be very interesting to know what alternative did you use and how did it work out. If you haven't ever used any other pattern then it would also be very interesting to know why. …

Read more…

Posted at Aug 22, 2006 by Ürgo Ringo | 18 comments

Oracle supports two rather similar data types: DATE and TIMESTAMP. Both can store date and time values; whereas TIMESTAMP can also store fractional part of the second. Usually they can be interchanged quite loosely, that is access a DATE column with getTimestamp() / setTimestamp(), since Oracle is able to implicitly convert from one data type to another. But there is a hidden gotcha: implicit data type conversion prevents the usage of indexes! …

Read more…

Posted at Aug 21, 2006 by Sven Filatov | 0 comments

When you have added some files/folders into SVN-ignore, for some reasons it is not possible to commit them. Probably, this is caused by bug inSubEclipse- SVN plugin for Eclipse.To commit, do the following trick: Execute a "Replace With Latest" (not an update) on your project.Close and Re-Open your project (to get rid of the .svn folder that shouldn't be displayed, but is)Now, use the Team > Add to svn:ignorecontext menu item on the bind folderFinally, …

Read more…

Posted at Aug 03, 2006 by sergei | 2 comments

I found interesting error in the code, which was very difficult to find out:

--------------------------------------------
return new HashCodeBuilder()
        .append(param1)
        .append(param2)
        .hashCode();
--------------------------------------------

This code is working incorrectly - it calculates different hash-code every time. This happening, because method ". …

Read more…

Posted at Jun 30, 2006 by sergei | 0 comments

We tried retrospective for Regio project. Each team member (who responded) sent his/her answers to following questions:

1) Project management
positive (things to keep)
negative (things to improve)
2) Requirements analysis/design
same as for 1
3) Implementation
...
4) Testing
...
5) Support/documentation
...

At first I thought of just writing summary document of all responses but then I decided to go with a bit different approach. …

Read more…

Posted at Jun 25, 2006 by Ürgo Ringo | 2 comments

What can be done to improve current development process? Should one try to find answers from organizations like SEI or ISO or from some good books ? I believe that both are important sources but the most critical element is something else - actual experience with actual projects and preferably with actual people. …

Read more…

Posted at May 25, 2006 by Ürgo Ringo | 3 comments
Last changed May 16, 2006 10:26 by ahti

Have you ever used following to lazy-initialize your variable?

class Foo {
  private Helper helper = null;
  public Helper getHelper() {
    if (helper == null)
      synchronized(this) {
        if (helper == null)
          helper = new Helper();
      }
    return helper;
    }
  // other functions and members...
  }

If you have then don't.

Just to remind or introduce, it looks OK but it isn't - this is a pretty serious bug you can very easily make. …

Read more…

Posted at May 16, 2006 by ahti | 0 comments
Last changed May 04, 2006 11:30 by ahti

About background: Model-Driven development is a method of development where domain/business objects are modelled as an UML class-diagram having various attributes set. Then this UML model is transformed into an intermediate model automatically and then using  various templatings these diagrams will be converted executable java files (domain objects, dao impls etc), jsp user-forms etc. …

Read more…

Posted at May 04, 2006 by ahti | 2 comments

Isn't it so that the more powerful the solution the easier it is to forget what the original problem was?

It seems to me that this applies also quite well to infrastructure frameworks. I mean their primary goal should be enabling people to focus on writing better business logic. However after having learned all the details of these frameworks it is very easy to start believing that this is all there is about design. …

Read more…

Posted at May 02, 2006 by Ürgo Ringo | 5 comments

It seems to me that one reason why not that many unit tests are written these days is due to wrong mental approach. Everyone knows that unit tests are good and that they are certainly very good in the long run but sometimes this is just not enough. What is needed is some immediate benefit.

For example if you have just spent last couple of days on writing some feature without single unit test then it is very difficult to fight the temptation to just deploy the whole thing and see what happens. …

Read more…

Posted at Apr 18, 2006 by Ürgo Ringo | 2 comments

Labels:

favourite favourite Delete
Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.