Note: many of the screenshots of websites I had done in the past are from the Internet Archive and many of the images are missing. But it can give an idea on the projects I had worked on. One day I’ll try and track down the original files and update the screenshots.
Today some memories came from when I first started with web development. So before I forget anymore of the details, I thought I would share my unique way I became a web developer. I never went to school to learn Computer Science or Information Systems. I’ve had a total of 2 programming classes, which were my in sophomore and junior years of High School, one of which we lovingly nicknamed Warcraft 101, because we would spend the entire time getting out butts kicked in Warcraft 2 by my classmate Daren (We all got A’s, we had just finished the entire coursework in 2 and a half weeks).
The reason I share this is perhaps others who hope to become a web developer can learn some of the valuable lessons I picked up along the way. That, and that my close programming friends and colleagues can get a kick out of my humble roots.
How I ended up in Technology to begin with is probably because part of it is in my blood. My Father, Kevin Carmony, has been the owner of several technology businesses. So I was exposed frequently to computers and other technologies my whole life. I remember some time when I was about five or six, in the late 1980s, playing against my younger brother on a multiplayer ASCII LAN game at the old Streamlined Information Systems office. It was wandering around a 2D maze hunting these 8-bit monsters, and each other, and it was amazing fun.
I also had access to a lot of expensive software that were hand-me-downs. One of them I remember is Photoshop 3 and 4, spending hours trying to design websites with it. To give you an idea how old that is, the current version is CS5 (aka version 12). The first program I really used to make a website was (and get ready to gasp) Microsoft FrontPage in 1997. There were also a couple of website books laying around that I would read, or at least try to.
On the other side of the equation was my mother, while herself wasn’t extremely technical, encouraged and “sponsored” my learning when I was young. By sponsoring I mean she many times bought computers, digital piano keyboards, DSL (we were some of the very first people to have “high” speed internet in our town), and paid for many other expenses. I remember a several hundred dollar long distance bill because I would call the “Provo” dial-up connection instead of the broken “Ogden” phone number. I even once ordered a “temporary” AOL dial-up account, with her credit card and without permission, because our ISP was down, and I needed to check my website. I forgot to cancel it afterward, and it racked up a few months of fees before my mother realized what had happened. She never yelled or mad over these “expenses”, that I realize now as an adult, were not cheap. She just told me in the future what to do to avoid causing them again.
She was also very patient with a son whose grades weren’t the best, and who would rather work on a website than do his homework. I know if she would have came down hard on me, my GPA would probably be higher (its wasn’t bad, just not great), but I wouldn’t have learned what I did, nor make the connections that eventually fast tracked my career. I owe her a great deal (I love you mom!)
I first learned about websites, and how I could make them, while sitting in my 7th Grade Band Class. My fellow clarinet player Kenny Cottrell explained to me in between songs about HTML, Notepad, and how I could learn to make my own website. So I set off to learn HTML. In my excitement, I found an online book on HTML, and printed the entire 400 page book on my mother’s home printer. Single page, of course, because I couldn’t figure out how to easily do double page, and it was on her expensive laser printer (this was 1997) with expensive cartridges.
My very first website was hosted on one of my father’s web servers, and using FrontPage, I made a website about a game called The Realm, one of the very first graphical Massive Multiplayer Online games (MMO, think World of Warcraft). It was bad, really bad. I can’t find any pictures or old files from it, but you can take my word for it. When spending weekends at my Grandma’s house with my Dad, I would spend hours designing and writing websites, or at least try to. They were all bad, but I learned a lot by trying over and over again. I would design a site, look a a professional site, and try to see why mine stunk while the professional ones were so much nicer. I remember looking at Amazon‘s rounded corner tabs for hours trying to get mine to look just as nice.
I then got my first domain, RPGLegacy.com, in 1998 and started a website with game reviews and walkthroughs for PlayStation RPG games. I remember writing reviews and information for games like Final Fantasy VII, Suikoden I & II, and even more obscure (and terrible) titles like The Granstream Saga. I started to get perhaps 100 visitors a month, and I thought that was great. I even got emails from people asking me for help. One subject in particular was in Breath of Fire 3 dozens had emailed me about getting stuck in a castle. I myself had gotten stuck in the same place for hours, and posted an in-depth solution for finding Honey the Robot in the castle. For being a 15 year old kid in junior high, it was a lot of fun, and I learned a lot. I had moved to Dreamweaver for making the website, and the designs weren’t half bad. However, I don’t have a screenshot of how the old site used to look.
I was 16 and I in high school. My classmate Daren (the same who whooped me at Warcraft 2) introduced me to a game called Counter-Strike. It was a First Person Shooter, and it was a lot of fun. However, at the same time, there were a lot of these “cheats” and “hacks” programs that were coming out. My friends and I would be accused of “cheating” and “hacking” when in reality we weren’t. Also, some of the claims on how we were cheating were rather absurd. So I started to investigate the truth and fiction behind these programs. I learned a lot, and thought I would share that knowledge, so I started Counter-Hack (http://www.counter-hack.net) in the summer of 2001.
Little did I know how extremely popular this website would become. Within a week or two I had a website wtih decent content up using Dreamweaver. This was 100% HTML based, no CSS, trying to use Dreamweaver’s Template system. What I would have given for some PHP or even WordPress. While with RPGLegacy, I had maybe a max of 5,000 visitors over it’s entire lifespan, within a month I had 30,000 visitors to Counter-Hack. Soon I was getting thousands of visitors per day. About the same time I met Anthony Ouwehand (nicknamed H3X), who had ran another popular website about video game hacks. He graciously helped me with his PHP/MySQL skills. He designed, and developed, the Counter-Hack website that was launched in 2002 and ran until 2008 when everyone involved with the project just were too busy, and the site had ran it’s course and purpose. Two years of that time the project ran with the rest of the volunteers while I served an LDS Mission in Torreon Mexico.
During the years with Counter-Hack, a few highlights were interviews with Wired for news stories, working with Valve Software to help recover the HL2 Leak, and an interview and article with Rolling Stone Magazine. During it’s height, Counter-Hack was covering dozens of games with hundreds of thousands of visitors a month. During it’s later years, Counter-Hack implemented a Wiki system for much of it’s content, something that was pretty new at the time. All and all, it was a great experience with dozens of volunteers and great memories. For a hobby during High School and the year after graduating, I couldn’t have asked for a better experience. I learned a lot before even starting college.
Developing Out of Necessity for CEVO
The reason why for the background story is for two reasons: I had started practicing web design and development from a very early time, and I gained a unique background and knowledge with my work with Counter-Hack. So in March 2005, being home only a few weeks from Mexico and still with a heavy mexican accent, I was approached to work with a company called CEVO. It was an online video game league that was emerging, and their first game was Counter-Strike. They needed someone to help consult with preventing cheating and “hacking” in their matches, and I was a perfect fit. So I joined as a consultant, and quickly became the Operations Director within a few months. CEVO also had brought on Eric Ping to be the CTO, and the company started to grow.
One of the challenges CEVO faced was it was a completely distributed team. Charlie Plitt, the owner, lived in Baltimore, MD, Eric lived in Ephrata, WS, and I lived in Ogden, UT. We had staff and volunteers that literally lived in all 50 states except Hawaii and Alaska, as well as some across Canada. Our customers also lived all over North America, and we relied on the Website, Email, and VoIP to run the entire company. It was insane and awesome at the same time. This put a ton of demand on Eric, our only developer for the website, to get new features implemented quickly. During the first two years, we had re-designed the website a total of 6 times before finally settling down on the current design, which is being redesigned now as well. Eric couldn’t handle it all, and since we didn’t have the funds to hire another developer, I thought since I knew something about web design and programming, I could help out.
Eric took me under his wing and basically mentored me along as I started to take on project after project. I had become familiar with PHP and MySQL when I was tinkering with Counter-Hack’s code, but now I was really learning. I was also learning extremely quickly because I had no other option. It wasn’t like working at another company where I had a team of Senior Developers that could bail me out. Eric worked such late hours that normally if I was awake, he was asleep, and we meet for a few hours in the afternoon and evenings. But if I had a bug, or a problem, there was only one person who could solve the problems: myself. Working on a team of two developers for a start-up company is extremely demanding, and I was constantly looking for ways to work more efficiently. It was the only way to meet CEVO’s growing demands, by learning how to be a quicker and better developer. So while I had a day-job of doing Tech Support for a local company, I spent every other free moment working for CEVO. As CEVO grew, we ran into scaling problems and performance problems, things a normal “Jr. Developer” wouldn’t have hands-on experience dealing with.
Eventually, I had learned so much working for CEVO, that I was able to quit my day-job doing tech support, and did contract work on the side. I helped launch some e-commerce websites, some basic business websites, and spent the rest of the time working on CEVO. I had started to go back to school for my Business Administration degree at WSU, and I was pretty much busy non-stop. But it was a lot of fun, and allowed me a lot of freedom not having a normal 9 to 5 job.
Ambient Partners, LLC
In 2006, I had the most amazing thing happen to me: I met my wife. We had dated for almost a year and we decided to get married. So by the end of 2006, I had a serious realization: I needed a steady income. While contract work paid really well, I could go a month or two without a check from clients. When living at home with relatively no expenses with the exception of my car, I could get away with this. But health insurance, rent, groceries, etc. I couldn’t live that way. So I decided to find a full-time programming job. Fortunately, the company I had worked tech support at had split with their California office and changed names. They were a company primarily doing software for DVD Rental Kiosks, and needed a Web Developer to do work on their web technologies. So by January 1st, 2007, I became a full-time employee for Ambient Partners. Our development team consisted of myself, a Senior Developer, and the CTO. As I look back at what the three of us accomplished as a development team, it amazes me.
When I joined, our main client had about 100 kiosks in the field. After doing the company website, I was given a very big project: RBO, Rent-Buy-Online. We wanted to provide clients with “white-label” solution to allow people to reserve and buy DVDs on a website, and then go pick them up at a Kiosk. There were two parts to this solution. The website itself, and the web services to supply the website with data. I had never written web services before, so I had a lot to learn very quickly. Also, it was to be written completely in ASP .NET, a framework, and C#, a language, I had never worked with before. So I started to learn how to build this project in .NET. It was very difficult on multiple fronts, but on in particular that I had underestimated was going from a loosely-typed language (PHP) to a strongly-typed language (C# .NET). So I tried several different methods, started a few different projects, and after a three months I got an email from my boss. It was short and sweet: “Justin, money is tight and we can’t afford to keep you on staff if you’re unable to make real progress on RBO. Either we need to see some real progress very soon, or staffing changes will be made.”
I learned very quickly that spinning your wheels trying to do something perfect, but never getting done, is an excellent way to stay unemployeed. I immediately shifted gears after the thought of explaining to my new wife that I had lost my job. Fortunately, after the fear of doing something wrong was overcome by my fear of not finishing anything, I completed RBO to version 1 in record time. I had made some ugly coding decision that we refractored out later, or scratched completely, but it was a working prototype. My boss was happy, and I was happy and still employed. While the front website has been redone for Blockbuster Express, it is powered by the same web services I built in 2007.
After building RBO, I was tasked with building a reporting & support suite that would manage millions of transactions. This second project went much smoother, and I put a lot of effort into it. I knew the people making the decision whether or not to buy our multi-million dollar software suite would be personally using this piece of our solution, so I wanted it to make them really smile. I was told after the demo of our new software suite, the executives all mentioned they were looking forward to using their “executive reporting tool.” Several months later, after successfully building some pretty slick software with the rest of the team (of which other things were even cooler then what I made, like Chris’s auto-updater system), Ambient Partners was purchased by NRC.
By 2008 when the NCR deal was underway, I had a choice. I could stay, take a very nice raise, and work for a very large corporation. But, deep down inside, I had a bad feeling about working for NCR. As a small team, we were very effective and there was almost zero political or bureaucratic non-sense in Ambient. As for NCR, I would go from being a developer in a company of three developers to a company of hundreds, if not thousands, of developers. I was also tired of working in .NET and Web Services, as I was moving away from what I loved to do: building cool websites with cool technology.
My father at the same time was working on his new business: Dating DNA. They had a web developer in San Diego, but he was expensive because living in San Diego is expensive. So Kevin asked me if I would be interested in working for Dating DNA. We tested the waters by having myself build a Web-based iPhone App for Dating DNA (the App SDK hadn’t been released yet.) It worked really well, so I turned down the offer to become an NCR employee, and returned to my roots as a developer: working from home working with code I love.
Through 2008 and 2009 I worked as a full-time developer for Dating DNA. I took over all responsibilities for all their technology. In those two years, we did a lot. I’ll have to write a new blog post to completely cover everything we did that was awesome, but here were a few highlights: Built a real-time score generation system that could calculate hundreds of scores per second. Built the iPhone’s first Dating App, and to this day is a top ranking App in the charts and highest rated dating app. We scaled from 3,000 users to hundreds of thousands of users. We built a handful of new iPhone Apps, the main one being Clipish. We built custom chat rooms using Ajax and Comet, and a bunch of other stuff.
Alienware & CEVO
All this time, I was still doing work in the evenings with CEVO. In 2009, we were approached with the opportunity to do something we hadn’t done before in CEVO. Dell’s brand Alienware wanted us to make them a website like CEVO’s, only completely branded for Alienware. We built, from the ground up, and custom solution for Dell and Alienware, and Alienware Arena was born. This was a great project to work on, and we were able to get it done on an extremely tight timeline and a strict budget. I did 100% of all the graphical design, following Alienware’s look and feel, and I’m very proud with the result. It was built by myself, Eric Ping, and our new talented developer Mike Stevens. While I can’t say how many members Alienware Arena now has, it is a lot. Building such a successful website for a large company like Dell doesn’t come around very often. Each year Dell has us add more and more features to it, and it has been a great project for CEVO.
Utah Open Source
One thing that happened in November 2008 that I would consider one of the crucial events that “fast-tracked” my education as a web developer was being introduced to the local Open Source groups in Utah. I spoke at the Utah PHP Usergroup and was introduced to the Utah Open Source Foundation. Through these groups, I met dozens, and eventually hundreds, of talented, passionate people. While through CEVO I fast-tracked my web design and PHP development, through the Open Source groups I broadened my knowledge of so many more technologies. I learned about nginx, nagios, redis, memcached, php apc, linux server administration, and Git just to name a few off the top of my head. What is great is not only did I learn about these things, but I met people who know a lot about them. So when I ran into problems, I already knew a solution that could work, and knew people I could ask questions too. That, and I’ve made a lot of great friends through the different meetings, lunches, and conferences. I’ve picked up some contract work through my connections with these groups, and overall they have been extremely beneficial and great.
Chief Technology Officer
All of these different things played a part in me having the job I have today, CTO of Dating DNA. I’ve written already about my new responsibilities as our new CTO, and what it means for the company. These few short months as CTO we’ve made a lot of changes to handle even more scaling (especially with holiday surges and such). We’re in the process of improving our already fast score generation system, and moving our user photos to a more scalable solution in the near future. We’re evaluating our usability and such for our website, and seeing if a redesign on certain areas would be beneficial. There is a lot of work to be done, but I truly enjoy it.
Advice & Lessons Learned
After reading and thinking about the different things I’ve experienced and gone through to get me to this point, I’ve had a few thoughts that I think can help anyone in our field, and other fields of work:
- Surround yourself by people who help each other learn – Looking back, all of the people who have really helped me along with my career and education (not just schooling) have been people who help everyone learn. They each others things, and then learn from others. They harbor a culture of continual learning, and being in the tech industry which is always changing, this is critical.
- Always be learning something new, always – Trust me, there is always something to learn in this industry. Even if you’re learning something that isn’t directly involved, you never know what it might lead to. My work with Counter-Hack lead me to CEVO, which in turn lead to an accelerated web development “course” of “holy crap, we need to get this done and working or we crash and burn.” Even to this day, a lot of the things I learned about how hacks work I apply in other areas of computer science.
- Don’t let formal education be your only source of knowledge – Those that know me know I can be a little “harsh” when talking about formal educational institutions. Especially my frustrations with certain types of developers that are produced from these institutions. But the bottom line is this: they can be a great source of knowledge, and you can learn a lot from them. However, if you don’t learn additional information outside of the classroom, you are going to be sorely disappointed at how much you know when you graduate. Fundamentals are crucial, but practical application is just as important.
- Apply and build something important to you – There isn’t a better teacher than experience, and getting is as soon as possible, and as frequent as possible, will help a lot. I’ve spent more years unprofessional doing my job than professionally (at least for another year or two). Working on something meaningful to you, not just going through the motions of tutorials, really teach someone what it is like to do this kind of work.
- Networking and getting to know people is crucial – There is such an important emphasis on skill in the technical world, that knowing people and their actual abilities is vital. Also being know for your set of knowledge is important. That way when you want to learn something new, you know who to seek out. Before becoming Dating DNA’s CTO, and the rumor went out I was considering a new job, I had a lot of people contact me to see if I was interested in certain positions. There is no down side to being a “social” developer. Just because this isn’t “Marketing” doesn’t mean social networking isn’t important. I personally don’t like the term “networking” since it makes it seem like a chore. Make lots of friends in the programming groups and circles in your area and community, and it will be beneficial.
- Love what you do – If you don’t love what you do, then there is a good chance you will not go far in this industry. It doesn’t mean this is the only thing you do. Other hobbies and activities are important. But if you dread going to work, and do your work, every day, then it’s time to find something else.
This went a lot later in the evening than I thought, so I hope my thoughts are coherent, and if nothing else, entertaining. Its been a great deal of fun since those first days with Photoshop 3 trying to design something that didn’t look terrible. I look forward to the next few decades to see where web technology takes us.