without an e

squeaking by [04/14/2009 07:23:58]

The past couple weeks have been one of the most stressful periods in my life. Sort of an out of the frying pan and into the fire situation as I finally recovered from the all-consuming client work period, where I had plenty of money and no time, to struggling to make ends meet in my business.

The economic problems in the world have not been kind to cornerhost. Lots of people are suddenly finding personal web hosting to be a luxury. Combine the general trend with poor support when I was swamped with client work, and escalating performance problems during the early part of the year (which persisted until I did a huge upgrade of all my servers), and things are looking pretty grim.

I missed two or three paychecks in a row there, and even wound up unable to afford my ADD meds for a couple weeks, which I basically spent in a complete fog.

But... I still have a roof over my head, and I still have a trick or two up my sleeve.

My hard drives are packed full of half-finished projects, many of which could easily be turned into commercial products if I could just finish them. Of course, many of those are web apps, and my decision to abandon my 10-year-labor-of-love web framework in favor of rails removed one of the major constraints on my performance, for the price of a learning curve that isn't even that steep after all.

Even now, though, back on Vyvanse and armed with a clear goal and deadline (for the bodyblog.com redesign), I'm struggling to stay on task and make the best use of my time.

I've been working steadily on The Flake Effect since November, to the point where I'm going to have to start looking for a system to manage and organize it all. I actually have a pretty clear idea of what an attention management software system would look like. It would combine sensors (such as checking email) with schedules, logical inference, metrics, planning algorithms, time constraints, chronobiology, and even a little NLP. Basically, it would create an immersive mental environment that turned productivity into an addicting video game.

I keep wanting to make the dang thing but it's too big and too complex to build, so I wind up building a little app here, a little script there. Plus there's the whole bootstrapping problem - my efforts to build a productivity tool are hampered by my poor productivity.

Time and time again, I find myself wishing that I could just leave my whole system running, and that I could tie pieces together more easily. Like, it's easy to make a daily checklist in a spreadhseet, but to hook that up to a timer requires all kinds of nasty cross-process communication. So I have a little bit that's in a web app, a little bit on the command line, another piece that's a custom GUI app, and none of the pieces ever talk to each other.

Things would be so much easier if I could run all these apps in a single process, modify them while they're running, and connect bits and pieces of them together on the fly.

The thing is, I don't have to sit around wishing for a development system like that, because it already exists. It's called Squeak.

I've resisted using squeak for basically the same two reasons I resisted rails: culture shock and the learning curve.

Squeak uses its own cartoony looking UI, has a completely alien concept of source code control (all the source code is inside the running squeak instance, rather than stored on separate files on disk), and is basically its own self-contained little world. Those are just a couple examples of culture shock.

By learning curve, I just mean that it's frustrating to have to look up every little concept, and then deal with the surprise when they don't have a word for what you want to say and you have to find a completely different way of expressing it. It really is like trying to express yourself a foreign language: you know exactly what you want to say, but you have to go word by word with the translating dictionary in hand, and even then you wind up with a jumbled patois of the grammar from the language you know and the vocabulary from the language you're trying to speak.

Prior to rails (and maybe drupal on the previous project), I always enjoyed reading about new and esoteric programming languages, and even tinkering with toy examples, but when it comes time to make a new application, I'm generally tempted to stick with what I know best.

Having pushed through the culture shock and learning curves a couple times, now, though, I'm starting to see the error of my ways.

In fact, it can be sort of fun. Yesterday, for example, I found myself reaching for a familiar python idiom, ran into some minor ruby culture shock, and wound up learning a different way to think about the issue, and a slightly better concept of object-oriented design.

I won't go into too much detail, but my goal was to map a symbol to a member of an object, so if you gave it a Person object and a variable field="name", it would return person.name. I python you say getattr(instance, field) but in ruby you say instance.method(field).call. There are like three or four huge conceptual differences highlighted in just those two lines of code, but in a sense it comes down to culture: in python, what's mine is yours, so you're free to take what you want, but in ruby you have to ask me nicely if I have what you want, then ask if you can borrow it, and then if I say yes, I give it to you in a little box and you have to take it out yourself.

Who knows? Maybe that reflects the difference between the Dutch approach to manners and the Japanese. :)

Squeak reflects more American ideas. It's a fast paced melting pot with a lot of innovative ideas, sometimes thrown together with duct tape. It gets the job done its own way and it doesn't care too much about appearances.

With most programming languages I feel a bit like a general organizing my troops and planning my attack. There's an overall strategy for where I'm going and many small tactical battles with the problem.

With squeak, even with the brief experience I've had with it, I feel more like a mad genius tinkering away on my latest invention in a workshop full of tools and gadgets. If I need a part, I can just cannibalize some other contraption, and if I need to hook two things together, then I've got all kinds of wires and duct tape to make that happen.

Or in other words, squeak jives well with my ADD.

Obviously, learning a new programming language or two isn't enough to turn my business around, but between rails and squeak, I really think I can remove some of the major constraints that were holding back the flow of ideas from my brain to the marketplace.

If my gamble pays off, then I can finally start delivering on my huge backlog of half-baked website and software ideas. Even if none of them make any money on their own, they might at least direct enough attention my way to get my little hosting business back on its feet.

So... Here goes nothing!

Post a comment:
name: (shows up on site)
url: (shows up on site)
mail: (for michal only)
no html allowed yet. sorry: