AkitaOnRails, Retrospective 1985-2007

August 12, 2007 · 💬 Join the Discussion

Some readers suggested I should do a “self-interview.” Talking about myself genuinely feels weird. But then again, false humility was never my strong suit. Instead of an interview, I decided to write a retrospective. It’s nowhere near a complete biography, of course, but it hits some key milestones from my last 22 years (before that I couldn’t even read properly :-)

It’ll probably be nostalgic for some, which is always good. And for younger readers, maybe it’ll show that a résumé isn’t built by collecting certificates alone. Experience depends on time — a lot of time. But quantity of time is not the same as quality. Everything depends on merging what you truly want with what you truly love. That’s not for everyone, it’s true. But if you have that instinct, you already know what I’m talking about. And the road is long and without end, so you can never say “I already know everything I need to.” You will never know everything you need. Learning is a daily process — hour by hour. A little during work and much more outside of work.

Those who know what they’re doing don’t pay attention to what others say or what others do. You simply do what you know (not what you “think”) is the right path. Right and wrong is a coin flip — you’ll generally be right about 50% of the time, just like everyone else. You determine what the “right path” is by analyzing the facts you know. If you learn something new: redo the analysis and revise your course. Dogmas are useless. Stay rational and disciplined, and improve your odds. Never close your own doors — be selective about what you choose to learn, but don’t rule out options based on unfounded prejudices.

Do what you love. It’s a cliché, I know, but it’s the only thing that works. My résumé didn’t start with my first job. I dedicated my whole life to this, for as long as I can remember. I never had a plan B. You don’t need to be like that, and it doesn’t mean I know more than anyone else. I know plenty of younger people who started later and already know far more than I do. I said to a friend recently: “we’re all moving targets.” The elegance of that concept is that if you have an idol, it’s because they represent something you’d like to become. You run in that direction. By the time you reach the level you wanted, your idol has probably run several thousand more miles ahead. And off you go again.

Again: there’s no recipe. There’s no step-by-step guide. Not everyone can be a painter, not everyone can be a fashion designer, not everyone can be a journalist. I’m definitely not a good cook, I’ll probably never be a decent carpenter, I certainly won’t become a musician. Nobody should choose an occupation based solely on what happens to pay best today. And tomorrow?

In 1985 I was inspired for the first time by a comic book. A special Disney edition called, if I recall correctly, The History of Computers (if anyone still has a copy, with the center pull-out, in good condition, I’m interested in buying it!). Guided by Gyro Gearloose and Professor Ludwig Von Drake, I was introduced for the first time to Charles Babbage, Blaise Pascal, Konrad Zuse and other names I’ve never forgotten. I’ve considered myself a “Computing Archaeologist” ever since. I’ve returned to the subject many times over the years through encyclopedias, books, and articles. I never get tired of studying the origins. My dream machine at the time was a Unitron (a Brazilian clone of the original Macintosh, just released).

In 1987 my cousin had an MSX Hotbit, and I wanted to play his games. I learned a bit of Basic to load the cassette games. My favorite reading was the magazine Micro Sistemas. Assembly was still out of reach for me. My dream machine was a CP-500 that an acquaintance owned. I tried to read an electronics book but it was too much for me. I was never good at electronics. I was still just starting to understand what “expanding RAM” meant. There were lots of cool microcomputers in that era. Today everyone admires the new phones in store windows. Back then I’d stand in front of display cases looking at Apple II clones, Gradiente’s MSX, the Sinclair, the TK-90X, the CP-400. Unfortunately they were too expensive for me to own. All I could do was imagine those machines while reading their technical specs.

In 1988 I took a GW-Basic course. I didn’t have a computer but I learned to program on paper. I also had my first exposure to gems of the era like Wordstar and Lotus 1-2-3. I think it was around this time that I started becoming addicted to video games. I already had an Intellivision, but I finally got a Master System!

