Skip to main content

Posts

How to get off your lazy arse and contribute to an open source project

I have a bug in my code. Only it isn't I who made it. It belongs to one of the numerous open source software components in my software. How do I fix that? I have only run into one other developer I know from the local community contributing to an open source project (not counting project devs/committers) on random occurence. Very few of open source software users contribute back to the projects. I think there is a huge amount of lurkers; people who observe the project but fail to contribute their own solutions back to the project when they encounter problems with the software (or lack of documentation). I wrote this post while trying to get a Struts2 bug fixed. I'll keep real-life descriptions in italic font like this. 1. Identify your bug You usually stumble on a bug when you're trying to use the component in some funny, modern, weird or alien way; integrating with another component, using rarely used/tested configuration, or simply using code from an unstable branch of ...

Is Eclipse really that bad?

[Update: Stupid Blogger wysiwyg editor completely screwed up the formatting in the rss-feed.] Patrick Lightbody asks whether my Eclipse can do that . I'll be the first one to admit that Eclipse can be a crappy, unstable, unpredictable gob of software (especially the 3.2 release). Still his list of advantages with using IDEA strikes me as quite unfair as Eclipse can do a lot of those things he mentions. Let's step through his points and counter what we can: Way smarter code complete Can go beyond the basic support provided by eclipse and can even narrow the completion down to only objects that are type-safe. That is: it won't show you a variable that, if selected, would result in a compile error. Eclipse can do that. Hmf, hide the options that are not type correct? Eclipse suggests the variables of the correct type first, it doesn't hide the other ones, and I wouldn't want it to. What if I want to pass by that compilation error in order to change the type of ...

Times are a changin'

Some of you might've noticed that I missed my regular sunday blog-post yesterday . The reason is obviously the same as everyone else's these days: I'm out of time. Yup, I just ran out of it. I like keeping up to date on a wide range of subjects. These roughly inolve: Java programming (EE, 1.5) Dynamic languages (ruby) Object oriented design Aspect oriented programming Building, testing Web programming Agile methodologies (Scrum, XP) Content management systems Portals Lots of other stuff going on in the blogosphere Most of these are essential to any developer, but still it is too much ground for me to cover. In order to be able doing my day job, as well as keeping on blogging and also having a personal life, I'm performing some drastic changes on my scope of attention. In concrete, I'm going to leave the CMS and Portal bits behind and focus on more "core"-like technologies. Don't get me wrong, I still have a huge interest in these two fields, but being ...

How I became a certified Scrum-master in two days...

I'll asume that most readers are somewhat familiar with Agile methodologies. Scrum is one of these, as is eXtreme Programming and Crystal. It is a framework that avoids taking too much control over how you do projects, but adding a few core ideas and rituals that could be of use to any kind organization. If you aren't familiar with Scrum or any other agile method, read up on it now . Here's enough to get you started : Scrum Alliance's intro Now, for us that have the privilege of working in a company that can see the long-term benefits of spending a decent fortune sending you off on a two-day course, we kickstarted our Scrum-ways by doing Jens Østergaard's course for becoming certified Scrum-masters (cool title, eh?). It is not an expensive course by itself, but it costs the company alot to take us all of our projects for a whole day (the course was friday and saturday). Before the course, I honestly figured I knew enough of Scrum to do fine without it, but it woul...

The Programming Designer

Most developers prefer to seperate design from functionality . This is a noble goal, but sometimes hard to implement. In my experience developing web applications, the most typical collision between design and functionality happens in JavaServer Pages, the most typical templating format of web front-ends in Java web applications. Most readers know JSP's, but for those who don't, think of it as Java's PHP, or the templates we use for producing HTML. However, a problem which is still at large in web applications today is that these templates are designed by Java developers, or pure programmers with little knowledge of web design and web standards. Or worse, programmers that believe they do know web stuff when they actually don't, or don't know how important the web front-end really is. The problem with programmers doing these JSP's is that that they are doing design, sometimes even when they don't have to. The classical example of this is putting layout of th...

dot com parties, search engines and newsfeeds

Yesterday I was at my first dot com party, I think. Search engine people (developers and optimalizers), marketing people, designers, concept developers, interaction experts and consultants, and free beer/wine for everyone. It was enjoyable to mingle around and talk to these people that thrive on the borders of my own industry (being software programming). But I also got a spooky feeling of déjà vu. Might be a sign of things to come. I do think we have a bubble burst ahead of us, maybe less then three years from now, maybe even this year. It depends on whether we, the industry as a whole, will be able to stabilize our growth in time. Enough doom's day speculation. Talking to all these bloggers I began thinking about my statistics and news-feed (those of you who are more observant noticed that I outsourced the feed to FeedBurner when I upgraded to the new Blogger . This was mainly for the purpose of quick and easy feed statistics. However, I've noticed a recent drop in hits/visi...

Digging deeper into CMS requirements (#5: The last one)

This is the fifth post about digging deeper into content management requirements. See also Requirement Overview Technical Requirements Management Requirements End-user Requirements Costs I know I was going to rant about agile development and Scrum soon, but what the heck; I'm inspired! Today I'm gonna finish off the CMS Requirements thread and describe THE most important requirement of all . And hopefully on sunday I will explain how all these requirements are interconnected by two key principles: Open Source Open Standards Now writing about the other requirements has been quite a booring affair. They have just been sort of basic explanations that can lead up to sunday's post. However , this requirement is no ordinairy rabbit! It's not measurable, you can't actually describe it, and it's darn hard to implement! It is a utopical state software, an *ility of the highest degree. 2 years of CMS research, coffee drinking, chocolate-chip cookie eating and hard think...

I'm gonna be the Wiki-techie! (oh no)

I was recently contacted by Atlassian's Wiki Evangelist (yes, appearantly that's a real title!), Stewart Mader. He asked me to consider their new site, Wikipatterns.com , and also forward the site to my dear readership. Done! In other but related news, I've been (somewhat unwillingly) appointed our next Confluence administrator. This means I'll be given full control over the wiki (muhuhaha) , meaning in effect I'll be able to try out new plug-ins, manage spaces, bully people around, etc. It also means I'll have to do upgrades, booring user adminstration, figure out funky stacktraces that are appearing in Confluence for some odd reason, fix the database, etc, etc. The main reason I have volunteered to do this job is that no-one else wanted to do it, and I believe our Wiki is far too critical to leave in the hands of our IT service provider like our CTO would've had it. When are you people gonna understand that Windows is not meant for hosting? Additionally, ...

