Monday, February 22, 2010

Cool concurrency feed and some links

Google Reader recommended a new feed to me today: Concurrency. I have to say, that was pretty smart of it. Sure, that word appears a lot in some of the feeds I frequent - it's still nice that it brought it to my attention, as I otherwise was missing out on it.

Right off the bat there is a sweet post: Concurrency in Maven. This then lead me to see there are other cool posts at In Code We Trust Inc, like this one on concurrent junit test execution.

Google Reader has made my day with this find, and I thought people might find the links interesting.

Sunday, February 14, 2010

UI Prototyping Tools

I have been a fan of paper prototyping for many years. Paper prototypes are easy to create,  easy to edit,  and easy to scan and distribute the same as if it was created with some software UI designer. They also put your mind in a different mode - writing with a pen or pencil and paper is a lot different than sitting in front of the computer using a mouse.

There's just one issue - my office doesn't have a scanner. Now, that shouldn't be too hard to remedy, but along with my list of benefits to paper prototyping, there are also a couple of drawbacks.

  • When there are many states to a given UI screen, it can result in a lot of repetitive drawing
  • It can take a long time to sketch detailed layouts of more complicated UI components
This has made me once again curious about UI prototyping tools. I probably last looked at the available options 4 years ago.

To start things off, a coworker discovered Balsamiq Mockups. This looks like a pretty fast and easy to use mockup tool. It's quite possible I could create mockups faster in Balamiq than by hand, and they have a sort of notebook-sketch quality to them - they don't try to look like a real UI, and I like that. It also has JIRA integration (as well as some other issue tracking systems like FogBugz and some wikis), which could be a big win for us if we adopt it.