In 1989 I got my first PC-XT. I learned dBase III and Clipper Summer 87. I had two uncles who had been programming since Autumn 86. That was when I wrote my first booklet. It wasn’t really original material — I was copying text from books and encyclopedias simply because I enjoyed practicing typing. Thanks to that, today I hit 400 keystrokes per minute, though I also have various strange hand pains :-) Before the XT, my hobby was copying book text on a trusty old Olivetti typewriter. With a computer keyboard, much lighter on the fingers, my hands were grateful. Since the previous year or so, my favorite reading had been the beloved Micro Sistemas magazine. At the time there weren’t many quality options.

In 1990 I did odd jobs with my uncle, who was a systems analyst. I built various small systems in Clipper 5.0 and Fox Pro. Good times at Ashton-Tate and Nantucket. I created my own text editor in Clipper, but it was no match for the trusty Norton Editor combined with Sidekick. At the time there were few language and technology options. You could spend months on a single language, and unfortunately I never got very interested in low-level languages like Assembly and C. I read some books but never practiced. A serious mistake.

In 1991 I started messing around with BBS with my neighbor. I got introduced to the power of Pascal, though still just from a distance. Good times of FidoNet, PCBoard, Remote Access, Warez, blue boxes and the like. Long before the Orkut and MSN era I was already spending hours on message boards. My dream at the time was getting Windows 3.1 to run on my XT with its green CGA monitor.

In 1993 I worked as a game presenter for Brasoft Games during summer break. This year was interesting because I got access to “MPC” machines — as multimedia PCs with CD-ROM drives and sound cards were called. These were optional extras and expensive at the time. I’ll never forget the LucasArts masterpieces like Day of the Tentacle. Nothing to do with programming, but those experiences were important for developing my aesthetic sense and my feel for possibilities. Masterworks of the era? Wolfenstein and Doom — the originals, of course.

Also in 1993 (or maybe 1992?) I was into drawing. I actually dabbled as an illustrator until around 1998, when I gave it up entirely. But that year I wanted to do illustrations for a games magazine (did I mention I was addicted to games?). When I went to pitch the editor, I brought my portfolio but he suggested I learn to illustrate on a computer. I only had freehand drawings. I went home and that same day bought a book on CorelDraw! 3.0. I still remember it was a massive volume published by Berkeley. A few weeks later I came back with a new portfolio, all done in CorelDraw!. I did illustrations for half a dozen of their issues, wrote one article, did some small contributions, then gave it up — it wasn’t my calling. But those notions of Bezier curves and vectorization would still prove useful when I decided to learn Flash.

In 1994 I took my only break from my hobbies and computers. Vestibular (university entrance exam) year. I studied at least 8 hours a day, 7 days a week. I set goals, made a plan, and got in. I never had a plan B. So I had no choice but to pass on the first try. USP and Unicamp at minimum — those were mandatory. The most important lesson of that year: set objectives, draw up a plan, stick to each step, adjust course along the way, but never stop.

In 1995 I entered USP. In the first semester I had to submit work in Turbo Pascal. I built my first framework — a graphics toolkit for Pascal — along with some fractal tricks. I finally understood the importance of the previous decades of computing. I became a fan of Donald Knuth and Niklaus Wirth. I got my first account and internet access, but with a catch: only via Unix terminal. I had to learn Unix to use the internet. Gopher, Lynx, Pine — good times. It was also an era when I confronted a major deficiency for the first time: my terrible English! When I saw that some of my classmates were fluent, I decided I couldn’t fall behind (hence the article Be Arrogant!). It was a pre-Google era: I used early versions of Yahoo!, WebCrawler, even Amazon (it was ugly back then). This was also the year I anticipated most: Windows 95. I read everything about it — every article I could find. I’ve never picked apart an operating system the way I did Windows 95; actually, going back to DOS 3.1 I explored every corner and every alley of each one. At the time I was also very excited about the brand-new OS/2 Warp. That was something like 20 floppy disks, if I recall correctly! Running Windows 3.1 virtualized inside OS/2 was incredible — the same feeling I got when I ran Windows XP virtualized on my Mac for the first time. All of those topics sparked my interest in systems architecture, operating system evolution, and so on.

