
Today, I discovered a button for Apple Mail that sends a reply to the sender that makes it look like the email bounced. This. Is. Awesome.

Today, I discovered a button for Apple Mail that sends a reply to the sender that makes it look like the email bounced. This. Is. Awesome.
I had some technical thing here I had written a few hundred words about, but I completely wasn’t into it. What does keep my attention long enough is faith. Not “Faith” as Religion, but small-f faith. About a year ago, I was in the process of finishing up my tenure as a research programmer at the University of Illinois. I was about to embark on a month-long European vacation with my girlfriend and her parents, and then immediately thereafter I was about to move away from my home for the past seven years (Champaign, IL), to move in with my girlfriend in Chicago.
While moving 150 miles to live with someone in a still unfamiliar part of a large city, I also was moving to working full time for SpiderOak. To recap, I decided it would be a Really Good Idea to:
It turns out that all of this has been the best decision I’ve made in a very long time. I’ve come to know and accept as “normal” the feeling that things are stable and working out, and the only uncertainty is just how great the future’s going to be. It was honestly shocking.
I suppose the key lesson is to not be afraid to take the leap. The time had seemed like it wasn’t bad, and I had a good gut instinct about the whole thing, so I decided to say “screw it” and I did it. There are much safer paths I could have taken, but I wouldn’t be here, and I wouldn’t be going to where I’m headed, and being in that state isn’t something I’d trade for all the security in the world. I went all in on this, and it’s paying off big. I decided I was going to take a running leap into the unknown, and figure out how to fly before I hit ground, and it’s worked out great.
Working at a startup’s been great. Working at one at my age has been wonderful- being part of growing something, starting with a company that had a murky future and moving to one with amazing potential to make bajillionaires of everyone. I like watching my bosses, seeing how they run the company, noting what they do that seems to work, noting what doesn’t, as someday I’d love to start my own business. Watching a pair of guys who’ve done it before and are applying their hard-learned lessons is a fascinating experience. It’s certainly shaped my worldview concerning the tech industry; things I used to wonder why anyone would do before are now traps I must carefully guard myself against, and things I used to take as Gospel Truth I sometimes take as rubbish. I haven’t had this kind of wide-ranging experience before I started working here, and now it’s been just amazing what I’ve learned since working here.
I know that 25 years from now my kids are going to read this and say “But Dad, you did things on a whim that might not have appeared to be the best idea! Why can’t I?” To which I will reply now:
Shut up and eat your vegetables, otherwise there will be starving kids in your room.
…Python’s optparse module is a dirty, dirty whore. Would it have been that much harder to make optparse.Values subclass dict?
I’ve been programming professionally now since 2007. The one thing that still causes me problems is starting fresh on something. Fred Brooks once wrote:
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds castles in the air, from air, creating by exertion of the imagination.
The biggest problem I’ve had has been getting started in building castles in the sky. I suppose part of it is lots of practice from day one, but it’s almost like a case of agoraphobia seeing the vast expanse of nothing in my editor. From there, there’s so much stuff to add. There’s a fair bit of not wanting to lay down the boilerplate code inherent in any programming. Otherwise, though, there’s the vague idea of where I’m wanting to end up, and a blank page doesn’t offer any assistance in helping with that first step.
I’ve been learning to take more advantage of the REPL, which has really been helping me get going. It makes it possible to just worry about little snippets of code and then tie them together instead of laying down hundreds of lines of FORTRAN and hope it all works out when it first meets the compiler.
While trying to still have a life away from this keyboard, I’m pushing myself to get back into recreational programming, where everything starts as a blank page.
In my professional life, I’ve had two software development jobs so far. One has been an academic programming job, and the other being a mobile developer for SpiderOak (check it out, I think we’re really cool, and so should you: https://spideroak.com). The circumstances of my hiring at both jobs have been rather similar: I really had no idea what I was doing when I was hired, and I had to figure out how to do my job as I went along.
Both of these jobs also had me essentially be a one-man team to take care of what I’m programming on; while figuring out what I’m supposed to be doing, I’m also supposed to take lead on whatever project it is that I’m working on. While working in the academic position, I certainly had a lot of work ahead of me in learning how to be that one-man team; I quickly started having questions that people around me had no answers to, and my too-often muppet flailing in figuring out how to figure things out like that was an endless source of frustration to both me and my boss. That said, the experience was invaluable training for my next job with SpiderOak, where the working condition was even more uncoupled- instead of working halfway by myself, I was essentially completely alone. Instead of an office, I had my home office, working remotely. Instead of people around me who also work for the platform and the language, it was just me and The Internet trying together to figure out how to make an iPhone application that people would want to use. I’m now developing the Android client for SpiderOak, which again finds me being the only guy working on the platform and language, and Android is a tricky system to develop for, with the steepest learning curve I’ve had to deal with yet.
It’s been a trying experience. I feel like I’ve been hitting my head on a glass ceiling in terms of my development as a programmer by not working as much on a team with people; for the past three years I’ve felt like I’ve been more working for people instead of with them. When I have problems or issues, it’s been tremendously difficult to solve them, as it’s hard to simply show someone the tricky code for tips if they don’t understand it. Come to think of it, this lone-wolf programming experience has been demoralizing- it feels like where you’re at a party and everyone’s in their conversation circles, and you can’t quite get into one and you’re just stuck on the outside. Code reviews in particular are a little sad; the best response I’ve gotten so far has been “I don’t really know the language but I like that you have unit tests.”
I’m spending next week in Kansas City with some of my co-workers, getting my hands dirty with the back-end storage code that runs SpiderOak. I’m tremendously looking forward to it, because for once I’ll be the junior developer on a team. I’ll be able to look up to people for help and guidance, and they’re paying attention because it’s part of their product as well; they know the language, they know the platform, and they know the system. On top of that, I’ll be able to see and be walked through how other people tackle things. I’m looking forward to this learning experience, and hope to be able to sit back down at my mobile development with fresh eyes.
What’s new in my life? WELL!
I’m moved to Chicago with my lovely girlfriend, Emelia. I’m working for a dot-com startup, . Life is good. More updates and rants as they come.
No, this post isn’t Star Trek related. It’s about SCIENCE!
I realize that the real world makes a lot of things difficult for those who collect data. Consider this, then, a gripe list of things I may or may not expect to get fixed.
Moving on, I work on computer models to better understand physical processes. These models are built and parameterized off of real world data of some way or another. This means I consume a lot of data in my job. However, how I as a modeler would like data is not often how I get the data. Here’s some of the bigger issues:
Most data I get tends to follow this: well-put-together NetCDF & HDF files, as well as anything produced by or with a GIS (such as GeoTIFF, Shapefiles, etc.), tend to be alright. I can work with this. However, if I have to figure things out, it slows me down. Sometimes a lot if I misinterpret it- if it looks reasonable to my eye but actually is not, this Can Cause Baddness. This is largely the case with Fortran binary files, but I get a lot of plain text that also shares these problems- I have an unclear idea of where or what is being represented. Examples:
I suppose the grand summary of this griping is that as a modeler, I have my hands full with a lot of things. Spending weeks trying to work with bad data is frustrating; human hands entered the data into a computer, so why can’t those same hands explain the data?
I have never, in my 20 year history of computing, ever come across a bit of software as remarkably terrible as ArcGIS. Ever.
That is all.
Welcome to the fun and glamorous side of computers!
- my Dad, whenever I was frustrated with progress bars as a child
ESRI, makers of ArcMap: Why, oh why, can’t you at least multi-thread ArcMap. Or make it 64-bit. Or *something*. I’m severely not a fan of ArcMap taking 5,000 years to complete a spatial join. Yes, I know I’m doing this on a 1.83 GHz Mac Mini. But it has two cores, and it’s 64-bit. And it runs MATLAB very nicely, thankyouverymuch, so it’s not impotent by any means.
I’m going to grow old and die before I have the 2000-2005 temperate forest cover change mapped into a 0.5° grid. Gaah.