I'm curious what else is out there. I've read a couple of questions about this on StackOverflow to get some ideas, and WireframeSketcher also looks promising (it's an Eclipse plugin).

Tuesday, December 22, 2009

Intel SSD Toolbox on WinXP x64

If you use an Intel x25-m (G2) on Windows XP, then you've probably been eagerly awaiting the Intel SSD Toolbox now that both the TRIM-capable firmware and new toolbox are released. I was too, so I downloaded it today.

I just installed it on a 64-bit XP box, only to see this screen when I tried to run it:



Having no idea what this means, I googled it. (which quickly pointed me to the readme, which is linked on the download page for the toolbox itself. Silly me, I should have read it first. The readme document used a very wild font, but it boils down to this:

Without a hotfix, the toolbox does not work correctly on Windows XP 64-bit. The hotfix you need is supplied on this page (also linked in the readme). The details don't look related to shadow copying, and you have to jump through a couple of hoops to get it.

After you 'View and request hotfix download', give Microsoft an email address, and submit a form...you will get an email with a link to the hotfix, and the password for the password-protected zip file it contains with a password that changes weekly! I have never before had to 'request' a hotfix file, let alone enter a password - I completed the process diligently though, as a secret agent might do, and now the Intel SSD Toolbox is working on my Windows XP x64 machine.

NOTE: The reason it's so much work to download the hotfix is probably because, as of this writing, the hotfix has not undergone full testing. Also, it is a very specific hotfix for Windows 2003/XP x64*.  It recommends staging (i.e. non-production upgrade first). You should backup your files and perform this on a non-critical machine first, or update at your own risk.

* windows XP x64 is based on Windows 2003, so it is distinct from 32-bit XP.

This post is for personal reference, as well as for the 10 seconds it might save someone else out there. It seems like kind of a strange edge case...

Monday, November 30, 2009

Summary on My Month of Writing

Writing (and clicking submit) every day for a month has been an interesting experience. It's been fun, exciting, frustrating, and time consuming. With this post I can say that I have met my goal to post every day for a month. I have a new appreciation for people who can write in serious quantity - because it's a lot of work. The quality of my posts so far has been so-so on my personal rating scale, but with a few notable good ones.

I noticed that past the half-way part, it became difficult to have enough complete content to write about. I had plenty of ideas, but many of them weren't really refined or complete enough to make a good post about without further effort. I can see how writer's block could really suck.

Of the topic ideas I listed in my October post, I covered most of them to varying degrees. There are some that I have not yet written about, though:
  • More on SSDs
Specifically, I want to showcase my build server results with SSDs. It really makes a difference for us, and I want to get some good numbers and real details.
  • Java 7 feature (my thoughts)
  • Test ownership
  • Notable programming books in the last 1-2 years
There are other things I wrote about, that I want to get into better detail on, such as:
  • More on build tools (Maven 3 and Gradle, specifically)
  • My Erlang experiences, as I learn it
  • Solving my Apache/HTTPS/TortoiseSVN authentication issues
  • What are some notable programming books in the last 1-2 years?
And some topics I hadn't really gotten into that I'd also like to write about.
  • Guice, and other dependency injection frameworks (I have not used Spring or Guice)
  • Taking Linux Mint for a spin (version 8 just came out)
  • Experimenting with Saros, the Eclipse Distributed Pair Programming plugin (I've yet to try it - but I am enthused!)
There are also some topics I'll keep a surprise, for when I'm better prepared :) I won't be rushing to post by midnight from here on in, so my focus will be on fewer (1-2 a week), far more detailed posts. It seems like at least a couple people have read some of these posts - I hope you'll continue reading and commenting.

Sunday, November 29, 2009

Goals for the week starting 11/30

Results from last week:
  • I finished reading 'The Tipping Point', and started my next book
  • I did poorly on the Erlang front - I only read a few pages and installed the Erlang package for Windows. I need to do better next week.
  • I did finish Java Puzzlers
  • I did NOT experiment with any more new build tools. I fail on this one. 
I did ok - but overally I need renewed effort on my more involved goals this coming week, as I didn't tackle anything meaty.

Goals for the week starting 11/30/09:
  • Continue reading 'Pragmatic Thinking & Learning'
  • Get through the first 2 chapters of 'Programming Erlang', and if possible, code a Project Euler problem solution in Erlang.
  • Practice my TDD more
  • Post on Monday, completing my 1 post a day for a month goal as part of NanoWrimo
After Monday, I will start aiming for 1-2 hearty posts a week, with gradual cleanup of my existing posts.

Saturday, November 28, 2009

Next in my reading list

The next book in my reading list is:

Pragmatic Thinking & Learning: Refactor Your Wetware, by Andy Hunt.

I started reading it early in the week, and it will be part of my nightly reading until I finish. I'm always interested in better ways to learn - and I saw Andy Hunt's talk on this prior to it becoming a book. I'm not sure why it took me so long to get around to it - but it's finally in my goals and I'm reading away :)


In the queue after this is:
- Peoplware
- Java Concurrency In Practice
- Filthy Rich Clients

What are people reading these days? It's been a few years since I've looked at a recommended reading list.

Friday, November 27, 2009

Programming Puzzlers, Reading, and Practice

I've had Java Puzzlers for a long time. I kept it on my desk at work, and sometimes during a full rebuild, I would read and try to figure out the next puzzler. I'd usually drag a coworker into it, too, which added to the fun. Slowly (quite slowly - over a year at least!) I've made my way through the book, and I'm down to the last 3 puzzlers - which I intend to finish tonight or over the weekend.

If you're not familiar with the book - most of the puzzles showcase a smallish snippit of code, with the question of 'what does it print' (or does it even compile). These puzzles are fun to think about, but most of them don't involve writing any code. (Some of them DO ask you how to write code that accomplishes some strange behavior, though - but only a few).

I'm looking for, or rather I suppose I'm writing about what I will do next. I have a couple of ideas - one being to finally march my way through Programming Pearls. The favorite book of one of my favorite professors in college. It provides ample coding exercises - many of which involve low level tricks.

Another idea that didn't occur to me until I started writing this entry is Project Euler. It's a great source of coding problems. I've done maybe a dozen previously, but as of this writing there are 265 of them. What's great is these are the type of problems that are useful to repeat again in different programming languages.

What's got me focusing on this is some recent posts I've read about Coda Katas. In particular I read this post on the Object Mentor blog tonight. There are a lot of links to other material there.

One further idea is to look up problems from the ACM's International Collegiate Programming Competition Problem Set Archive. There are countless good programming problems on that page.


There is definitely value in practicing what we do. This applies to any craft - but it seems to be sometimes neglected in ours. I think some kind of coding practice (in addition to testing practice) will be in my goals for next week. In particular to solve a new Project Euler problem or two, and to maybe do one from Programming Pearls as well.


What resources do you know of for good programming problems?