Skip to main content


Showing posts from 2009

Growing Your Craft: CodeRetreat

If you've never heard of CodeRetreat, you're not alone. I first learned of it a few months ago when Patrick Welsh organized one at our workplace.

CodeRetreat is the brainchild of Patrick and Corey Haines. Patrick is an Agile Developer/Coach, follower of strange dietary practices, and all-around great guy. Corey is the hippie* guru of software development in the Midwest, and a top-tier developer.
* I have no idea what Corey's political and religious beliefs are, if any. He just has long hair.

The event was hosted at LeanDog in Cleveland, in their office on a boat. I can't think of a cooler venue or a better bunch of people to learn with and from.

After meeting the team (and the dogs, who are anything but lean) we went out for drinks and discussion. Our host was Jeff "Cheezy" Morgan, who runs the company with a couple of partners who weren't present for the event, but are probably pretty cool as well. Everyone had something interesting to say, especial…

Slow and Steady: Undervolting your CPU

The following only applies to Windows machines. There may be something similar for Mac and Linux, but I didn't look into it.

Why: It makes the CPU last longer, extends battery life, and makes the laptop quieter (the fan runs a lot less).

Risks: None - just the time it takes to do it.

Why it works: A standard voltage range is applied to all chips of a given type that a manufacturer makes. Each chip may have a different tolerance where it is stable, but by setting the voltage high, all of the chips in a given run will remain stable. Your chip may only be able to handle the max voltage, or it may be like mine - the min voltage for all clock speeds.

I followed this guide's advice for a while (drop the voltage by 0.025 & test for 45 minutes), then read down a ways the following comment:
I just keep the CPU stress test running and drop the voltage at the maximum multiplier at about 1 step every 15 seconds starting at 1.10V (for Intel Core / Core Duo). This very quickly finds the v…

Detroit Tech: The 1DevDay Event

The 1DevDay event was organized by the Detroit Java User's Group, and held at ePrize in Pleasant Ridge, MI. The event was more like an expanded version of the monthly JUG meetings than something completely new. Since the monthly meetings are both valuable and interesting, this is not a criticism.

Here is a pared-down blow-by-blow of the events that I attended & what I took away from them, straight from what I hammered into OneNote at the time:

9:00 AM - Venkat Subramaniam's Keynote:
"Best practices" is often a fallacy.
75% of the features in most systems is used only occasionally. 45% is never used at all. A good argument for Agile?
Interesting - Venkat is also making the point that we should pay attention to how we contribute to revenue. (Same as "Passionate Programmer" & other books.) Not sure that I agree that this should be an area of focus - worth some thought to articulate.
Don't create a new EJB standard:
Innovate first
Find real multiple u…

First Impressions of Windows 7

My first impression of the OS is overwhelmingly positive. I have been using it for a full day (just installed it last night), and I haven't seen a glitch or a slowdown yet. After using Vista for a couple of years, it's a welcome change.

I used the machine all day for software development at work. This was something of a pain, since I did a clean install and had to add a lot of my tools back in. The upshot to this is that I installed a pile of software and found that it all worked without a lot of tweaking required.

A few of the things that stood out as positives:
The redesigned taskbar. I like the fact that it consists of both running and "favorite" applications. The window management it drives simply rocks (see the link for a more detailed review & comparison to the Mac Dock).Everything has been cleaned up in the interface. From the taskbar to the start button to control panel and all of the little utilities I have tried, everything is easy to grok and use.…

The Fog of Development: Recreate Dev Workstations Often?

We're looking at using Fog to rebuild our development workstations regularly. It's a clone server that can rebuild a complete machine image across the network. I saw it in action yesterday and I was impressed - it's relatively easy to use and really fast.

So why would a developer care about sticking a new image on his workstation? When I find myself rebuilding one every week or two! It's a major time-sink to get everything working right - local database, application server, portal server, IDE, environment variables & other settings files, etc, etc, etc. I probably burn between 1-3 days each month on the mundane task of getting a base configuration down, just so I (or another team member I'm helping out) can code again.

