Category: Waxing Philosophical

Thoughts of a web entrepreneur

Floating

I recently read a great essay by Tim Urban at WaitButWhy on beating procrastination. (I found it, as you may have recently, via this great reading list.) Among the illustrative images, one thing stood out to me, here:

The Dark Woods - Credit: waitbutwhy.com
The Dark Woods – Credit: waitbutwhy.com

This image is used to build an analogy for beating procrastination, in which one must forgo guilty leasure in the “Dark Playground” by entering the “Dark Woods”, a path representing work and accomplishment. If one can make it all the way through the dark woods and complete the task without being enticed back into the leisure of the dark playground, one reaches the “Happy Playground”, a place of well-earned, satisfying leisure.

However, there is an alternative: Flow. As Urban puts it,

You occasionally even end up super-engaged with what you’re working on and enter a state of Flow, where you’re so blissfully immersed in the task that you lose track of time.

Flow is a fantastic thing: hugely productive and fulfilling. Just as the Dark Woods are surrounded by the Dark Playground, meaning that one is constantly enticed by the ability to quit the task at hand and return to procrastination, the Flow path is surrounded by the Happy Playground; it is possible to break out of flow at any point and enjoy your accomplishments.

However, I found it telling that the end of the Flow path wasn’t pictured. I’ve found that just as the Dark Woods can escape from the Dark Playground, the Flow path can “escape” from the Happy Playground. At that point it no longer feels like an option to just quit and relax. You’re *accomplishing* things! Leisure time would just be a *waste*. The Flow path also continues to spread out, becoming less focused, less productive. Eventually, you end up at a point where you’re no longer in Flow, you’re just *Floating* (or “Flowting”, if you like).

I see Floating as the flip-side of the procrastination coin. When you procrastinate, you know you should be working, but your instincts betray you and cause you to seek out unfulfilling entertainment instead. When you’re Floating, you know you’re no longer being productive and you should take a break, but now your instincts are telling you that you can’t waste time; you have to keep pushing, keep working.

I wouldn’t be surprised if there’s a correlation between susceptibility to procrastination and Floating. One of the aggravating factors of the Floating state is the knowledge that a period of beneficial rest could ultimately lead to procrastination. Given their similarities, perhaps the remedies are similar as well. Perhaps the solution to Floating is structured recreation. I’m not sure. I do know it’s a real issue though. Perhaps now that I have something to call it, it will become easier to recognize and combat.

Code Compression

Was thinking recently about how any good code base tends to go through a continuous cycle of expansion and compression. (This thinking may have been inspired by the recent frantic development work on SearchTempest in the wake of craigslist blocking framing…) The ‘expansion’ part is the standard stuff. Building something new, adding features, even fixing bugs most of the time tends to involve writing more code, causing the code base to expand.

However, if you only expand and never compress, eventually you will inevitably end up with a giant pile of pasta.

It’s critical to occasionally go through your code and simplify. Trace through the logic and figure out how it can be improved. Look at places where procedural stuff could be made object-oriented. Even just strip out legacy crap that isn’t used anymore.

Of course, this can be difficult to justify. There are always higher priorities, and it’s tough to put a bunch of time into a project that, in the best case, has no immediate visible effect. (Especially if you happen to answer to a manager who hasn’t personally done much/any coding.) And that’s the best case. It’s ironic, but this process of cleaning up code can very well introduce new bugs. After all, it may involve making fairly significant structural changes to a code base that is by all appearances working just fine. (And those bugs tend to make people… irate. Don’t do something like this then go away for the weekend.)

So, why do we bother? Here’s a similar issue: why do we bother researching sources of renewable energy? It has always -so far- been cheaper to just stick with fossil fuels. That may well continue to be the case nearly until they run out, since the incremental cost of extracting a barrel of oil does not increase linearly with its scarcity. But if we wait until we run out of oil, or until we destroy our atmosphere burning coal, it’s too late.

