bad.robot

good robots do what they're told

Java Stack vs Deque

Java has long had a badly written implementation of a stack. The stack is a great example of single responsibility; it’s supposed to implement LIFO and only LIFO behaviour. Java ignores this principle with the default implementation of Stack. It extends Vector and so is implemented in terms of inheritance rather than aggregation. It’s both a Stack and a Vector. They haven’t made the situation any better when recently deprecating Stack in favour of Deque.

Sending Messages vs Method Invocation

In object-oriented languages, some people talk about sending messages whilst others talk about invoking methods. In this post, we’ll take a look at the conceptual difference in terminology and the more concrete, technical differences. Whilst we’re on the topic, we’ll look at the difference between a function and a method and discuss the difference between an object reference and a pointer.

Daily Standups Don’t Work

At some point, standups have stopped working for me. They’ve certainly moved away from the original intention to improve collaboration and communication. I’m not sure I can put my finger on why, but I’m just not getting much out of them any more. It’s led me to think that standups per se just don’t work. At least in most of the environments I’ve encountered. So I’ve been thinking about what could work in their place and I think its just to talk more.

Play it Next App

I’m often listening to something on my iPhone whilst thinking about what track to play next. It’s a shame the iPod app doesn’t let me queue up the next track without interrupting the one that’s playing.

I didn’t realise how much this bothered me until I found the workaround in the form of the awesome Play it Next app. Now I can queue up the next track and get all deejay without breaks in my music. It’s like iTunes Up Next feature only for your iPod. I like it so much, I just had to mention it here.

Find it on the app store. I definitely recommend it but don’t take my word for it, check out the AppCraver review.

FreeAgent, OAuth & HTTP (Part III)

In previous posts, we looked at setting up authentication with OAuth to access FreeAgent’s API. We’ve got something working but a couple of caveats remain when working with it from a rich client.

FreeAgent, OAuth & HTTP (Part I)

Although OAuth is intended for web, mobile and desktop applications, I’ve been finding the protocol clunky when accessing a web application from a rich desktop client. Specifically, I’m trying to access FreeAgent’s API. Their documentation is pretty thin on background. The support is fairly focused on web apps and I found it difficult getting a desktop client hooked up.

As a result, I’m journaling my experiences and hopefully learning a thing or two about OAuth along the way.

Mountain Lion Carnage

After installing Mountain Lion, I discovered Java was gone along with Subversion and Git. Even Python was partially crippled. I went through these steps to bring them back.

Getting Things Done, Part II

In the preceding post, I summarised some of the ideas from David Allen’s book Getting Things Done. In this second post, I talk more about trying to apply the basic ideas with more rigour and reflect on how it’s been going. I also draw parallels between Allen’s ideas and some of the principles that underpin modern agile software development.

I’d already been using Appigo’s Todo app to capture todos against various lists. After reading the first section of the book, one of the first things I did was to delete my custom lists and replace them with Allen’s standard set. I removed the spurious Home, Work, Other lists and replaced them with Inbox, Options, Reference, Someday / Maybe, Waiting (for someone) and Trash.