Opinions differ about how often this should be done, but I have no doubt that it has to be done regularly. We're an agile team, so we routinely install new tools for evaluation or to spike something. We constantly tweak machine configura…

Agile Purity: How Agile Is Agile Enough?

A Tale of Two Projects
I have been fortunate enough to work on two "green field" projects in a row. Both are/were "agile", but the way they're being managed is quite different.

The first project is/was characterized by:
The business folks knew at the outset what market they wanted to engage, but not exactly what they wanted the application to do. The direction was "figure it out as you go".Virtually no up-front documentation. Frequent changes to existing features.Considerable 1x1 time between the product owners and developers.We had no BA and one QA specialist was assigned shortly before production release.
The product, content and software development people all sat together in one big room.
The system is currently in production maintenance mode, with a possible version 2.0 in the future.
The second project is characterized by:
We are in "Sprint Zero" - doing technology and design spikes now.We have detailed specifications of many required fea…
I read "Shannon Paul's Very Official Blog" this afternoon & found an interesting statement about the interaction between developers and other business folks.

What caught my attention was: "developers and engineers see it as their role to identify products or solutions — it’s your job [as a social media / marketing / product owner] to define the problem or list requirements".

I think she's saying the developers she works with see it as their job to create the product/solution based on a problem statement. I don't think this is universally true of software types - many (most) that I have worked with see it as their job to implement someone else's vision of a product. In other words, we build the software, but we don't identify the market need or product as a rule.

Many of the more entrepreneurial types do indeed handle the whole ball of wax, from ideation to development to marketing. Most of my fellow coder-nauts see themselves as "softwa…

Rich UI: ZK instead of Flex?

One of the other teams here at the office spiked out the use of ZK and was kind enough to give me a demo. It looks like a wonderful tool for building a rich user interface, and I'm thinking that we'll probably use it on the new application we're building. (Sprint zero starts next week.)

I had begun advocating Flex as a way to build a "real" UI. It seems like a good fit for this organization, since SEO is much less of a concern for us than it would be for someone publishing open-web applications.

Flex does have some drawbacks, though. The main problem is that we don't have expertise in Flex's XML format or ActionScript in-house. There are a lot of very good developers here, but it still takes time to learn a new tool.

The advantage of ZK is that it provides a similar user experience, but lets us write all of our code directly in Java. The downside is that it generates JavaScript from the Java code, and I don't trust generated code very much. T…

Heads-Up and Eyes Open: Skills an Agile Developer Needs

The days of the "heads-down coder" who spent all of his time in a cubicle writing code from spec are numbered. Today, developers need a skill set that goes beyond cranking out code and includes such things as actually talking to other people. ("How can you tell someone is an extroverted programmer? He looks at your shoes when he talks to you!")

I like Agile software development. I think that it is the best way to produce working code that your customers actually want. The nuts-and-bolts of how to get this done are certainly up for debate, and there is no shortage of opinions on the subject. More to the point, I don't believe that there is such a thing as an "Agile" skillset, only skillsets that do (or do not) help you successfully create good software. This article is about the skills that I think are most essential to software professionals as we're nearing the end of the first decade of the 21st century.

Agile vs. Traditional Development - …

Confessions of a Lazy Programmer: Maven the Easy Way

I have been brushing up on a few different technologies lately, and all of the tutorials & books I have gone through rely on Maven for building a project skeleton. Since my focus hasn't been on Maven itself (instead it is Spring and Tapestry), I have been blindly following instructions from the command line. For very basic projects, this has worked fine.

Anything more complex, and I see things like this:
Since I wasn't trying to set up any database connectivity, this is thoroughly annoying. I was only trying to validate that I can build a skeleton project so I can move on to installing and configuring the Tapestry plug-ins for Eclipse.