Digging deeper into CMS requirements (#4: Costs)

This is the fourth post about digging deeper into content management requirements. See also Requirement Overview Technical Requirements Management Requirements End-user Requirements This is perhaps the most important factor for WCMS buyers. The total cost of an information system is easily displaced as buyers have a tendency to ignore the total lifecycle of the software. A CIO in a small company could explain that she spends zero on web content management since she does it all by herself, but the number of hours she spends updating the web content each week might amount to a significant expense relative to the size of the company. A WCMS has costs upon acquisition. The software is bought, and additional modules or plug-ins will likely add to the price. It must be tested, deployed and tweaked by developers to fit the company's environment. A web design must be applied to the templates. Users must be instructed on how to use the system. Older content must be imported. There are ...

Worthless Practices (IBM's list)

I just saw via InfoQ that IBM maintains a list of Java EE best practices. Now I've never really been good with bile, but there is just so many things wrong with this list on so many levels. Just listen to the title: "IBM WebSphere Developer Technical Journal: The top Java EE best practices". A bit of paradoxial, isn't it? Let's take a quick look through the list and comment on each point: 1. Always use MVC. Yeah, right. Always use MVC. Remember to design a rigid 3-tier architecture upfront no matter what sort of application you are going to build. Use Struts, right? Right. 2. Don't reinvent the wheel. Well, duh. Struts, right? Right. 3. Apply automated unit tests and test harnesses at every layer. I'd actually support this one if I could append "if possible". 4. Develop to the specifications, not the application server. Well that certainly was a good tooting from the wrong horn, coming from the deranged nit-wits that gave us WSAS and ...

Digging deeper into CMS requirements (#3: End-user Requirements)

This is the third post about digging deeper into content management requirements. See also Requirement Overview Technical Requirements Management Requirements Today I'm gonna run through two categories of requirements. They both have to do with how the CMS is portrayed towards the end-user, through translation and delivery. Globalization International companies need multilingual web-sites [Huang, 2001] with internationalization and localization features . Internationalization This is the concept of having country and language-specific content, essentially having the main content of the web-site translated to one or more languages [Iverson, 2002]. Translation of a WCMS can be divided into two parts. The most important one is how the content itself can be translated by the content managers. The other aspect is the language of the WCMS itself regarding internal interfaces for administration and management. Localization This refers to visual effects based on the visitor'...

Finally we're starting to get some real Web 2.0 stuff!

Can't belive I didn't notice Yahoo! Pipes earlier. That site/concept could pretty quickly turn into one of the biggest things in our Web 2.0 craze.. Here, I made one that joins my InfoQ feed and the TSS feed: My first pipe . But do I think it's really useful for anything? Nah, don't think so. I'll settle for my bloglines for the time being.
This tuesday I'm going to do a workshop on wiki for some people in management/business development department. We've been smart enough to choose Confluence for our internal wiki, and its use has been growing steadily ever since last summer, bout the same time as I joined the company. Over this time I've managed to earn the rep of a wiki-evangelist within the company. This is probably I've taken the time to learn the in's and out's of Confluence content formatting, making pretty layouts with columns and tables, galleries, RSS-feeds, and intranet blogging. Some people think I spend too much time fiddling around with it (see for instance the screenshot of my personal space page), but I think it's fun and interesting to try out. I'm not doing it to evangelize the whole company into going crazy on wiki-usage, I just use the wiki to cover my own butt mostly. If I didn't write things down in the wiki, I'd very quickly fall into the state of corporate ...

Mixing Iron and Clay: Implementing CMS and Portal as one product

For the last few weeks I've had the joy of working with a portal solution that also provides excellent CMS features. More often than not, portal meets CMS by being a Portal with some junky editor functionality inside , but there are also some CMS'es that feature bits'n'pieces of functionality like portlets, widgets and plugins. The portal I've been working seems to strike in the middle. It has the richest CMS interface I've come across in a portal product (content structure, versioning, editing all neatly packed into a comfy filthy fat applet client that actually works), and every bit of content is actually an instance of a portlet by its own right (how they've managed to keep the performance so high is quite impressive, and a mystery to me). This means that not only can I choose each piece of content from a large variety of portlet packages, but I can also transcend content between different states , which is a very handy portlet feature. However, there is...

So you want to get rid of Use Cases?

I'm going to do a lightning talk on this topic at tomorrow's XP-meetup , so if any of you devoted readers are attending you might get away with reading this blog-post. Spend the five minutes going downstairs for a pint, and bring me one while you're at it, please. I was once in a meeting participated by a team of developers, requirement managers, test managers and project managers. The topic of discussion were how requirement changes should be handled. The original requirements were described mostly in the form of use-case documents. The problem, and the reason for the meeting, was that the implementation was failing to follow the stuff specified in the use-cases. The round went around the table with each and every member pledging to read the use-cases more carefully, and the requirement manager promised to clearly highlight changes and references in the documents. When the turn came around to me I said something along the lines of: I have read the use-cases already. I...