Archive for the Category Ideas

 
 

Full-time work

Last week I started work at the Department of Immigration and Citizenship, working in the web applications group (ie. lots of PHP coding). I’m enjoying the work, but didn’t realise how little time I’d have in the evenings (especially with Aikido 3 nights a week). I’d love to be able to be paid based on my output, not on the number of hours I’ve spent at work, since that’d give me a “finish your work and you can go home early” incentive. Has anyone heard of that happening within the Australian Public Service? I doubt it, but it’s worth a shot :)

Simplicity

“I wouldn’t give a fig for the simplicity on this side of complexity; I would give my right arm for the simplicity on the far side of complexity.”
– Oliver Wendell Holmes

I think this quote highlights a very important point. It’s easy to say simplicity is great, and it’s easy to create something simple. But to make something simple and valuable first requires you to examine the breadth and depth of the subject in all its detail before you can identify the simple solution that covers all the bases that matter. If you’re making something simple, how much complexity did you deal with before you focused in on your simple solution?

Using quicksort in real life

Whenever I need to sort a list of items, I now find myself using quicksort. I most frequently use it when prioritising my goals. Quicksort provides a fast and methodical way to sort lists of things, and it’s normally used internally by computers, but that doesn’t stop you from using it yourself, manually. In case you haven’t encountered the algorithm before, I’ll walk through how to use it. All of this can be done in your favourite text editor or note taking tool.

0) Start with a list of items you want to sort. In this example, I’ll use a few of my goals for this week:

The SLCD site has easy-to-use instructions for adding content
I have a time booked for my first toastmasters speech
I’m getting the hang of cooking the curried udon noodle stir-fry
My LinkedIn resume is freshly updated with my recent changes
Some fresh updates for TTD are online

1) Select and highlight an element that you think should be approximately in the middle in the list. This is called the “pivot” element.

The SLCD site has easy-to-use instructions for adding content
I have a time booked for my first toastmasters speech
I’m getting the hang of cooking the curried udon noodle stir-fry
—– My LinkedIn resume is freshly updated with my recent changes
Some fresh updates for TTD are online

2) Compare every item on the list to the pivot element, and move them either above or below it.

The SLCD site has easy-to-use instructions for adding content
I have a time booked for my first toastmasters speech
Some fresh updates for TTD are online
—– My LinkedIn resume is freshly updated with my recent changes
I’m getting the hang of cooking the curried udon noodle stir-fry

3) Repeat the process from step 1 for the items above, and then the items below the pivot.

The SLCD site has easy-to-use instructions for adding content
Some fresh updates for TTD are online
— I have a time booked for my first toastmasters speech
—– My LinkedIn resume is freshly updated with my recent changes
I’m getting the hang of cooking the curried udon noodle stir-fry

4) When sorting larger lists, you’ll need to keep going, subdividing the list above and below the pivot, until all the items are sorted.

Try it out! It’s quick and easy once you’ve got the hang of it, and you’ll gain nerd bragging rights (if you choose to publicise your achievement)!

PrivateJournal

I use a LiveJournal account as a private journal, and so all my posts are private. As far as I’ve been able to tell so far, LiveJournal always defaults to public when posting a new entry.

After getting a bit annoyed, I realised GreaseMonkey would be the perfect tool to fix the UI for myself. So, I wrote a quick script to set the privacy selector to “Private” on the post page. And so, I present possibly the shortest GreaseMonkey script ever. Enjoy!

privatejournal.user.js

Even more rapid development with Django and jQuery

Compared to coming up with an idea, writing a web app is like trying to swim through treacle. After completing a week-long iteration on TickTickDone, it typically takes a day or two to unwind and mentally process the iteration’s work, then about an hour to come up with the tasks for the next week. Actually coding and testing those features takes the majority of the week’s 15 hours work.

The one-web-app-per-week idea is limited by how much functionality you can develop within the limited timeframe. I’d like to make my time spent coding as efficient as possible. So, I’m setting myself the challenge of creating a framework on top of Django and jQuery such that I can re-develop the current version of TickTickDone (iteration 8, made up of 8 weeks work) within one week.