Of course, the consequences of ugly code are rather less dramatic, but the analogy holds. If you wait long enough, eventually you will be forced to clean up your spaghetti code because you’ll get to the point where adding one more hack will break the camel’s back. You’ll have a feature to add, or a bug to fix, and it simply won’t be possible to shoehorn it into the existing morass. When that day comes, it is NOT a fun day to contemplate redesigning your whole code base. Especially if the bug you’re trying to fix happens to be a critical one.

On the other hand, when such a fateful day rolls around, a clean code base can be a truly beautiful thing. A little irony: the best thing about nice clean code is that it makes it really quick and easy to slap on an ugly hack. And when your site’s down and the hysterical emails are rolling in, that ugly hack that gets you running again can be a beautiful thing too.

Or more generally, by periodically cleaning up your code, you make your job a lot easier the rest of the time. Of course, you could try to just ‘do things right the first time’. But even without deadlines (which takes us into imaginary-land), it’s pretty difficult to always keep the entire big picture in mind while solving a specific problem. Of course you should still try to write nice, clean, extensible code whenever possible. Sometimes though, you still have to take a step back.

In the real world, the cleanup of a given module will likely be spurred by some other development, which is okay. For me at least, there’s no motivation to sit down for the express purpose of prettifying code. But when you’ve already dug into something a bit and you start to see avenues for improvement -and you’re not in an absolutely critical time crunch- go for it! (If you’re always in a critical time crunch, you’re doing it wrong. Or someone is.) It’s just like cleaning in real life actually. Ever go to pick up a dirty sock and end up doing all the laundry then cleaning the entire house? Do that with code! (If not, go vacuum something. I bet your partner/roommate/cat will appreciate it.)

Nice clean code is a beautiful thing, but it’s elusive; you can’t aim straight for it. What you can do is write fairly decent code, then occasionally compress it. Channel your inner Superman and squeeze that code coal into a precious diamond. (Ha! Tied those analogies together!)

If it ain’t broke, now’s a great time to fix it!

Why we’re lovin’ CARE International (and what we did about it)

On behalf of AutoTempest, our used car search engine, I recently decided to make a charitable donation. We had $10,000 to donate and just needed to find the right cause to put it towards.

As you know, here at Tempest, we’re kind of obsessed with quality. We’re on a mission to bring you the best search results, for Craigslist through SearchTempest, for used cars through AutoTempest, and for movie listings through MovieTempest. So when it came to choosing a charity, it was very important to me to take the time and effort to ensure that we chose a top-notch organization with a similar commitment to quality.

I started by doing some internet research, and I also read The Bottom Billion by Paul Collier while I was considering this stuff. (Great book by the way; I definitely recommend it.) From all that I came up with a list of questions to pose to various charities. In the end, I decided on CARE International. They’re doing some fantastic work in developing countries worldwide, and I particularly appreciate their focus on building skills for the long term, rather than providing ‘band-aid’ solutions.

If you’re interested in finding out more about CARE and the work that they’ve been doing for the past 65 years (the organization started by sending care packages to Europe post WWII) check out their websites: International; United States; Canada. If you’re looking for an excellent charity to support, you should definitely check them out.

And of course, if you’d like to help out AutoTempest, it’s as easy as spreading the word!

You can also read the official announcement about our donation here.

And finally if you’re interested, you can read the full set of questions I sent to CARE and their answers below!

Read More

Dynamic Bookmarks Idea

Have you ever discovered a cool webcomic, blog, youtube channel, etc., and wanted to read it from the beginning? Noticed that there isn’t really a good way to do that?

RSS feeds are great for keeping up to date with something, but (as far as I know), there’s no way to ‘go back to the beginning’, unless the site is specifically designed to allow it. Of course, you can just read a few then bookmark where you left off in your browser (or ‘favorite’ it if you’re using IE), but then every time you read a few more, you have to manually update the bookmark.

I was thinking, wouldn’t it be cool if there was a way – a Firefox extension maybe – to create dynamic bookmarks, which automatically updates to the last page you were on?

So you’d open up the bookmark, read a few comics, blog posts, etc., and it would automatically be updated to the last page you viewed before you moved on to another site or closed the browser tab. Next time you open that bookmark, you could just pick up where you left off.

