Mike Fogus

Mike Fogus

Software developer, author

Posted

Filed under:

Who are you, and what do you do?

My name is Mike Fogus, but people tend to drop the first name and call me Fogus. I don't know why. I write code and books and occasionally give talks. I live in the Washington DC area.

I'm an open source advocate and actively contribute to the Clojure, ClojureScript and Potion programming languages.

What hardware do you use?

My hardware needs are pretty Spartan, and recently have become more so. For a long time I had multiple home computers, a cell-phone and separate PDA, a work computer, a conference computer (the wonderful Dell Mini-9), a couple iPods and various portable drives. Carrying all of this around constituted a serious illness on my part. While I absolutely love my SwissGear laptop backpack, I thoroughly abused it for a long time by packing it with needless hardware (I'd hate to know what I've done to my back). Thankfully, it's an amazingly strong backpack and is as solid as when I first bought it. However, unless I'm traveling I keep my SwissGear in the closet because I've reduced my load to the bare minimum (for me). I recently bought a refurbished iPhone 4 for a song and have eliminated the need for my workhorse Zaurus SL-5500 PDA. Likewise, my wife got me an iPad with Retina display that has eliminated the need for a separate conference laptop and my iPods, and takes over the remaining PDA-like tasks that the iPhone doesn't already cover. I also have a Kindle DX, but have find myself using it less and less now that I have the iPad. When I'm working at home I like to move around a bit from my basement office, the to living room kotatsu to the back porch. I've been known to bounce a ball against the wall or pluck on a Ukulele while thinking about a problem.

My work "computer" is a lab of about 20 different computers - a mix of nondescript Dells and some bland flavor of rack machine - running various flavors of Linux. I work on distributed simulation applications, so I tend to pick one and launch all of the needed services and models from there. I constantly get a kick out of clicking a button on my machine and seeing a bank of computers across the room react.

My main computer is a fairly old MacBook Pro 17". I recently upgraded the internal drive from the annoying spinny platters to a sleek, super-fast SSD. I do all of my open sorcery and wordsmithing on my MBP. I like the built-in keyboard very much, but whenever I have the chance I plug in my IBM model M keyboard and type with it. I could stand to lose every other piece of hardware that I own before giving up my Model M. It is easily the most stable and sturdy piece of hardware that I have ever owned. In fact, I've had it for about 20 years and have spilled coffee on it probably six times. Thankfully, the way to fix this problem is to put the whole Model M (not the cable) into the dishwasher! Can you imagine doing that with a throw-away Dell keyboard or one of those barely-usable Apple wireless keyboards? Almost as old as my Model M is my Microsoft Intellimouse, the best mouse that I've ever owned. While I've never had to put it into the dishwasher, it's been dropped hundreds of times without causes serious damage. The plastic has turned that endearing "old-computer case" yellow.

My way of coding is to sit and think about a problem for a long time before writing any code. To facilitate this approach I like to do a couple of things. First, I write a lot of notes and draw a lot of pictures, so I need a nice notebook on hand to do so. My notebook of choice for a few years has been the National quad-ruled lab notebook. I like the 60-sheet version rather than the one with 96-sheets. When I'm at my desk I usually write in the National notebook using a simple Pilot G2 Pro pen with a modified Mont Blanc Rollerball ink cartridge. For when I'm on the go I like to carry around a pocket notebook like the Moleskine Cahier and a Zebra F-301 pen with the finest point that they sell. My second way of trying to work through hard problems is to walk... a lot... miles and miles. Thankfully, there are miles and miles of wooded walking paths near my home and office that I love to spend hours walking around exploring the woods while chewing on a hard problem.

My favorite walking shoes are a pair of Timberland Earthkeepers.

And what software?

When I'm at the computer I'm usually working inside of Emacs. Most of the artifacts of my work are electronic text files of some form or another, and Emacs is the best way that I've found for manipulating text of some sort. I store everything in the "cloud" between Dropbox for my digital notes and Git via Github. I like the idea of having everything that I'm currently working on (or could work on) available on almost anything system with an Internet drop.

For a long time I used Circus Ponies Notebook to keep notes transferred from notebooks (I like to digitize some of the notes I think I'll need to reference later). However, within the past six months I've moved completely to Emacs org-mode with org-mode-babel. I can't believe that I didn't switch earlier. I think the main reason is that on a glance org-mode seems incredibly complex, but in reality the stock text markup is not much more complicated than Markdown. The complexity is mostly in the export engines and the TODO lists. All of my writing, including books, blog posts, API documentation, user manuals, whatever is done with org-mode-babel. I've not moved to the TODO and scheduling systems yet, but maybe one day I'll take the dive. For those types of tasks I use a combination of Habit List for reoccurring tasks and Wunderlist 2 for typical TODO lists.

When I'm not in Emacs I'm usually in the Chrome browser. For the occasions when I need to work on a presentation, an Office-like document or send an email I use Google Apps. I've only recently discovered the power of Wolfram Alpha and am looking for a way to integrate it into my work-flow.

I read a lot of books, papers and other material from blog posts to dead articles on the Wayback Machine to obsolete computing manuals archived by the Software Preservation Group. I catalog my books using the beautiful Delicious Library and catalog my read and to-read papers using the lovely Papers application. I almost never read a blog post at the site of publication but instead use Instapaper to archive it and then occasionally download a .mobi file to read blog posts on my Kindle or iPad.

What would be your dream setup?

While I think I've gotten to a comfortable place with the number of devices that I own and use, I think I would like to reduce even more. My dream system would be a modular CPU slightly bigger than my iPhone with a display that I could use as a tablet while mobile and plug into a docking station when I'm at my desk (I can't lose the ability to use my Model M). Preferably my data would live on the cloud, but the CPU module should actively cache locally on some kind of high-capacity SSD (or better yet, some sort of crystalline memory like in the Superman movies – that would be boss). The module should be highly encrypted so that losing it, while costly in dollars, would not be much of a problem in the data sense. I should be able to buy another, plug it into my dock and retrieve my data via the cloud.

Ideally, the system, its hardware and its software would be open for modification, both in the open source sense and in the change-the-run-time-system-software sense. I've always dreamed of having a Lisp Machine, but could a) never afford one, and b) didn't have the space. My ideal setup would be something akin to the Lispm, a modern web-browser, a Commodore 64, a Dynabook and that fits in my pocket. Additionally, it would be wonderful if the modular device had a chording keyboard built right into its body so that I could take notes live on the device using a much more efficient method than tapping on a software keyboard. Finally, this system should have a removable stylus like in the old Palm PDAs that allows me to press on a button on the top to discreetly take notes via Morse Code. These notes should sync to the device every time that the stylus is docked and sync to the cloud seamlessly. Finally, it would be great if the stylus also contained a camera.