At the moment, TTD’s code is not great in the DRY department. That problem exists in the javascript code and also in the python code, which is troubled by many very similar unit tests for very similar AJAX response functions. So as a solution, I plan to start by abstracting as many common patterns as I can. I’ll also try exploring the jQuery plugin library for pre-built components to help along the way, and see if I can form all of these into a cohesive library. Once I feel it’s ready, I’ll try using it to re-develop TickTickDone in a week.

An obvious alternative to this whole approach (and the one commonly used) is to hire more people to code for you. That’s not an option for me at the moment because I don’t have the money to hire more coders (a constraint), but it’s also not a great strategy due to the communication scaling problems in large teams.

Any thoughts? Has anyone done this (or tried to do this) before? Let me know in the comments.

Fun with robots

First off, read this: http://xkcd.com/413/.

Once you’ve got the robot going:

  1. Write a low-level controller with a python interface
  2. Display the currently running code on a web site
  3. Allow anyone to upload a patch through the web site
  4. Any patch that passes some basic tests (ie. the code still executes) is applied to the code
  5. Every hour, the new code is automatically uploaded to the bot

I’m sure I’ve heard that you can edit running lisp code, so that might be an option as well (although I can actually code in python, which is an advantage ;) ). I reckon you could have a lot of fun playing with evolutionary algorithms, trying to make some sense out of the webcam input and so on. Anyone feel like building one?

OpenGraffiti

Here’s an idea I had on while on the bus going past a graffiti-covered warehouse:

  1. Start by owning some wall-space in the city.
  2. Divide the wall into generous portions.
  3. Post a notice on the wall stating that anyone is permitted to paint a wall-space, as long as the previous piece has been up for at least a month.
  4. Enjoy the random, free creativity.

Inspiration from postering etiquette, greater union civic commissioned graffiti, graffiti culture in general.

Writing a web app in a week

What would it be like to write a small, but useful web app within a timespan of one week?

Way back when I thought of the name “NiftyKit”, I envisioned niftykit.com as an index page for many small web apps we developed. We didn’t really get around to developing that (unless you count ComicHub), and since then have worked on a number of larger projects, the latest being TickTickDone.

The idea reoccured to me the other day, and today I found Clay Shirky’s essay on Sitated Software, which fits the idea beautifully. The concept really appeals to me, I think because the potential for awesomeness is higher than generalised apps because it can be so much more specific and relevant. A great example is leech, a distributed app-sharing tool we built to work around tiny disk quotas at uni, which was lots of fun to develop and use.

I think trying to do it would produce some interesting results (adding a whole new meaning to rapid app development to start with :) ). I can see myself starting to think of ways to speed things up already (eg. setting up a really solid base project to work from each week). It’s certainly a way to use constraints to force innovation.

At the moment I can’t see any way to make a significant sum of money off of it, unless we started generalising the apps after the first version was built, but that would quite possibly defeat the purpose. If we made enough of them they might work as donationware, but maybe it’d be simpler just to do it as a hobby and call it good karma. I’ll see if I can come up with some ideas and try it out.

Getting started with blogging

Whenever I’ve tried to start a blog in the past, I’ve always had trouble, maybe becuase I also had trouble writing in english back in school. So, starting sometime soon (hopefully within the next few weeks), I’m going to do a 30 day trial, writing a post every day. Hopefully by the end of it I’ll be in the habit, and I’ll have plenty of content to bulk out the site. I’ll start collecting topics to write about now, so I don’t run out of ideas.

Here’s a start:

  • http://www.tune-out.com
  • Response to http://www.acidlabs.org/2008/05/02/cognitive-heatsinks/ and Clay’s ideas in general
  • jQuery
  • The NiftyKit story so far
  • Responses to Steve Pavlina articles
  • 30 day trials in general and my latest one in particular
  • Intention-manifestation
  • Write up private journal entries into public posts
  • … more to come