If you know of something like this that already exists, please let me know about it in the comments! And if you have experience with browser extensions and would like to create it, I would be happy to promote it on the links page at SearchTempest.com!

Multimedia Awesomeness

I started hearing the term ‘multimedia’ back in the 90’s. Now I think we may actually have it! One thing that I’m really enjoying about the Dragon Age saga at Bioware is their efforts at multimedia in the literal sense. Not content to just make fantastic computer games, they have also published several books in the Dragon Age world. Really good books too. I read a fair bit of fantasy, and these stood as fine examples independently from the games. Furthermore, they are planning what appears to be a potentially awesome miniseries, coming out this summer. I can only hope this kind of thinking catches on. Think of how much more fully we can explore a story, or a character, or a world, using all these forms of media than when we limit ourselves to only one! Plus it touches on a dilemma I sometimes encounter. I will be engaged in a particular story – say an engrossing novel, – but for whatever reason not in the mood for that particular medium. Maybe I’m feeling like a more immersive experience such as television, or perhaps I’m in the mood to actually take part as in a game. This sort of cross-platform storytelling gives the reader/viewer/player the ability, to some extent, to choose the story and the manner of experiencing it independently. Of course, in the Dragon Age example, each component is simply set in the same fantastical world; they don’t actually seamlessly carry on the same story at the will of the reader. But eventually, why not? Video games already use cut-scenes to tell parts of the story. What if those elements were decoupled somewhat? For example, a game could have an attached miniseries. You could watch episodes of the miniseries whenever you wished, interspersed with sessions playing the game. And the game would be aware of where you were in the series, adjusting itself accordingly. (The player character in the game would either be unaware of the events not yet seen in the series, or perhaps those events would not have yet occurred in the chronology of the game.) I’m sure there are interesting and entertaining ways this could be worked out. It wouldn’t be easy, but the result would be a form of entertainment and storytelling unlike anything we have today. OR, imagine cross-linked eBooks and audiobooks. You can already start a book on your kindle, then pick it up where you left off on your laptop or your iPhone. What if you could then get in your car, and keep on ‘reading’ in spoken form? That’d be awesome! (Honestly, I really hope this is on the way.. I can’t count the times I’ve wished I could keep reading my book while driving or folding laundry or whatever.) Although they better give you a break on the combined cost of the two formats! Guys, I love living in a time when technology offers all these incredible opportunities. 😀

More on Inspiration

While I’m on the topic, here’s a great TED talk I saw today. Theoretically it’s about entrepreneurship, but it touches on all kinds of interesting concepts. If nothing else, skip to the last couple minutes and listen to his question at the end. But don’t do that, because the whole talk is great. 😉 If you’re not familiar with TED talks (or if you are and love them as much as I do), here are some more I’ve enjoyed: Dan Gilbert – Why are we happy? and Mistaken expectations Paul Collier on the “bottom billion” Benjamin Zander on music and passion And about a million more. Feel free to share your favorites in the comments!

My Secret Inspiration

