Skip to main content

Posts

Standup

Recently I was asked if it makes sense to do standups. Is it just a formal waste of time? Wouldn't it be more useful to spend the same amount of time by actual work? This is how our standup looks like, this is how the work would look like without it according to me and this is why I think it's worth doing standups: Standup optionally starts with a half-minute long announcement by the Scrum Master if somebody is missing and when will be this person available again. Without standup:  We could check out this information from a well-prepared shared calendar but unexpected lates or illnesses which are missing from the calendar would require a little bit more communication and irrelevant discussion during the day. It would cause some delay for sure. Then we look at the burn-down chart of the sprint and to the status of the latest nightly build. Is it stable, what about automated tests which were run last night? We make a common standpoint in one minute which is clear a
Recent posts

Architecture at CraftConf

At Craft Conf, there were some presentations about software architecture. I visited all of them and also searched for this subject in other talks. It was interesting to hear the same concepts from more places and to put together a picture how software architecture looks like in the mind of the presenters of today’s conferences. Stefan Tilkov: Architecture War Stories . It was indeed about weird stories from real life. I wrote down two things: If something is sophisticated, probable you shouldn’t do it. And having many architects is wrong. Many people liked this talk very much but I’m not really interested in real stories. I’m rather interested in the causes behind the stories to be able to avoid situations which head to weird architecture. Luckily for me, other talks were more abstract. The title of Rachel Laycock’s talk contained the very fashionable word combination “Continuous Delivery” beside “Architecture” so I anticipated it will be great, and it was. Rachel came with the same m

Craft Conf Workshop - Gojko Adzic

The day started with a mistake I’ve made. I didn’t check my mailbox accurately and missed the info that workshops aren’t held at the conference venue. I knew that there were some email but I thought it’s redundant and everything is on the homepage. It wasn’t. After all, I managed to track it down and get to the Prezi office in time when the workshop was held. The workshop was about   How to Make Big Impact with Software Products and Projects by Gojko Adzic . We had to form group which was very nice because most people didn’t know each other. We had to come up with an imaginary milestone plan for some kind of a software. It was interesting that the seven groups came up with quite different ideas and every group was able to defend his own viewpoint. One group defended the idea that they didn’t want to touch the legacy code of the system, other team came up with the idea to rewrite the legacy part. The conclusion was, that no ranking can be defined, it’s nearly impossible to judge, wh

Some useful Java libraries

Here is a video from Javazone, where some useful Java libraries are mentioned: 02:30 xbean-finder : Annotation finder in jars. 03:50 shrinkwrap: Can download artifacts from Maven repo. 05:50 zt-zip : zip file utils from Zeroturnaround. 07:25 Airline: command line parser helper. 10:30 really-executable-jars-maven-plugin: makes self-extracting jars. 12:00 jansi : colorized command line. 13:30 jmxutils : JMX beans by annotations. 15:00 Feign : HTTP helper / annotation lib. OkHttp is also mentioned. 17:20 Jerry / Lagarto : JQuery-style selectors in Java. 20:00 jchronic : converting English free-text to time. 21:40 assertj: fluent interface for asserts in unit tests. 23:10 vtte : very trivial template engine. 24:45 tape : a collection of queue-related classes for Android. 26:10 connector/mxj (GPL): mysql helper. 28:10 ness-pg-embedded: prostgresql helper. 29:10 slice: effective off-heap memory helper tool instead of ByteBuffers. 32:20 paranamer : named params in java fro

SAX Parser truncation problems

Have you ever met with strange problems regarding SAX parser when textual content seems to be truncated? When it seems that the parser transmits only a fragment of the content which is inside an XML element. Maybe not. Maybe yes but haven't noticed. Parser reads blocks of stream and it may call characters method more than one times. Well, it's written in the Javadoc and it's quite logical. If I have a very long text content, it couldn't had been processed in one go. It has to be split into parts. So, rather than assigning the content to a simple string, use concatenation instead and evaluate the content on endElement . By the way, the magical number is 2048. The parser implementation typically uses this block size. Unfortunately it's a kind of thing which easily creeps under the radar of tests. Nobody writes tests for long data. See also this on Stackoverflow.

NoClassDefFoundError

Recently I faced with NoClassDefFoundError s during unit testing despite all class files were in place. It was quite strange. Furthermore this error happened only on our CI (Linux) server, I couldn't reproduce it on desktop, neither on Windows nor on Linux. I started to investigate the stack traces and it seemed that the native open method of the FileInputStream was failed. After more investigation by JProfiler I found, that many classLoader.getResourceAsStream invocation happens in our code, but those streams are never closed. Meanwhile I found this nice writing about Tuning Linux applications which says: "Some Linux applications; for example, a JVM, might require a higher file descriptor limit. If an application can't open files because the file descriptor limit has been exceeded, you might get a NoClassDefFoundError error message." Then it says how to increase number of file handlers ( ulimit -n 2048 ), but let's rather close the resources guys. It

Installing Firefox Java plugin on Ubuntu Linux for Dummies

As a Windows user, I was amused how not easy to install Java on Ubuntu Linux (10.04) nor installing Java (1.6) plugin into Firefox (3.6). It's not nearly a download-next-next-finish task. Additionally, digging into forums I found a lot outdated solutions which I tried and soon realized that they doubtlessly aren't working. Here is the one which worked for me: First, open a terminal window: Applications menu -> Accessories -> Terminal. Type the followings (you will be promted for admin password, because sudo prefix means you want to do something in the name of the super (or sytem) user): sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner" sudo aptitude update sudo aptitude install sun-java6-jdk Then you have to select things with arrows and pressing enter. Then Timothy says in the forum you have to type this, but I didn't need it: sudo update-alternatives --config java Now you can check if java is installed by typing java -version .