Since I'm not interested in learning the guts of Maven yet, I did what any good (read: "lazy") programmer would do: I installed the Eclipse plugin for Maven and used Eclipse to create my project. Thanks to Borut BolĨina's great walkthrough, this only took a few minutes. (He has a complete series on creating apps with Tap…

User Groups: When Nerds of a Feather Flock Together

I left tonight's Detroit Java User Group meeting thinking again how amazingly useful the group is for programmers. No individual can be an expert in all new technologies. Listening to someone else summarize what they find good, bad or ugly about a particular framework or language really helps me decide:
What I want to dive into next, just because it's interesting.If there is an easier way to handle a common implementation, testing or deployment problem.What I might need to learn in order to stay current.

Today's talks were on a these open source tools (explanations are based on my understanding from the 15-minute talks - corrections & clarifications welcome):
FitNesse - a software testing tool framework. Unlike JUnit which focuses on very specific tests with hard-coded data, FitNesse is intended to handle soup-to-nuts acceptance testing. It uses a Wiki to both describe the tests and hold the test data. DarkStar - A Java-based multiplayer game server. It handles t…

Pandora: Music While You Code

If you're not already using Pandora, you really should check it out. It is a great way to listen to new music that still falls within your normal range of tastes. Just give it some songs or artists that you like as "seeds", and then give a thumbs up or down to songs as they play. You'll end up with a radio station that plays music you like all of the time. The most amazing part about it is that it's free. They have a few audio ads (I haven't heard one in a week or two) and the usual banner ads, which aren't at all intrusive if you keep the browser minimized.

My friend Dave recently posted about an Adobe Air client for Pandora radio, which I just downloaded today & is working fine. The only real advantage to it is that it minimizes to the system tray instead of to the taskbar in Windows. This is helpful if you use multiple virtual desktops (I use VirtualWin) and want to access it from any desktop.

My Pandora station is mostly Indie music. Check i…

Django on Google App Engine: How to Set Up Eclipse for Local Testing

The Django Helper Application
The Google App Engine supports Django, which is a great way to build a UI.  Getting it set up is a bit tricky if you're using a database, though, since Django has some different expectations about how you will interact with a DB.  Fortunately the good people at Google have provided a Django project to help with this.  Their instructions are on  this page.

This post doesn't tell you anything that you can't find elsewhere - I just pulled it from one of my OneNotes pages to share because it is a bit more concise, and it also has a couple of screen caps from Eclipse.
Local Django Configuration in Eclipse
To start your app:

Go to the directory where you want to create your app, and run "django-admin.pystartprojectmysite" where "mysite" is the name of your app.Navigate to the directory where "" lives for your app.Make sure that app-yaml has an app name in it (pretty much anything will work, I think).Fire up the loc…

How-to: Setting up Google App Engine for Simple Sites

I wanted to find a simple way to publish a custom website or two for low cost, and settled on Google App Engine as the best current solution. This post focuses on getting an Eclipse environment up and running to debug and publish your Python and other code to Google App Engine.

I initially planned to do the site in Flex, but changed my mind after looking at SEO problems with Flash applications. It does look like there are solutions for getting search engines to index Flash content, but I haven't put in the effort to really explore them yet. My sites are (for the moment) done in plain old HTML with CSS. The only twist is that the Python code strings together several fragments of HTML code to build each page. (I'll talk about that in a later post.)

The Basics
I won't repeat what Nick Berardi already said in his great how-to post. Please check that out for step-by-step instructions on getting your own domain, creating an app engine application, and uploading your content wi…

Stupid Firefox Tricks

I encountered what I think is a bug in the way Firefox handles Javascript. The fix to the problem was simply not to use any Javascript in the body of the page, and I'd be interested to see if anyone else has encountered this.

The Problem
I found what appears to be a thoroughly annoying bug on Firefox, and I'm wondering if anyone else has seen something similar. I suspect that it may have something to do with my configuration, otherwise I should have seen some other mention of it.

I was trying to embed a Feedburner blog summary in a new website, and this worked fine in IE. If you've never tried it, it involves sticking a chunk of Javascript in the middle of your page. Here is a sample (replace all instances of "[...]" with "<...>"):

[html][body] other html...
[script src=""]

The script tag returns:

document.write('[div class="feedburnerFeedBlock&quo…