Well, not secret anymore I guess. The about page talks about how I got into this Tempest business, but it doesn’t really cover why I decided to try my hand building a website in the first place. I don’t know if I should admit it, but the real catalyst was the Million Dollar Homepage. You may remember it from a few years ago. A college student in the UK had the brilliant idea of selling a million pixels for a dollar each (in 10×10 blocks). After some shrewd marketing it went viral, and a few months later he’s a million dollars richer. Clearly, I wasn’t the only one inspired by this. Soon after, there was a rash of ‘Ten Thousand Dollar Homepages’ and such. (After all, why pay $1 per pixel when you can pay 1¢? :)) Unsurprisingly, these didn’t do so well. But it got me thinking – you’re not going to get rich copying what’s already been done, but there are plenty of other cool ideas out there. The only difference with the million dollar homepage was that the guy who had the crazy idea actually followed through and did something about it. And hey, what’s the risk? Worst case I learn a bit about web design – there are worse ways to spend your time. So I did some brainstorming, and came up with a fantastic idea. It was something.. about.. showing ads at various times of day, and people would.. guess what ad was coming up.. or something. Fantastic idea. 🙂 Only thing was, it seemed a bit ambitious for a starter project. I figured I needed a little test project to get started. Not anything with real potential, just something nice and simple to do while I learned what I was doing. So I figured I’d just make a simple little site to help search multiple cities on craigslist. (You know, just until I learned the basics and could switch to working on something with real potential…) Mostly I just wanted something that would help with my air conditioner search. I may have had my priorities a bit backwards, but with a little luck, things turned out pretty well. The key is that I did something. So should you. You don’t need to start with a perfect idea; my first one was terrible. You don’t need to know how to start a business; you’ll learn as you go. You don’t need a lot of money; you can keep your job and get started part time. You just have to start something. In the words of Michael Masterson, “Ready, Fire, Aim!” Fortunately I also have a few other sources of inspiration that you might actually find inspirational. 🙂 Premier among those is Paul Graham. I’ll write more about him and others later, but for now, go check out one of his essays. Just pick a title that sounds good, and I promise you an enlightening read.

Setting your own hours is great, but not for the reasons you’d think

Now that I’ve moved from my old life to working on Tempest full time, I finally get to set my own hours. I always figured that would be great. No more dragging myself out of bed too early in the morning. No staring bleary-eyed at the clock, watching the second hand drag along until it’s finally 5:30. Work when I want. Sleep when I want. And do whatever I want the rest of the time! Great, right? And it IS. But not like I expected. Getting up when you’re rested is awesome, except that I’m someone who could sleep 10 hours a night if I let myself. And without a boss expecting you to show up at a reasonable hour, it’s surprisingly (or unsurprisingly) easy to do exactly that. Before, I had to get up for work. Now, I have to get up, because… I have some vague understanding that if I don’t, over time, I’ll feel bleh. It’s a bit harder to wrap your head around that when the alarm goes off in the morning. (Fortunately my wife rather likes me to be around during the daylight hours too, so that helps. 🙂 ) So the ‘worst’ part about setting my own hours is that I get to sleep in. The best part? I can work really long hours! That’s right. The best part is if it’s 1am and I’m getting some really great work done, I don’t have to quit because I’m expected to be ‘at work’ the next morning. Or when 5:30 rolls around, I don’t feel compelled to pack it in, since I’ll have to be back at the same time regardless. If things are going well, I can grab a bite then get back to it. When I’ve finally gotten the entirety of a complex problem shoehorned into my brain, or when I’m on a creative roll and the ideas are coming one after another, I don’t have to stop. And that is great. I honestly think there are days now where I do the equivalent of a week’s work in my old 9-5 jobs.
When I’ve finally gotten the entirety of a complex problem shoehorned into my brain, or when I’m on a creative roll and the ideas are coming one after another, I don’t have to stop. And that is great. I honestly think there are days now where I do the equivalent of a week’s work in my old 9-5 jobs.
Of course, you can’t do that forever. And the other benefit is that you don’t have to. I spend periods of days or even weeks working what feels like every waking minute, but follow them with periods of similar length where the extent of my work is replying to emails. I recharge, have fun, and then, start having ideas. Eventually, I can’t wait to get back to work and let that creative energy flow into making something cool. If you’re lucky enough to set your own hours and would like to try something that might boost your productivity and enjoyment of your work, Steve Pavlina suggests one way to get started. That schedule ironically ended up being too rigid for me, but it’s at least a good primer. Paul Graham’s essay on Good vs Bad Procrastination also has some great insights. In fact, while you’re there, check out some of his other stuff. It’s all fantastic. And if you’re an employer, think about the benefits of giving real flex hours to your employees. Not “show up any time between 8 and 9”. More like “as long as you’re here for scheduled meetings, come in most days, and get the work done, do whatever works for you.” Because really, is it more important to make certain everyone’s working exactly 8 hours a day, 40 hours a week, or would you rather have happy employees producing higher-quality results, faster? Obviously there are challenges to work around, but it’s worth it. I’ll write more about that side of things in a later post.