This is a bit on my earlier experience so you know where I’m coming from when I lead teams or approach any project.
I have been writing software since 1989. The list of languages I have used includes the following (I’m sure I’ve forgot some):
- dBase III and derivatives (Clipper, FoxPro)
- Delphi and Pascal
- Java and a series of JVM languages
- C and C++, and ObjectiveC
- PHP
- Perl
- Ruby
- JavaScript (browser, NodeJS, and TypeScript)
- ReactJS
- Swift
Technologies I’ve worked on include:
- Docker
- All the web stuff (HTML, CSS, etc)
- XML (and its alphabet soup – xsl/soap/vxml)
- Java Client-side
- J2EE Stack
- Bash Shell
- Ruby on Rails
- Apple ecosystem
- Web Client Side
- A tiny bit of flash (mostly on the ActionScript)
I have a tendency of learning technologies very quickly, in part because so much of it is a reinvention of past technologies. Whenever someone tells you he/she invented something totally new, don’t believe it. It doesn’t mean what they did has no value, it just means it’s probably based on something else.
I’m a fan of retrocomputing and emulators. I am the proud owner of a few machines of yore in various states of repair and disrepair:
- Commodore 16
- Commodore Vic 20
- Commodore Plus/4 (fairly rare)
- Commodore 64 (2 of them)
- Commodore 128 and a 128DCR
- Apple IIe and IIc
- Commodore Amigas (several)
Every Hero Journey has an Origin Story
I heard about computers first through an “Encyclopedic Magazine” out of Spain called Mi Computer. I would buy those as soon as they came out, imagining what it would be like to program one of these machines, and make them do what I wished.
The first computer I saw on was an Apple IIe, at a store in a fancy southern Mexico City mall (it was running “Karateka”). Through “Mi Computer”, I had learned to program through magazines even before then. My small hands reached down my pockets and I produced a crumpled piece of paper with a small BASIC program, handwritten.
Then one day I was at a friends’ house and I was left to play around with a Timex Sinclair (2K). I wrote my first basic program (that I could save on tape instead of furtively typing at a store until I was kicked out) in it while everyone else was recording mixed music tapes (with one of those 80’s mixers). I remember I didn’t even have the magazine with me at the time, but I thought programming was so amazing – I somehow remembered everything related to code. From then I was hooked.
Later that year my dad bought a Commodore 64, which was the first machine of my own. For a long time I was a Commodore fan, and got an Amiga 500 a few years after. I never was an Apple or an IBM fan, even after my Dad got a MS-DOS based machine (which, experimenting in the first day he brought it home, I accidentally formatted the original DOS disk – oops!). For me, AmigaDOS was it. 🙂
It starts with one step. You learn by doing and by teaching others.
As that was happening I was an adolescent in need of a job. The country at the time was a bit lacking on people who could actually work these machines, and the spreadsheet was making its way into business. So my first night job after school was a little different than mowing lawns or waitressing at a restaurant. Instead, I taught Lotus 1-2-3 and dBase to local businessmen. As I taught, I learned a lot from businessmen’s concerns and the typical needs of a business.
In the meantime, I kept playing computer games and programming different small things. A year or two later a friend of mine told me his father had bought a PC and something called dBase III in order to keep tabs on the inventory for his furniture store. So I worked for a few months writing my firs business program. I guess you could call it Agile – I wrote a menu and a product entry screen and showed him how to use it as soon as it was barely usable. He typed in his data in the mornings and I would come in the afternoon, run a backup and start messing with the software based on his input (and on the list of other things we needed the system to do). He was pretty happy. I also kept teaching on Friday nights.
After that (around 1988), I got my first glimpse of what it was like to be in a ground level startup. A businessman who came to one of my classes told me of his intentions to set up a formal school for Associate Degrees in business information systems. Not even out of high school but knowing what business people would need, I helped him design a teaching curriculum and somehow he got it authorized. I also did some of the teaching since rules were not very enforced back then (I suspect on purpose, as it was a very new area).
Thing was, the guy could only afford one computer, so we used that one machine to teach everyone (and pooled together all of our home computers, many of which weren’t even PCs) until he had collected enough dues to get a real shipment of PCs in. We went through thick and thin, and when I left he was on his way to profitability and things were looking up. I believe he eventually franchised his system and there are a fair amount of those schools in cities throughout Mexico.
I like to think I did well teaching – at least my students seemed to understand. My passion however remained in coding, and at the time there was plenty of coding to be done using xBase-style languages. I wrote smaller Clipper programs for everything from construction materials companies to a children’s club membership roster.
Young man goes Pro
Eventually I started work in Mexico City at a financial holding company. Not too large of a company – there were only 3 IT guys (eventually we became five). This was my first experience with multiuser and locking issues, as well as Novell networking. It was also my first experience coding as part of a team. Soon after this company got an HP-UX system and 40 or so HP terminals with Wyse 60 emulation, and being the only kid who was geeky enough to want to learn I became the de-facto sysadmin. I cut my Unix teeth rewriting termcap entries to get Wordperfect‘s function keys to work properly.
With buying the Unix system came ADABAS, a database from Software AG, and Natural, their cobol-like language. So now I was for the first time a multilanguage coder. Natural (and shell) for Unix, Clipper 5 for DOS.
Online since before it was cool
For a while I thought this was the perfect job for me – I was extremely young but appreciated by the business, and I was one of a team of 3 helping a holding company “win big” in the stock market. Foxpro for Windows was coming out and I was able to add pictures to databases, which I applied by writing a system for a museum. And then I got a modem and started going into BBS systems and CompuServe. Fom then on I was hooked on communication.
The idea of being able to talk to people from all over the world, people who might have actually written Clipper itself was simply amazing. As I discovered that the guys on the Clipper forums were very much a meritocracy, and that I was appreciated due to my skill and age was not a boundary (on the Internet, nobody knows you’re a dog, or you’re only 19). So I spent my afternoons poring over message boards about Clipper (and just about every other topic) and joining the conversation.
Immigrants – We get the Job Done
After moving to the United States (coincidentally to the Bay Area, in what would be remembered locally as The Summer of Netscape), I worked for more financial companies and eventually got inevitably sucked in by the Dot Com revolution. My skills kept growing since, and I learned mostly through a paired approach of talking to regular users about their actual needs and getting deeper and deeper into the technology.
I wrote and architected software in Delphi and Java. Learned “Web-type” technologies like XUL (anyone remember that?), PHP, Perl and C#. C & C++. Perl and Python. And Ruby (on and off the Rails).
The companies are many, and can be seen on my LinkedIn page.
After Learning, Leading
I eventually became a consultant, and started leading teams. Learned to go with the grain of a technology, instead of against it. I became a generalist, and a ScrumMaster, which I learned from a course given by Ken Schwaber.
I did consulting and led software development teams for customers, mostly on eCommerce and the startup ecosystem.
I am very fortunate to have been exposed to a very wide range of technologies both on the server and the client. Thanks to this, I try to spend some quality time with the language/platform to get the feel of what is the “proper” thing to do when working with it. So when in ruby on rails, for example, I try to follow “The Ruby Way” instead of just writing Java code in Ruby. This means trolling around the newsgroups for the specific technology whenever I have some free time, and learning from what I see.
After Leading, Creating
In 2011, I cofounded Wurl, a company on a mission to make TV better for everyone, and a world leader in Streaming TV. This involved starting from scratch, with few resources, in what would be called “stealth” or “experimental”, or “pre-revenue” mode. Small. Bootstrapped. With the same direct spirit that my immigration story and pull-myself-by-the-bootstraps taught me. The kind of spirit that had me survive and thrive during economic uncertainty and during the difficult early years of an immigrant with no credit history.
As I built things, I could promise little, but a dream. I could promise no less than to transform the way people watched Television, forever. And I hired accordingly. People who didn’t want just to “work with me”, or “build a company with me”. I wanted people to help me build a new industry.
This industry is today called FAST (Free Ad Supported Television), or “Connected TV”.
And by writing software and helping others do the same, keeping a focused team and building an amazing engineering culture, and then letting go so others can take the lead, together we created a company that won award after award. Best Place to Work Certification. FAST innovation of the Year.
I am writing this (updating it, really) on the 12th anniversary of my starting that journey. And I am reminded of that joke about the Buckingham Palace’s lawn:
A Tourist arrives to Buckingham palace and sees a gardener watering. He asks “how do you get these lawns so perfect?” “Well”, the gardener says, “we just water it daily, cut the grass when it gets long and mulch it in the dry months”.
“It can’t possibly be that simple!” the tourist says, incredulous – “that’s the same thing I do at home”
“Yes”, the gardener says, “do that every day for 260 years and you’ll have a nice lawn too”.
Today, besides Wurl, I help entrepreneurs. Programmers. Technical people. Especially if they are immigrant. We can continue to build incredible things.
And that is what I’m about.