In 1996 I did a side job on a small system for Windows 3.1 (I know, I know). I learned Delphi 1.0, released the year before. I was already a Turbo Pascal fan, so Object Pascal was a natural fit. It was my first step toward the buzz of the era: “Object-Oriented Programming.” That year UML was released, but before that I’d already been nosing around the original methodologies — Booch, Objectory, Fusion. I always found the topic a bit dry. I also started learning Java 1.0. I got interested after downloading the beta versions from Unicamp’s FTP. But AWT didn’t seem good enough, so I stuck with Delphi. Strange — back then Borland seemed so large. I built a few personal websites about my hobbies at the time. Yes, I was once a fanatical anime and manga enthusiast, and I made my first “successful” (in quotes) website on the subject — I was already causing controversy in my hobbies. At the time there was nothing in Portuguese on the topic. I translated manga, did anime subtitles. I’ve known Japanese since childhood and that helped. It’s not like translation is new for me :-) Naturally, building personal sites meant I dissected every possible trick of the era using just HTML, JavaScript, and of course lots of Photoshop. I also played around with Windows for Workgroups networks and OS/2 1.3.

In 1997 I started working with a multimedia production house. I evolved in Web Design, got to work with Macs (running the beloved System 8), and had to learn Director 5/Lingo and Flash 2/ActionScript. Developing interactive applications in Director on a Pentium 200MHz with 32MB of RAM wasn’t exactly comfortable, but it was fun. I lost count of how many times I slept on the office floor at night, waiting for files to be saved to Zip drives or burning CDs at 2×. By this point Linux was already quite famous. I made my first attempts at moving beyond my Unix setup with a RedHat 4.2 (I’ll never forget that little blue box with the red logo). A few years earlier I’d tried Slackware 1.0, but gave up after frustrating installation attempts and various incompatible hardware and driver issues.

In 1998 I had my first contact with server-side development — via Microsoft Index Server, SQL Server 6.5, and ASP. It wasn’t very exciting, but at least I learned a lot of SQL. Newsgroups were always my support system. The DejaNews site was a find — it was an indexed archive of Usenet. It’s called Google Groups now. Unfortunately my use of that kind of service seems to have dropped. Has the quality dropped too?

In 1999 I had to build sites in PHP and some Perl scripts for Apache. I learned Regular Expressions the hard way. I should have already known Regex, so I decided to learn it properly, and to this day it makes a big difference. I also had to level up on Linux and all the surrounding toolchain. Fortunately RedHat 7 of the era was already very good. I did various experiments with protocols and understood how important it was to understand them. I’m not sure how or why, but this was when I started becoming a regular Slashdot reader. It’s been my daily (religious) reading ever since.

In 2000 I had to build a site using Zope/Python. I always sensed that this system — the concepts of ZODB, Products, DTML — had the potential to grow significantly. It did grow, but not in the way I imagined. Today I think Plone is interesting, but I get the feeling it missed its market window. This was my first contact with Python, and also the first time I heard about the Ruby language — though I didn’t pay it much attention at the time.

In 2001 I had to build various sites and systems using ASP and other Microsoft technologies like VB and DCOM (you have to respect Don Box). Dealing with limitations is always an excellent path to growth. When you have plenty, you squander. When you have little, you learn to optimize. Generating DCOM components using VBScript was fun. I did a lot of “Ajax,” though at the time it wasn’t called that (MSXML and DHTML already existed). I also built lots of “Web Services,” but they didn’t have that name yet either (HTTP and XML already existed, of course). It’s impressive how half a decade later those same things come back with different names and everyone thinks they’re new. .NET looked very promising in Beta 1 — I recall building a framework for ASP with concepts drawn from ASP.NET. It might seem strange to jump from the Linux world the previous year back to Windows Server. I never understood why to like one thing you supposedly “have to” criticize the other. My function has always been exactly one thing: solve problems within the constraints I’m presented with, regardless of technology or platform. Full stop.

