b-log – betriebsraum weblog

Software Development, Human-Computer Interaction, Projects…

Code Like You Mean It

March 9, 2011

Very good presentation by Dan North about »Deliberate Discovery: Code Like You Mean It«. »Ignorance is multivariate« and »We’re ignorant about our ignorance« – yes, based on past project experience, I guess I can confirm that! ;) He also mentions an interesting book called »A mind of its own: How Your Brain Distorts and Deceives«…

JavaScript Development vs. Flex Development (and why today, web development sucks…)

February 8, 2011

Blog post titles with »vs« in it are often quite controversial. Most of the time, eliminating bias in those posts is neither desired nor possible anyway. Same here. However, having worked on real-world projects both using Ruby on Rails/HTML/JavaScript and Flex/AS3, I think that I’m able to kind of compare these different ways of developing rich interactive applications. Note that this is not going to be a comparison of programming languages, i.e. JavaScript vs. ActionScript. While both languages are based on ECMAScript, the major difference is that the latest version of ActionScript is statically typed while JavaScript is a dynamically typed language. Both languages are equally well (or badly) suited for application development.

So, basically, from a developer’s point of view, it mostly comes down to what frameworks and UI toolkits are available because you certainly don’t want to do everything from scratch (which particularly applies to JavaScript because handling all the browser differences usually means a lot of additional work). Let’s start with JavaScript: What libraries are available? (more…)

Outstanding Book on Software Development

January 3, 2011

The average software developer reads less than one job-related book per year. This may be true or may not be true. I have no proof for this claim, I just heard or read it »somewhere«.
Making Software: What Really Works, and Why We Believe It does not have an answer either but sheds lights on many much more important issues in the software engineering domain. The book challenges »opinion- and superstition-based software engineering« by reporting results from numerous scientific studies carried out by large research institutes and experienced researchers. Should one trust every belief read on a blog or take every anecdote of a co-worker’s past project experience for granted? Do TDD and pair programming work? Does it pay off to design your application using modules and design patterns? What do we know about bugs?

Ruby Development on Windows

November 24, 2010

Several months ago, I set a Ruby development environment up on Windows but quickly realised that people were right saying that it doesn’t work well: I had lots of crashes, installation of some gems was tricky, and the Ruby version didn’t play well with the Rails version at that time. So I installed VirtualBox and configured everything within Ubuntu. While it did work in a way, it wasn’t a pleasant development experience at all. Installing virtual machines for testing purposes is fine but for longer working sessions I didn’t like it. First, even on a fast machine working in a virtual machine doesn’t feel as responsive and native as using a real OS. Secondly, things can get inconvenient when you want to use some tools on your OS and some on the guest system (networking modes etc.). Overall, it just makes matters much more complex than using a single system. Now, with Ruby 1.9.2 and Rails 3 I made another try and so far things have been working really well. If you plan to get started with Ruby dev on Windows, here are a few tips:

How to be a Programmer

November 10, 2010

»To be a good programmer is difficult and noble. The hardest part of making real a collective vision of a software project is dealing with one’s coworkers and customers.«

When a book about programming starts with this software development truth, it’s a good sign that it is worth reading. Robert L Read’s short book »How to be a Programmer. A Short, Comprehensive, and Personal Summary« (freely available as a PDF file or web version) was already published 2002 but the material presented is still highly relevant – recommended reading for everyone in programming.

Asynchronous Callback Functions in FlexUnit

July 20, 2010

FlexUnit provides support for asynchronous testing with the Async class. While this class works well for event driven tests, it doesn’t support callback functions like you might want it to. A typical event driven asynchronous test looks like this:

Excellent Book on Software Development

February 18, 2010

Just want to quickly point out an excellent reading for all software developers, architects, team leads or project managers: »Leading Lean Software Development: Results Are not the Point« by Mary and Tom Poppendieck. Although there is a chapter about technical excellence that covers architecture, TDD, evolutionary development etc., you won’t any code in it (a recommended reading with *lots* of code is Uncle Bob’s »Clean Code«). The book is full of practical (and extremly convincing) advice on implementing and leading successful software development in an organisation. Must read!

Faster parallel MXMLC compilation using Ant

February 9, 2010

Whenever you have a Flex project consisting of several modules, you can take advantage of compiling those modules in parallel – provided that they don’t depend on each other – using Ant and the Ant-Contrib tasks. In a project with five modules, I’ve seen a speed increase of about 30% compared to normal sequential compilation. I haven’t tested yet how this setup performs with more modules but I guess you could run into memory problems when compiling too many of them in parallel (you could still compile them in batches then). Below is part of an Ant script which does the job…here a few notes:

Better Tests with Test Data Builders

February 8, 2010

When developing applications, often you need to set up some dummy data to test things without using real backend services. One particularly useful technique is described by Freeman and Pryce in their book »Growing Object-Oriented Software, Guided by Tests«: Using the builder pattern to construct complex test data and improve code readability. Let’s say you need a bunch of dummy (fake/mock/stub – whatever you call them) user objects and you already have a user object with a nested address object (say):

Demystifying Kanban and Scrum

January 16, 2010

»Do not develop an attachment to any one weapon or any one school of fighting.« (Miyamoto Musashi) – this is directly cited from a very readable free pdf book by Henrik Kniberg & Mattias Skarin about two popular agile practices: Kanban and Scrum. Not only do the authors compare Kanban and Scrum to each other, they also make a strong case for thinking of them as tools – just basic tools that may help your organisation to accomplish tasks, rather than enforcing the dogma of one particular »school« that dictates how you should do your work. The more prescriptive rules of Scrum may not necessarily fit your team, so taking only few Scrum practices and leaning more towards the Kanban or event-driven approach might work much better in some situations. Generally, the Kanban way of doing things feels more natural to me. It always depends, though.