In 2002 I needed to integrate an ASP system with SAP R/3, so I had to learn ABAP. The book “Learn ABAP/4 in 24 Hours” actually took 48 hours. Having already known the concepts of DCOM and CORBA meant I understood what RFC was and how to deal with that kind of distributed environment. From here starts my “career” as a hired gun (also known as a ‘consultant’) — lots of work, little added value. My learning had its highs and lows in the following years, and my pace definitely dropped until 2006.

In 2003 I had to build systems on SAP Portal and Java, learning various things like Hibernate and Struts. I learned the structure of SAP’s Java server and how to dig deeper. Without access to source code, all I could do was decompile the classes and explore. I also had to get a mobile phone communicating with SAP systems. Off we went to hand-code the protocols. I’ll never forget the difference between Big Endian and Little Endian after that bit-scrubbing experience. Nor how annoying it is to deal with the iDEN protocol. I dealt with some cryptography topics and reinforced my understanding of security, encryption, authentication, and algorithms. You can never be too paranoid.

In 2004 I needed a versioning system, so I learned Subversion. I never had a great feeling about CVS. Subversion was still in Beta at the time, but I sensed it could become significant. Despite the various bugs, despite having to patch TortoiseSVN to work with Visual Studio .NET, I still knew SVN would be big. Fortunately I was right. I think this was the year I wrote the most Java: I hunted down every type of bug in the recently launched SAP Portal system, built a more productive framework on top of the poor one that shipped with the product, and did a lot of integration with R/3 systems.

In 2005 I needed to integrate telecommunications systems and learned some Tuxedo/C++. ESB, SOA, and other similar acronyms turned out to be vendor bullshit, as I always said. Communication and integration were never new. Changing the names to seem fresh doesn’t help much. EAI is one of the oldest things in this world. Since the second computer was created, integration already existed. At this time I was also poking around project management. Someone convinced me to get PMP certified. Waste of time. I got certified but never liked the methodology much. I spent some time studying CMMi and other methodologies, but lost interest very quickly. I already know I have no calling for a lot of talk.

In 2006 I had to deal with more telecommunications systems using Webmethods. More “SOA,” more “XML.” No problem. Why does everyone struggle to integrate hybrid systems? SAP people don’t know Webmethods. Webmethods people know little Java. Java people don’t know the other two. All just lack of motivation. Anyway. Meanwhile, Rails entered the picture. Off I went to write a book. It’s impressive how the thing exploded abroad while nobody here paid proper attention. It’s the old chicken-and-egg problem: programmers don’t want to learn because there’s no market, the market isn’t interested because there are no programmers. One side has to take the first step. Americans are experts at taking first steps; we, on the other hand, are doctors at waiting for time to pass. But I never cared what anyone else was doing. A month and a half of writing almost drove me crazy. Sleeping 4 hours a night is not normal. But the book came out, the blog is here, and more importantly: I learned a lot. Fortunately more people are getting interested in the subject. Maybe soon we’ll finally cross the tipping point between number of professionals and market interest.

Finally, in 2007 I was already fed up with my consulting firm and my clients. Having to turn a blind eye to idiotic things really isn’t in my nature. I left those who never truly supported me and decided to fly solo. If anyone ever hears the word “Balance”: run! I mean it! But good coincidences happen — after almost a year and a half talking about Rails, I finally got to start working with it full time. But here’s the thing: they didn’t hire me because of my last year with Rails, which was very little, but precisely because of the results of the last 22 years.

I hope this has sparked more curiosity in everyone. As you can see, the biographies of the people I’ve interviewed far surpass mine. I’ve met various people with much better stories — mine feels about average for now.

As I said before: I’m also a moving target. Tomorrow I’ll be writing the 2007, 2008, 2009 retrospective. I’m certain that next year I’ll know many things I don’t know today — and it won’t be by accident (because everyone learns something new if they’re not a vegetable). I’m talking about a conscious effort to learn new things.

I won’t stagnate in Ruby, however much I love it. It doesn’t matter whether it comes from the open source world, from Apple, from IBM, or from Microsoft. We have to watch everything! A cook with 10 years on the job who only knows how to make the same half-dozen dishes isn’t a master chef — just an automaton. Ten years or twenty years makes no difference. And automatons are easily replaced.