Jekyll2024-03-11T11:55:12-07:00https://clifton.io/feed.xmlBrian CliftonWhy I’m not interested in self-driving cars2018-02-07T23:28:00-07:002018-02-07T23:28:00-07:00https://clifton.io/thoughts/2018/02/07/why-im-not-interested-in-self-driving-cars<p>Being in the tech world, it’s hard to go even one day without hearing self-driving cars mentioned. On Twitter, on the news, or in everyday conversations. Here in Chandler Arizona, you’ll even see a decent number of the Waymo cars driving around. It’s really easy to spot them because of how unusual they look: a white minivan with a huge siren looking thing mounted on top and a green W on each side.</p>
<h2 id="advantages-to-self-driving-cars">Advantages to self-driving cars</h2>
<p>If we pretend that fully self-driving cars are a reality (and are widely used) and think about the Pros and Cons, I’ll admit: there are some pretty cool Pros about self-driving cars</p>
<ul>
<li>You could save a lot of money if you didn’t need to own a car (no payments, insurance, or maintenance)</li>
<li>Disabled or impaired drivers would have a safe means of transportation (handicapped, drunk, sleepy, etc)</li>
<li>Software can react faster and more consistently than humans. This is great for safety</li>
<li>No traffic jams if everyone had self-driving cars (efficient driving)</li>
<li>You would never need to worry about parking; just call another car when needed</li>
<li>If popular enough, Police could potentially focus less on traffic and more on serious crimes</li>
</ul>
<p>These are some pretty nice benefits- I can definitely appreciate why folks want to solve this problem (and I’m sure I missed other great reasons). That said, <strong>I personally believe that it’s an overly complex problem which is not worth solving</strong>.</p>
<h2 id="i-like-driving-my-car">I like driving my car</h2>
<p>I love cruising in a nice car. Windows down, breeze flowing, radio on with your favorite song- just relaxing. While I would say that I am a car enthusiast, I’m not an expert at driving by any means. I have only owned cars with an automatic transmission (I’ll grind or stall out on manual). And sure, there were times I’ve left my headlights on before until the battery ran down. But at the end of the day, <em>I enjoy the experience</em>. I am in full control over when and where I drive and I enjoy the pride of ownership that goes along with owning and maintaining a vehicle (for better or worse). I’d have to imagine there are many others like me that would not be willing to give up this level of control.</p>
<h2 id="the-human-experience">The human experience</h2>
<p>Having a human driver pick you up and drive is something that software will never be able to replace. When I’m in a city I’ve never been to, I love being able to ask a driver about favorite places to go. They’ll also help load and unload your luggage. Maybe they know a route which has a really beautiful view of the ocean. Folks that are disabled or impaired and need help can count on the driver to help them get in and out of the car. Small talk can be super enjoyable sometimes- there are a lot of interesting people out there.</p>
<p>There’s also the reaction component that a human has. When driving, you might see someone on the side of the road that needs help. What if a crazy person gets out of their car with a baseball bat- how would the car know that you need to floor it and jump the median to escape? If someone has a heart attack in the back, the driver can drive them to the hospital or personally jump in and help if they have medical experience. Consider something as small as looking really sad and having the driver notice and put a smile on your face. There are just an unimaginable number of situations where I personally would want a human being there.</p>
<h2 id="complexity-involved-in-solving-the-problem">Complexity involved in solving the problem</h2>
<p>This is the big one for me. Being a software engineer, I know from experience that focusing on edge-cases (situations that don’t normally happen) can eat up time and money. The cost of staffing engineers full time to solve a problem as large as self-driving cars is unmeasurably expensive. Whether people realize it or not, the folks working on solving this problem are working on artificial intelligence- it’s not just about reading sensors and reacting.</p>
<p>With today’s technology, the happy path (best case scenario) seems to be possible. But when you want a guaranteed 100% safe experience, you get into a lot of edge-cases. If the car will crash and you have to choose between hitting another car OR running over a person on the sidewalk, which do you choose? If a ladder accidentally falls off the back of a work-truck, do you run it over? or do you swerve into the next lane? How can you tell that other drivers on the road are high risk (ex: they have their lights off, or they’re clearly drunk / not paying attention) so that you can stay away from them? Should self-driving cars honk at people who aren’t paying attention when the light turns green? How do self-driving cars keep track of traffic laws, something that constantly change?</p>
<h2 id="conclusion">Conclusion</h2>
<p>The amount of “what-ifs” and the effort needed to solve each of those problems is something that I personally believe makes the problem not worth solving. I enjoy the human experience associated with vehicles and I think it’s cheaper (and a better use of time) to continue to have a person drive. Moving towards a fully self-driving culture really seems to dehumanize the travel experience for me in a lot of ways.</p>Being in the tech world, it’s hard to go even one day without hearing self-driving cars mentioned. On Twitter, on the news, or in everyday conversations. Here in Chandler Arizona, you’ll even see a decent number of the Waymo cars driving around. It’s really easy to spot them because of how unusual they look: a white minivan with a huge siren looking thing mounted on top and a green W on each side.Why I left a job I loved2016-08-07T13:06:00-07:002016-08-07T13:06:00-07:00https://clifton.io/career/related/2016/08/07/leaving-godaddy<p><img src="https://blog.clifton.io/wp-content/uploads/2016/08/gd-to-brave.png" alt="From GoDaddy to Brave" class="img-responsive" /></p>
<p>I joined GoDaddy in March 2008 and it was the first job that I <strong>truly</strong> loved. I worked as a developer in the hosting department for all 8 years and got a chance to work on most of the products (dedicated hosting, VPS, shared hosting, and their user interfaces) using a variety of technologies (C++, PHP, Perl, .NET, JavaScript, Ruby, Python). The work itself, pay, and benefits were great. Besides being constantly challenged and getting to work on a lot of code (as opposed to being in meetings all the time), the folks I worked with made it a fulfilling job. I consider myself pretty good and it was rewarding to work with people that I could learn so much from. Why would I leave?</p>
<p>As an engineer, something that’s always in the back of my mind is my professional development plan. <strong>“How do you plan to grow?”, “What technologies do you want to get involved with or focus on?”, “Great- you’re in the ‘Senior Software Engineer’ club… but now what?”</strong> These are seriously some tough questions to ask yourself and honestly, the industry is so young that there aren’t clear processes yet to guide these discussions. My answer when I asked myself these questions was that I wanted to become more involved with and known within the open source community.</p>
<p>Open source technology is very important to me and I make an active effort to use it wherever I can. I find open source to be empowering for several reasons. When you run into an issue, you not only have the ability to fix it yourself… but you can share your patch on a mailing list or in the form of a pull request, making the project even more robust (for everybody). You also have the opportunity to shape the project and its vision by giving input and creating new features. Lastly, and most importantly, you get a chance to rub elbows with everybody in the community. These people have a vested interest and are in this together with you; they want everyone using the project to succeed. What a great chance to meet some new people and learn a ton.</p>
<p>The first project I got involved with and cut my teeth on was Ember.js. This was a framework we had been using in our hosting UI at GoDaddy and it wasn’t the easiest to learn at the time. The documentation could be better and none of it mentioned Ember CLI, a command line interface similar to the generators available in Ruby on Rails. I got my feet wet by helping with documentation. Even though my contributions were small, it was an <strong>extremely</strong> rewarding experience for me personally. I got to meet a lot of folks in the community, including some of the core team members, I learned some best practices with GitHub (maintaining a fork, rebasing to squash / get rid of merge commits), and people recognized me and my contributions publicly on places like Twitter and at EmberConf.</p>
<p>Brave was my next project. I started getting involved in early April 2016 after trying the browser out. While I love the project and its vision, it felt very rough around the edges at the time and I wanted to help do my part. I started off by contributing small fixes: adding favicons to the bookmarks toolbar, fixing rendering issues on Windows, fixing bugs, and reworking the context menus. I moved onto larger scope issues like making sure the window state is saved (window position / full screen status / maximized status), adding a really nice live tile for Brave on Windows 10, and fixing the way the session is stored to disk. I did this all in my free time at night or on weekends when I was at GoDaddy as my professional growth goal. Along the way, I got a chance to meet the team and learned more about modern JavaScript and React. My favorite technology to learn about was/is Electron, an open source project maintained by GitHub. <a href="https://electronjs.org/">Electron</a> is basically a web browser that is hardcoded to only load your application. You do your UI in HTML / CSS / JavaScript and unlike typical web development, you don’t have to worry about “How does this look in ?”. When you package your app, Electron includes (and wraps with a JavaScript API) components from the Chromium browser. There are several cool projects using electron, like <a href="https://slack.com/">Slack</a>, <a href="https://code.visualstudio.com/">Visual Studio Code</a>, and of course, <a href="https://atom.io/">Atom</a>.</p>
<p>Every aspect of Brave is personally appealing to me. True to its name, this small company is taking parts of Chromium (specifically <code class="highlighter-rouge">libchromiumcontent</code>), a project that advertising giant Google has put a lot of blood, sweat, and tears into, and using it to make a new browser which stands up against their core business. Brave offers end-users like you and me a compromise when it comes to advertising. As a consumer, you can either block all advertisements <strong>OR</strong> you can choose to allow them and in return, get paid. Advertising is never going to go away and nobody today is offering a solution. Brave not only gives folks a reason to opt-in but it also opens a revenue channel between the customer and the sites they visit. On top of all of this, the browser and their development team are advocates for you- helping ensure you have a secure solution that protects your privacy and protects your data usage. This is huge, especially since most of the world is accessing content via mobile devices and data isn’t cheap.</p>
<p>After being an active part of the community for several months, I was approached with an opportunity to join Brave Software. I proudly accepted and I’m happy to report that I just finished my week on the job.</p>An introduction to hosting2016-04-15T09:00:00-07:002016-04-15T09:00:00-07:00https://clifton.io/hosting/2016/04/15/an-introduction-to-hosting<p>Hosting is the physical place where “content” (web sites, images, files, etc) lives at. Basically, this is just another person’s computer. When you hear people talking about “the cloud”, they’re talking about hosting.</p>
<p>You can use your own computer to host content or you can purchase hosting from a company like GoDaddy. The computer providing the hosting is typically accessible by anyone with internet access.</p>
<h2 id="examples-of-hosting">Examples of hosting</h2>
<p><strong>Dropbox, OneDrive, and Google Drive</strong> are examples of <em><strong>storage hosting</strong></em>. You setup an account, install their app, and can start storing your content (documents, music, photos, etc) on their servers.</p>
<p><strong>GoDaddy, HostGator, and DreamHost</strong> are examples of <em><strong>website hosting</strong></em>. You purchase/setup an account and use software to upload your content (images, web pages, etc). Each website host is running a piece of software such as Apache, NGINX, or IIS which can be customized for your hosting needs (more about this later).</p>
<p><strong>Office 365, Gmail, and iCloud Mail</strong> are examples of <em><strong>email hosting</strong></em>. You purchase and/or setup an account and either use a website to access the mail or configure your phone or an app on your computer, like Microsoft Outlook, to send and receive the mail. Your phone might download a copy of the emails, but the actual emails themselves are stored by the email host.</p>
<p><strong>Facebook and Twitter</strong> are examples of <em><strong>content hosting</strong></em>. Everything you share or post is stored on their servers, including all the data you punch in (your friends list, your location, photos, etc).</p>
<h2 id="how-do-people-interact-with-a-hosting-account">How do people interact with a hosting account?</h2>
<p>Let’s start off by talking about what happens when you load up a website on your phone or your computer. <em>Please keep in mind, this is a high level overview focusing on the most important parts.</em></p>
<h3 id="1-you-load-a-bookmark-or-type-a-domain-name-into-your-browser"><a name="step1"></a>1) You load a bookmark or type a domain name into your browser</h3>
<p>This happens in Safari, Chrome, Edge, Firefox, or whichever web browser you use. In the address bar at the top, you type in “google.com” or something similar.</p>
<h3 id="2-the-browser-uses-dns-to-convert-the-domain-to-an-ip-address"><a name="step2"></a>2) The browser uses DNS to convert the domain to an IP address</h3>
<p>DNS stands for “<strong>D</strong>omain <strong>N</strong>ame <strong>S</strong>ervice”. Its sole purpose is to take a domain name (ex: <code class="highlighter-rouge">google.com</code>) and convert that to an IP address (ex: <code class="highlighter-rouge">216.58.216.14</code>). While each website is exposed on the internet using an IP address, using a domain name is much easier for folks to remember (and sometimes required, if multiple web sites are using the same IP address). It’s worth noting that if you own a domain, you can control what IP address that DNS will return to folks.</p>
<h3 id="3-the-browser-makes-a-request-to-the-host"><a name="step3"></a>3) The browser makes a request to the host</h3>
<p>When you type a domain name and hit enter, your computer makes a connection to the IP address returned by DNS. This process is called making a request and the computer you are sending the request to is called the server or the host (ex: your hosting account). The browser’s request to the hosting account is simply <em>“Hey, send me whatever I typed in the address bar”</em>.</p>
<p>The request itself is made up of a few parts:
<strong>http://example.com/over/there?name=ferret</strong></p>
<table>
<thead>
<tr>
<th>Example part</th>
<th>Part name</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>example.com</td>
<td>Domain name / Host name</td>
<td>Resolves to an IP address</td>
</tr>
<tr>
<td>/over/there</td>
<td>Path</td>
<td>Which folder and/or file you want to access</td>
</tr>
<tr>
<td>name=ferret</td>
<td>Query string (part after the ?)</td>
<td>Usually used by code that runs on the server</td>
</tr>
</tbody>
</table>
<h3 id="4-the-host-processes-the-request"><a name="step4"></a>4) The host processes the request</h3>
<p>This step depends on how your hosting is configured. Processing could be as simple as just loading a file (an image for example), or it could be executing code that you wrote. You can also configure security on your files, forcing someone to provide a username and password in order to reach the file.</p>
<p>In the example request above, the host would look for a folder “over” and then look either for a file or folder called “there”. If it finds a folder, it will look for a default document (like index.html).</p>
<h3 id="5-the-host-returns-a-response-back-to-your-browser"><a name="step5"></a>5) The host returns a response back to your browser</h3>
<p>The response includes:
A number (the response code; ex: 200, 301, etc)
The data (the image, the web page, etc)</p>
<p>Below are a few sample response codes. <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes" target="_blank" rel="nofollow">You can view the full list here</a>.</p>
<table>
<thead>
<tr>
<th>HTTP code</th>
<th>What this means (short)</th>
<th>What this means (more details)</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>Everything is great</td>
<td>If the response is HTML, the browser will process it and you’ll be shown a web page</td>
</tr>
<tr>
<td>301</td>
<td>The response is a redirect</td>
<td>The browser will be told to go back to step 2 (but using the new domain name / host name / path)</td>
</tr>
<tr>
<td>404</td>
<td>Page was not found</td>
<td>The host will either return a “not found page” or your browser will show its generic 404 page</td>
</tr>
</tbody>
</table>
<h3 id="6-your-browser-processes-the-response"><a name="step6"></a>6) Your browser processes the response</h3>
<p>This is where you see the web page
<img src="https://blog.clifton.io/wp-content/uploads/2016/04/website.png" alt="The website after the browser renders it" class="img-responsive" /></p>
<h2 id="real-world-example">Real world example</h2>
<p>Let’s see a real hosting account which uses a real domain and see what it looks like. Below is a screenshot of my GoDaddy hosting account which uses cPanel. Let’s walk through each of the six steps in more detail.
<img src="https://blog.clifton.io/wp-content/uploads/2016/04/godaddy-cpanel.png" alt="Hosting made easy at GoDaddy with cPanel" class="img-responsive" /></p>
<table>
<thead>
<tr>
<th>Step</th>
<th>What happens</th>
<th>What this means</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#step1">Step 1</a></td>
<td>The domain name is in the top left of the screenshot:<br /><img src="https://blog.clifton.io/wp-content/uploads/2016/04/domain.png" alt="domain" width="174" height="39" class="alignnone size-full wp-image-360" /></td>
<td>This is what the user types in their browser (<a href="http://123tochina.info" target="_blank">go ahead and try it out</a>)</td>
</tr>
<tr>
<td><a href="#step2">Step 2</a></td>
<td>The IP Address is also in the screenshot, below the domain name:<br /><img src="https://blog.clifton.io/wp-content/uploads/2016/04/ip.png" alt="ip" width="108" height="35" class="alignnone size-full wp-image-361" /></td>
<td>This is what DNS will convert the domain name into</td>
</tr>
<tr>
<td><a href="#step3">Step 3</a></td>
<td>Your browser makes a request to the host (107.180.48.242)<br /><img src="https://blog.clifton.io/wp-content/uploads/2016/04/waiting.png" alt="waiting" width="148" height="34" class="alignnone size-full wp-image-365" /></td>
<td>This is your computer asking the host to send the web page</td>
</tr>
<tr>
<td><a href="#step4">Step 4</a></td>
<td>The host is loading a file and/or executing code</td>
<td>The host’s computer processes the request</td>
</tr>
<tr>
<td><a href="#step5">Step 5</a></td>
<td>Your browser gets a response from the host:<br /><img src="https://blog.clifton.io/wp-content/uploads/2016/04/response.png" alt="response" width="250" height="82" class="alignnone size-full wp-image-363" /></td>
<td>The 200 response means everything went perfect!<br /><br />You can view this yourself if you open the developer tools:<br /><kbd class="kbd">F12</kbd> on Windows<br /> or<br /><kbd class="kbd">Cmd</kbd> + <kbd class="kbd">Opt</kbd> + <kbd class="kbd">I</kbd> on Mac/Linux<br />(then go to the network tab)</td>
</tr>
<tr>
<td><a href="#step6">Step 6</a></td>
<td>Done!</td>
<td>The browser is now showing you my cat blog</td>
</tr>
</tbody>
</table>
<h2 id="why-pay-for-hosting">Why pay for hosting?</h2>
<h3 id="you-need-an-ip-address">You need an IP address</h3>
<p>In order for DNS to work, you need an IP address. If you have internet at your house, you do have an IP address. The problem is, home internet providers typically <strong>won’t guarantee that you’ll have the same IP address… <em>unless you upgrade to their business plan</em></strong>. I use Cox Communications at home and they usually reset my IP address once a week; sometimes once a day. Each time the address changes, you are responsible for updating the IP address associated with your DNS record, otherwise folks can’t get to your website.</p>
<h3 id="fast-internet-access">Fast internet access</h3>
<p>Hosting companies usually have great connections to the internet, even for their cheaper accounts. Your content will likely be sent out much faster than if you hosted it out of your own house. You could also pick a server that is physically on another continent, like Europe, if that’s where your target audience is.</p>
<h3 id="easy-to-use">Easy to use</h3>
<p>Many times, hosting providers will provide a control panel. cPanel is an example of a great and easy to use interface which makes it easy to add and configure domains that you own and you’ll have tools which help organize your content. If you don’t use a panel, you’ll have to dig in and understand how to use software like Apache, nginx, or IIS. These pieces of software are well documented, but they aren’t trivial to understand for someone who is just starting out.</p>
<h3 id="someone-else-supports-it">Someone else supports it</h3>
<p>Unfortunately, computers require maintenance. The computer hosting your content will <em>eventually</em>:</p>
<ul>
<li>have a piece of hardware die (hard drive, RAM, fan, motherboard)</li>
<li>run out of disk space</li>
<li>have a network outage (network equipment failure, failure by your internet provider, etc)</li>
</ul>
<p>When you have a paid hosting account, a 24/7 staff is monitoring the computers and network and will do their best job to fix problems that do come up, hopefully before an issue ever happens. Their staff is also available for phone support when an issue comes up and to help answer any questions. If you choose to host the content yourself, you are going to be responsible for all of that.</p>
<h2 id="conclusion">Conclusion</h2>
<p>My goal with this article was to help explain what hosting is to non-technical folks and in that regard, I hope this article has made sense. If you have any questions, comments, or critiques, please leave them below and I’ll be sure to answer them :)</p>Hosting is the physical place where “content” (web sites, images, files, etc) lives at. Basically, this is just another person’s computer. When you hear people talking about “the cloud”, they’re talking about hosting.Sharing my love for programming with kids2016-04-09T09:14:00-07:002016-04-09T09:14:00-07:00https://clifton.io/giving/back/2016/04/09/sharing-my-love-for-programming<p>Just over a week ago (March 31st), I got the opportunity to team up with my co-worker and friend Matt Smith to give a talk for two different classes at <a href="https://madisonaz.org/no1-middle-school/home/">Madison #1 Middle School</a> here in beautiful Phoenix, Arizona.</p>
<p><img src="https://blog.clifton.io/wp-content/uploads/2016/04/out-front-selfie.jpg" alt="Heading into the school" class="img-responsive" /></p>
<p>Once we were introduced and given the floor, we jumped right into our first talk for a class full of fifth and sixth grade students. We launched up <a href="http://jsbin.com">jsbin.com</a> and interactively made a website with each of the classes, starting off with an empty document and adding content and styles as we moved along. As we’re giving the demo and building a web page, we involved all the students by asking for suggestions and answering lots of their questions. We actually got so many questions with our first class that we didn’t even get a chance to finish the demo.</p>
<p><img src="https://blog.clifton.io/wp-content/uploads/2016/04/5th-6th-graders.png" alt="Doing a demo with our first class, 5th and 6th graders" class="img-responsive" /></p>
<p>The second class had slightly older students, seventh and eighth grade. We got more great questions and were able to go a little further in our demo, adding JavaScript to our page to fetch weather and temperature information from a web service (<a href="http://jsbin.com/wusiza/6/edit?html,css,js,output" target="_blank">here’s a link to the final output</a>). Even though we only had 45 minutes for each session (it flew by), we truly got some really great questions. It was easy to see that these kids were really interested in technology and loved hearing about our experiences and being able to ask questions.</p>
<p><img src="https://blog.clifton.io/wp-content/uploads/2016/04/7th-8th-graders.png" alt="Talking about programming with our second class, 7th and 8th graders" class="img-responsive" /></p>
<p>This is the second talk we’ve done at a local school, the first one being last year on November 13th at <a href="https://madisonaz.org/park-middle-school/home/">Madison Park Middle School</a>. That talk was great too, although it was more focused on why we love programming and why we think it’s a great career path for all of them (instead of walking through a demo). Big thanks to Mr Hansen for setting this up (he’s in the pictures above in the pink shirt).</p>
<p>It’s really important for me to be able to support other people and their growth. I didn’t have a lot of support while I was learning computer programming; not many people I knew were able to talk about it with me. The majority of my support was virtual (friends on AOL and IRC) although I did get to share my experiences with the father of one of my friends who had previously coded for the Commodore 64 (which was awesome). The people that did support me were generous with their time and believed in me. As much as I’d like to think that I made it here by purely being smart and working hard, I’d be lying- a lot of people helped me along the way and I will always be grateful for that.</p>
<p>Please consider giving back in one way or another. It doesn’t take much time or effort and there’s a big reward: making a difference in people’s lives. You could talk to a classroom full of bright eyed kids like we did, be a part time mentor for someone you see potential in, or just go the extra mile explaining a topic to someone when they come to you for help.</p>
<p>While preparing for this last talk, I got really inspired and started putting together resources for folks that want to learn more about programming. It’s still a work in progress, but <a href="https://clifton.io/learn/">you can click here to see what I’ve put together so far</a>.</p>Just over a week ago (March 31st), I got the opportunity to team up with my co-worker and friend Matt Smith to give a talk for two different classes at Madison #1 Middle School here in beautiful Phoenix, Arizona.Lessons I’ve learned in the last 12 years2015-10-22T06:57:00-07:002015-10-22T06:57:00-07:00https://clifton.io/career/related/2015/10/22/lessons-ive-learned<h2 id="work-at-a-job-you-love">Work at a job you love</h2>
<p>This is huge. Believe me, if you don’t love your job, it can and will eventually cause you complications in life.</p>
<p>I love Intel as a company and I spent nearly 3 years there. During my time there, I met some amazing people and did some great things. Ultimately, the job wasn’t for me. Manufacturing processors is their core business, which means the process for my manufacturing group was extremely conservative. Changes could potentially take <em>years</em> to get into production; it’s a long term game.</p>
<p>Being in this kind of environment was tough for me- <em>I personally love being able to see my work make a positive impact and having the ability to fix anything that’s a pain point.</em> Since making changes to the production environment can be cost prohibitive, the business chooses to leaves some bugs in place since it’s cheaper for folks to use a documented work-around than to fix the root cause. This drove me nuts.</p>
<p>How can making a change be cost prohibitive? Fixing one line of code is easy, right? Well… in reality, we’d need to get permission to (as a department) regression test the entire system to make sure this one change doesn’t break anything else, bring results from those tests to review with all stakeholders to prove the change is safe and justified, and then (assuming it gets approved by those stakeholders), find a time when the factory is already scheduled to be down (maybe for tool maintenance). In an environment where downtime in minutes can be measured in millions of dollars, the business can’t risk taking the factory down for a simple code change. And this deployment process would then need to be repeated for each factory worldwide. Unless you have a critical hot-fix, your proposed changes aren’t likely to be included until the next major process change.</p>
<p>After two years of being in this kind of environment, I was worn down and burned out. <em>I tried so hard to make a personal impact to the business but I felt like I wasn’t able to change anything</em>. The stress I put myself through combined with having obsessive compulsive disorder (and not knowing it at the time) was causing me to have extreme anxiety and depression. I ended up quitting before hitting 3 years which, in retrospect, was a great life-changing decision for me.</p>
<p>My current job at GoDaddy has been amazing. I joined as a C++ dev back in 2008 and was immediately making changes that would get pushed to production. I’d get feedback from our support staff and even directly from customers and we could make changes to help them out. I honestly love the work I do, the people I work with, and the customers that use our products. Being incredibly happy at work spilled over to my personal life. I cared enough about myself to seek help for OCD and not long after that, I met my wife.</p>
<h2 id="software-that-works-is-king-improve-it-in-iterations">Software that works is king; improve it in iterations</h2>
<p>This is something that seems obvious to me, but I don’t think it gets enough attention because it’s not a “sexy” topic. <em>Having code that works is the single most important goal from a business perspective.</em> Period. Re-usable code, maintainable code, efficient code, using a bleeding edge version of a library / technology… these are all great things, but ultimately they’re worthless if the software doesn’t fulfill its job. Features are why people pay us to make software for them and we shouldn’t forget that.</p>
<p>We’ve all been in those situations where you start looking at code written by a co-worker and you start getting emotional. <em>“Whoever wrote this code IS AN IDIOT and deserves to be shot”</em>. How about that person that copy/pastes everything from Stack Overflow… or the person who has a gigantic function with a 10,000 line switch statement, because they don’t know any better. Then there are the extreme cases which make you want to gouge your eyeballs out with a spoon, like folks using a for loop instead of a sleep statement. I think it’s a natural human response for a developer to make a judgement and <em>try</em> to justify reworking this code in some way.</p>
<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// HorribleCode.cpp</span>
<span class="kt">bool</span> <span class="n">condition</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">==</span> <span class="mi">1</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">condition</span> <span class="o">==</span> <span class="nb">true</span><span class="p">)</span> <span class="p">{</span>
<span class="n">DoThing1</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">condition</span> <span class="o">==</span> <span class="nb">false</span><span class="p">)</span> <span class="p">{</span>
<span class="n">DoThing2</span><span class="p">();</span>
<span class="p">}</span> <span class="k">else</span><span class="p">{</span>
<span class="c1">// Seriously? Whoever put this code here needs to be shot.</span>
<span class="k">throw</span> <span class="n">std</span><span class="o">::</span><span class="n">exception</span><span class="p">(</span><span class="s">"Wow, boolean is not true or false, LOL"</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>
<p>But you need to fight that urge. Put yourself into the shoes of the business or product owner and try to justify this rewrite. If this code is already in production, it’s already making someone money. Best case scenario, your newly rewritten code would do exactly what it already does from a feature perspective; worst case, and very commonly, the code is rewritten and features that customers use or that make money are were accidentally left out along the way. And hopefully you don’t introduce bugs. There are times where rewrites are justified, but those should be very rare and extreme situations.</p>
<p>Your best plan for a scenario like this is to try and refactor the code a piece at a time, as you touch each piece. This can be tricky and needs to be done carefully; you need to change the code without changing any of the functionality. If you don’t take your time and properly refactor it, instead opting for a rewrite, chances are high that you’ll miss something. Some piece of business logic that the poor soul before you put in place after something horrible happened which may have cost the company money and/or downtime.</p>
<p>Lastly, people need to use your code. Putting something out in front of customers, even if it’s not exactly what they want, is huge. It’s a way to evaluate if your code is doing its job. Many times the customer doesn’t know what they want, which is a perfect reason to take an iterative approach. Once you get feedback you can start making small tweaks. You’ll almost never get it right on your first try.</p>
<h2 id="work-hard-to-improve-your-communication-skills">Work hard to improve your communication skills</h2>
<p>Communication is hands down the most important skill for your job. It’s a vital skill for expressing ideas, thoughts and feelings, and building relationships.</p>
<h3 id="on-making-mistakes-and-taking-things-personally">On making mistakes and taking things personally</h3>
<p>Everyone makes mistakes. If you make a mistake or accidentally introduce a bug, please save everyone time by admitting you made a mistake and asking for help. Your co-workers are there to help you. If you suspect someone has introduced a bug or you think they are making a bad design decision, try to think of a constructive way to bring about a discussion.</p>
<p>Never make (or take) any criticisms personal. Be careful on how you give criticism and don’t attack people personally. If you find yourself being attacked, take a deep breath or step away for a minute. Sometimes criticism, especially if you’re stressed out, can feel like a personal attack when people choose poor words. If that is not the case and you’re flat out being attacked personally, you’ll want to bring this to human resources immediately. Having a hostile work relationship between folks is bad for everybody.</p>
<h3 id="on-asking-for-help-and-receiving-criticism">On asking for help and receiving criticism</h3>
<p>Not knowing about a topic and/or asking for help is not a sign of weakness; everybody has room for improvement. Try to think about feedback as getting free useful advice. If you take an attitude of humbleness, you open the door for folks to share their knowledge with you… not only the answer to your question, but also the “Why?” behind it. Getting a chance to learn from someone that knows more than you in a given area is a valuable opportunity. <em>When you have room to improve, you have potential to be better than you already are. If you don’t think you can possibly get better, you’re telling the world that you don’t have any potential.</em></p>
<h3 id="attitude-is-everything">Attitude is everything</h3>
<p>Be positive- it’s contagious. After you finish working on code with another person, thank them. Treat people with respect. If you don’t like ideas being presented by folks, don’t complain; brainstorm your own solution and propose it to the group. When fellow employees look up to you, support and mentor them in their growth; this is your chance to share an area of expertise to help them reach their goals.</p>
<h2 id="learning-is-a-full-time-job-and-it-never-ends">Learning is a full time job and it never ends</h2>
<p>Over my career, I’ve always found myself to go through a particular cycle:</p>
<ol>
<li>Begin learning a technology I’m not familiar with</li>
<li>Get very familiar with this technology</li>
<li>Consider myself pretty damn good at this technology</li>
<li>Meet someone better than me at this topic and become humbled, realizing “wow, I feel like a complete idiot after seeing how good that person is”</li>
<li>Continue learning this technology</li>
<li>Back to step 4, until technology is obsolete / not in demand</li>
</ol>
<p>12 years in, I’ve built myself a hefty portfolio of knowledge. I consider myself to be extremely strong with C, C++, C#, and SQL. But things change; JavaScript has blown up in popularity in the past few years. Ruby and Python both have robust frameworks (Rails, Django) with excellent testing frameworks (rspec, python-nose). After working with JavaScript/Ruby/Python daily, I’m finally at a point where I feel competent with them, but it’s been a humbling experience.</p>
<p>Just this last January, I got involved with a documentation effort for the <a href="https://emberjs.com/">Ember.js</a> framework. Jumping into this project head first, I got a chance to communicate and build a relationship with a few members of the core team and many folks in the community. While everyone I met had been extremely supportive of me, I couldn’t help but feel mediocre at best if I compare myself to these folks (when it comes to overall comprehension of JavaScript). But I realized it was an opportunity for me to go into “sponge mode”, soaking up as much knowledge as humanly possible. Getting the chance to rub elbows virtually with these folks has built up my knowledge of JavaScript significantly and also brought up my confidence level. Plus I’d like to think I’ve made a few new friends and made at least one valuable contribution. I’m still eager to continue contributing.</p>
<p>Technologies change; new languages and new ways of doing things emerge and become popular. You’ll always be going through a cycle like this and you will continue fighting the good fight until you either die or retire; it comes with the job.</p>Work at a job you love This is huge. Believe me, if you don’t love your job, it can and will eventually cause you complications in life.OCD and anxiety: a closer look2015-05-18T21:42:00-07:002015-05-18T21:42:00-07:00https://clifton.io/ocd/2015/05/18/ocd-and-anxiety-a-closer-look<p>I’m pretty open with folks about having OCD and I’ve also written briefly about my experience before in a previous blog entry, <a href="https://blog.clifton.io/living-with-ocd-anxiety/">“Living with OCD and anxiety”</a>. When people ask me about it (and I encourage them to), I’m often asked, “What type of OCD do you have?”. Do I wash my hands all the time? Or do I count tiles on the floor? <em>What’s the deal</em>?</p>
<p>I had a bad experience earlier today and while I was resting and focusing on getting better, I thought about writing in more detail what it’s like. Before I go into full detail, I’d like to assure you that (after a lot of horrible years), <em>I’ve finally got this problem under control</em>. But even with mostly perfect days, there are <em>occasionally</em> bad days which are a still a struggle.</p>
<p>The root of the problem is that I’ll get fixated on something and I can’t break out of this topic. What makes me feel better? Ultimately escaping back to my house to rest. Or in severe cases, scheduling and seeing the doctor. But you can’t go through life like that. I’ll usually try to excuse myself and either rest or take a walk. More extreme cases, I’ll pop a Xanex or if I don’t have any handy (and I’m at a restaurant), I’ll order a shot of tequila, even though I don’t drink (and from experience, you can’t mix the two!). Sometimes (but not always) these external experiences are enough to help me break the loop.</p>
<p>I’ve tried some “reprogramming” techniques using book called <a href="http://www.amazon.com/gp/product/0060987111/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0060987111&linkCode=as2&tag=bria07-20&linkId=IHXHNKZMHCSFJMQ7" target="_blank" rel="nofollow">Brain Lock: Free Yourself from Obsessive-Compulsive Behavior</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=bria07-20&l=as2&o=1&a=0060987111" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; display:inline;" />. These have helped me slightly; more with coping though. Occasionally, I’ll get lucky- like a glitch in the matrix- and my brain moves past the topic and I fully recover, like it never happened at all. But for the times where I still can’t break myself off the subject (and I can’t escape the situation), I’ll start having a panic attack.</p>
<p>These can vary from a “mild” one where I start feeling overheated, start sweating, and feel like I’m going to faint… to as strongly as feeling like giving up completely; laying in bed and feeling that I can’t deal with this anymore and on maybe two occasions (out of hundreds) thinking about ending things. When things get into the panic attack stage, I have to go into coping mode.</p>
<p>As unpleasant as these experiences are, they always pass. Knowing that doesn’t help much when they’re happening of course, because they feel like they’re never going to end. But that’s also something I’ve worked with a therapist on a few years ago and practiced. When you have an attack, there are things you can do to work your way through it. Sit down. Close your eyes. Take deep breaths and focus on the breathing. I got a workbook (which I highly recommend) called <a href="http://www.amazon.com/gp/product/1626252157/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1626252157&linkCode=as2&tag=bria07-20&linkId=LINSDKA2IULM5KN2" target="_blank" rel="nofollow">The Anxiety and Phobia Workbook</a><img src="http://ir-na.amazon-adsystem.com/e/ir?t=bria07-20&l=as2&o=1&a=1626252157" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important; display:inline" />. Going through this book has helped me work through many panic attacks. I’ve had enough success that most of the time, nobody even notices I had an issue.</p>
<p>Back to what kind of OCD I have. The closest in words I can explain is that I have hypochondriac tendencies. Usually, there’s a set of triggers that set my brain off. Any one (or a mix) of these can sometimes do it:</p>
<ul>
<li>being around a LOT of people (like an airport, convention, or a restaurant)</li>
<li>being overheated; long pants when it’s hot outside or after exercise</li>
<li>being in a situation where I am <b>stuck</b> for a period of time (on an airplane, in a food drive-thru when someone is behind me)</li>
<li>too much caffeine</li>
</ul>
<p>Those are just a few examples… and they might sound silly (and they are). But those will sometimes be enough to give me instant butterflies in the stomach and cause my brain to think, <em>“Oh wow, I feel awful”</em>. The ability to feel and sense my body appears to be heightened. I can feel the blood being pumped through my system, or acid burning my stomach walls; food moving through, or I get light headed because it feels like my brain doesn’t have enough oxygen. I raise the topic to myself, <em>“Wow, I do not feel good”</em>. I can assure myself, <em>“Body, this is you being stupid. Stop it!”</em>, but it doesn’t change anything. I know it’s not rational but I can’t change the topic. <em>“Why don’t you feel good?”; “Oh no, maybe I have a stomach issue”; “It does feel like I’m nauseous, I wonder if it’s something I ate”; …</em></p>
<p>And many times I start to think about what is everyone going to do if I fall over and “cause a scene”. I usually don’t even care about myself, I just don’t want to inconvenience other people with my stupid issue. And there’s been times I have had that happen, and I almost feel ashamed and subconsciously never want it to happen again. Several years ago, when I was working at Intel, seemingly out of nowhere, I had crippling chest pains. I was rushed to the ER and the doctors found nothing, absolutely nothing, wrong with me after many tests. And that’s the frustrating thing I’ve discovered: your mind is capable of making you feel physical pain and symptoms <em>even when there’s nothing actually wrong with you</em>.</p>
<p>All of this coupled with the fact that I’ve had several legit medical issues, it compounds the problem. I’ve had pneumonia two times and bronchitis three times (each occurrence confirmed 100% by a chest x-ray). I’ve had severe food poisoning to the point where I was rushed by ambulance to the hospital and my kidneys were in the beginning stages of experiencing failure (and I have the medical reports confirming this). When I’m having an issue, it can seem impossible for me to tell if it’s really happening or it’s just my mind making me feel like this.</p>
<p>If I ever seem on top of my game or brilliant, I think it can only be due to how often I struggle and fight versus myself. It’s a constant mental battle. I can argue with anyone but the person who’s the best at beating me is myself. But with medication, support from family and friends, and taking the time to understand the issue, I basically have things under control.</p>
<p>At the end of the day, reflecting on everything… life is great. I love everything about my life and everyone in my life. I wish I didn’t have these issues, but that’s out of my control. But there’s an awful lot I do have control over and I am proud to have such a great family, friends, and a job that I love. Getting to this point wouldn’t be an accomplishment if the struggle wasn’t as bad as it was.</p>I’m pretty open with folks about having OCD and I’ve also written briefly about my experience before in a previous blog entry, “Living with OCD and anxiety”. When people ask me about it (and I encourage them to), I’m often asked, “What type of OCD do you have?”. Do I wash my hands all the time? Or do I count tiles on the floor? What’s the deal?The meaning of life2015-01-04T00:58:07-07:002015-01-04T00:58:07-07:00https://clifton.io/thoughts/2015/01/04/the-meaning-of-life<p>Back in 2011, I found a great book:
<a href="http://www.amazon.com/gp/product/080701429X/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=080701429X&linkCode=as2&tag=bria07-20&linkId=VYQRUP7Y2YO73QWR">Man’s Search for Meaning</a> by Viktor E. Frankl</p>
<p>I don’t remember how I found this book, but I’m really glad I did; reading it was a life-changing experience for me. It’s only 165 pages long, short and easy enough that I read through it in two sittings. Last nite I saw the book in my closet and re-read most of it.</p>
<p>Viktor was a Jewish man practicing psychiatry in Vienna, Austria before World War 2. He was working on a book which argued that a search for meaning is essential to one’s mental health. In 1942, he and his family were arrested by the Nazis and sent to the Theresienstadt concentration camp. His personal belongings (including his book) were confiscated, he was separated from his family, and spent the rest of the war moving between death camps (including Auschwitz, Kaufering, and Türkheim) working as a psychiatrist and physician. He survived the experience and rewrote his book, continuing to be involved in the psychology field until his death in 1997.</p>
<p>Viktor breaks down his entire experience at these death camps psychologically in extreme detail. This was clearly a disgusting and hopeless situation that folks were forced into. When having their human dignity taken away from them and being told they were simply objects to be exterminated, some prisoners gave up completely; thinking of themselves only as part of a mass of people being herded around the camp like an animal, ultimately to their death. But some people were able to find a reason, despite everything, to continue wanting to live and dream. Still finding some form of beauty in the world.</p>
<p>He shares the words of philosopher Friedrich Nietzsche, “He who has a why to live for can bear almost any how.”</p>
<p>This ties really well into what he outlines as three ways you can discover your meaning in life:</p>
<ol>
<li>by creating a work or doing a deed; there are things that ONLY YOU can and will do</li>
<li>by experiencing something or encountering someone; the reward of the experience (for example, love), being an achievement</li>
<li>turning unavoidable suffering into a triumph; using the challenge as a personal growth experience</li>
</ol>
<p>I really like the overall message he discovers and shares… that no matter how hopeless or bad a situation is, you always retain your individuality. You can choose how you decide to react to this situation and what you’ll do to cope with it. And he recognizes that each meaningful achievement you accomplish in life… a project you finish, a relationship you cherish, an experience you overcame… is a tangible asset that you own permanently, something which nobody can take from you.</p>
<p>Viktor’s book really struck a chord with me because I’ve struggled quite a bit with mental health in the past. Being successful at your job or having material goods is not enough to make you happy. You can’t just order someone to “be happy”. Things get much clearer and there’s a definite path to happiness once you think about and identify what you want to accomplish in life (and what you’ve already accomplished). Understanding your own meaning is key to a healthy mental state.</p>Back in 2011, I found a great book: Man’s Search for Meaning by Viktor E. FranklThinking about life goals2014-02-05T01:51:21-07:002014-02-05T01:51:21-07:00https://clifton.io/thoughts/2014/02/05/thinking-about-life-goals<p>I love my life. My friends, my family… The work I do every day as a computer programmer that actually gives my life a sense of fulfillment and meaning. But I’m at a point now where I often find myself thinking in-depth about the life I’ve made for myself… asking, “What’s next?”. Projects get completed at work, paychecks come in… Personal debt goes down, balance in the retirement account goes up. When you’re a kid, you’re conditioned to think about what you want to do when you “grow up”. For me that meant figuring out what I wanted to do for my professional working life… but I don’t think I ever really put any thought into what I wanted to do with myself after I grew up.</p>
<p>When you’re young, you have the luxury of pursuing any dreams you have and honestly just doing whatever you want. You’re like an artist with a chisel in front of a solid block of marble; you can make any kind of statue you’d like. You’ll try things… they might not turn out the way you want, but you can learn from your experiences and either get better or give up and try something else. I’m not calling myself old by any means, but each year that goes by I’ve definitely gotten wiser and at the same time more ingrained in the life I’ve created for myself as things start to take shape. Sticking with that marble statue analogy, you can keep carving pieces off as you work on this masterpiece of yours and eventually, after years of doing this, you get to a point where you’ve got a pretty solid idea of what you’re working on and you have an opportunity to pause and think about how you’d like to finish the project.</p>
<p>It would be pretty easy at any given point to just say, “Fuck it”, and keep living life day to day, just seeing how things play out. But I personally think life is just way too short to do that. I’ve gotten this far and dammit, I want to have the best possible time on this planet that I can before I’m gone.</p>
<p>Using this time to reflect, I’m realizing that you’re evolving with each decision you make and the experiences you have are like chipped off pieces in this statue you’re carving. Each goal you had in life adjusts itself as time goes by, getting a higher or lower priority. This crossroads is a point where you can look at all the goals you’ve came up with for your life…the priority you’ve associated with them… and then pick the ones you’re going to do, knowing very well that there are things that you’re going to die never having accomplished.</p>
<p>For example, I’m thinking about how much I used to enjoy learning about other cultures and wanting to travel the world. I studied Japanese for about two years, Arabic and Hebrew for about a year each and I’ve always been somewhat decent at Spanish. As far as traveling, I’ve been to many of the states here in America (including Hawaii and Alaska) but internationally, I’ve only ever been to Mexico and Canada. But now I’m realizing that I’ll probably never see the world and I’m perfectly OK with that. And becoming proficient in any language other than Spanish? Not to sell myself short, but I really don’t think that’s happening. Which is hard to accept, thinking about the adventure of going to Europe and backpacking… or visiting Egypt to see the pyramids, or castles, gardens and pagodas in Japan. But at this point in my life, as much as I’d love to speak several languages fluently and be this amazing world traveler, there are ultimately other things I’d rather be doing which shove this dream further and further down the “bucket list”.</p>
<p>I guess the overall theme I’m writing about here is focusing. When you start to realize what your favorite things in life are, what you love doing… it’s really hard to justify doing something else. There’s just not enough time, which really sucks. But I’d rather spend a lot of time doing the things I’ve loved than to spent a little time doing a whole bunch of things that I think are just “OK”. So after all this deep thought and reflection, what are some of those goals?</p>
<h2 id="making-a-difference-in-peoples-lives">Making a difference in people’s lives</h2>
<p>Through my job I’m getting a chance to work on great products that can make a difference in people’s lives. And although it’s hard to measure, I’d like to think I’ve personally made a big impact on coworkers at every job I’ve been at. I don’t think there are many people that forget me, that’s for sure. Whether it’s kicking ass at the project I’m working on, mentoring someone, jumping in to help fire-fight issues that come up, or just trying to keep team morale high and facilitate good communication, I want to make a difference. Outside of work too, helping people work through issues and making a positive difference in their life.</p>
<h2 id="paying-off-all-of-my-debt">Paying off all of my debt</h2>
<p>This is a huge one and it’s not exactly fun either. In fact, it sucks. I think anybody would rather be taking a trip overseas or buying a sports car. But the reality is, all I have left that I owe are my wife’s student loans and the mortgage on my house. After those are paid, I don’t owe anybody a penny. And that’s huge in my opinion.</p>
<h2 id="being-in-better-shape-and-being-there-for-my-son">Being in better shape and being there for my son</h2>
<p>I’m not morbidly obese but I’m not skinny. And body size aside, I’m in embarrassingly bad shape, cardio-wise. If you know me, you’ll know how I have a hard time staying away from sweets and diet soda, things that are just rotting my body away. Those things do help push me through crunch times, but I’ve got a son now and I want to be able to do an activity without falling over and having a heart attack. It would be awfully hard to be a good dad sitting on the couch.</p>
<h2 id="living-in-hawaii">Living in Hawaii</h2>
<p>I’ve only vacationed in Hawaii twice but I’ve spent almost a month and a half there total. I’ve been to Oahu, Maui, Lanai, and the big island. And later this year I’ll be going back there for my brother’s wedding, this time in Kauai. I love the beaches, the parks, and the weather. It’s really easy to idolize a place like this and think going there will “make my life complete”; but I’d honestly like to see if I could get bored of a place like this. That sounds like a great challenge to me.</p>I love my life. My friends, my family… The work I do every day as a computer programmer that actually gives my life a sense of fulfillment and meaning. But I’m at a point now where I often find myself thinking in-depth about the life I’ve made for myself… asking, “What’s next?”. Projects get completed at work, paychecks come in… Personal debt goes down, balance in the retirement account goes up. When you’re a kid, you’re conditioned to think about what you want to do when you “grow up”. For me that meant figuring out what I wanted to do for my professional working life… but I don’t think I ever really put any thought into what I wanted to do with myself after I grew up.2013: A year of releases2014-01-03T01:18:43-07:002014-01-03T01:18:43-07:00https://clifton.io/accomplishments/2014/01/03/2013-year-of-releases<p>The past few months have been life changing in a lot of ways.</p>
<p>In my free time over the past 2 years, a group of friends and I formed a company and have been working hard to finish creating a game that some of us had originally started in 2002. We made great progress, this time targeting the Xbox 360… and then I found out my wife Margarita and were expecting our first baby. It quickly became a race to finish the game before the baby was due in September.</p>
<p>Morgopolis Studios
The friendly staff of Morgopolis Studios, creators of Magicians & Looters
We put in a lot of hard work and finished our game, Magicians & Looters, in August… our first live sales day in the Xbox Live Indie Games store was actually August 23rd. Finishing this game was a huge personal accomplishment for me. Before moving to Arizona, I had never been able to talk about programming or game design with anyone before, at least face-to-face. The closest experience I had was with a great friend of mine, Bill, who I met on AOL in 1993, back when I was a HyperCard developer. We’d talk for hours long distance on the phone about code; nobody I knew in “real life” was very interested in programming. I moved to Arizona in 2001 to attend a school called UAT and this introduced me to a lot of great people that DID like writing code, many that I still talk with regularly. Two of those people are Dan and Justin. The three of us (along with a fourth member, Brad) were members of the game development club, we came up with a “simple” game project that we could all work on and (hopefully) finish. We worked on the game for a good 2 years before calling it quits. It’s not that we didn’t want to finish the game, it’s just that we needed to go out there and get jobs after graduating.</p>
<p>Working on Magicians & Looters back in 2002 at UAT
Working on Magicians & Looters back in 2002 at UAT
I jumped into the business world, getting much better at what I do over the years and writing lots of great code along the way… but Magicians & Looters would pop into my head every so-often. Justin put an amazing amount of work into the art and story of the game and I always felt ashamed that we never really got to put it in front of anybody, other than our friends back in the university days. So when we FINALLY finished the game, released it, and started getting feedback… wow, it was an amazing time for me. Good or bad, I was delighted to just see people talking about our game. Luckily, it was fairly well received, which made that feeling even more warm and fuzzy.</p>
<p>http://thexblig.com/2013/08/25/review-magicians-looters/
http://www.fateofthegame.com/indie-review-magicians-looters/
http://indiegamerchick.com/2013/09/11/magicians-looters/
Not quite one month after getting our game out there, my wife Margarita and I had our first kid, a healthy baby boy named Michael. We were at the hospital for a week solid; before that time, I don’t think the reality of being a dad had really “hit me” yet. It was (and is) a really cool experience. The baby was delivered via C-section because of some complications and I got to be there with her for all of it. Me being nervous of course, I tell the doctors before they take the baby out, “Hey guys, if that baby is black, I’m leaving” and got a few laughs… and the next thing you know, I’m holding a baby. I cut the umbilical cord and basically spent every moment for the next few days with Margarita and our new baby, trying to figure out the whole dad thing. As of right now, Mikey just hit 3 months and he’s doing great; I’m really enjoying being a dad.</p>
<p>Clifton men
Clifton men just snoozing; the pack leader,the new baby, and the pooch
During the whole pregnancy and also the development cycle with Magicians & Looters, work at my actual job had been extremely busy. I work in the hosting department of GoDaddy and am part of the development team which works on Plesk Hosting, Windows Server 2012 hosting using the Parallels Plesk control panel. This is a new product we created from the ground up in a matter of months and I was thrilled to be a part of this. All of our development lead up to October, when we planned to launch and start selling the product to customers. A ton of hard work went into this product by everybody on our team. 3 days after Michael was born, I was back at work, writing code and working on tasks. We hit our goal and released in October and we’ve been improving the product ever since.</p>
<p>Plesk Hosting
The product I worked on, Plesk Hosting
So in retrospect, 2013 was a great year… a life changing one. I’m extremely proud of all three of my accomplishments: Releasing a video game, having a baby, and releasing a new hosting product.</p>The past few months have been life changing in a lot of ways.Living with OCD and anxiety2011-11-27T01:44:15-07:002011-11-27T01:44:15-07:00https://clifton.io/ocd/2011/11/27/living-with-ocd-anxiety<p>I’ve always had a hard time relaxing because my brain doesn’t know how to stop working. When I was younger, I could force myself to relax by having a few beers. This worked great for me as a teenager up and through college. I built up enough of a tolerance that I could slam a 12 pack in a 3 hour span and still write complex computer code. It got to a point where I was drinking almost every day. This obviously isn’t a great way to live your life and I ended up getting a DUI in 2005 (I wrote about that experience in a previous blog entry, “Life experience: Driving under the influence”). Part of the sentence given to me was attending counseling for a few months. After talking about alcohol for so many hours, drinking lost all of its appeal and no longer helped me relax.</p>
<p>Without a way to relax, my brain would keep spinning. It gets fixated and stuck on a subject for long periods of time, to the point where I feel physically ill. I would have an upset stomach and feel extremely fatigued all the time. I’d always feel tense and on-edge. These physical symptoms started to affect my social life. I would ditch events with my best friends because I didn’t feel good. Quite often I’d start feeling light headed out of nowhere and a few times I fainted. One day when I was working at Intel, I started having unbearable chest pains. The nurse came, checked me out, and called an ambulance for me. I really had to figure out what was happening to me. With all these physical issues, my brain is starting to second guess how I feel all the time, making the problem even worse.</p>
<p>In 2006, I spent a lot of time and money running tests at specialty doctors. I was diagnosed by one doctor as having Celiac disease, an allergy to gluten. I switched my diet and quit eating wheat and gluten products altogether for about a year and it did help. I lost weight and started to feel better. But the problem was still there. I got retested, this time taking a biopsy, and it turns out I didn’t have Celiac disease. I did barium tests, an endoscopy, and a colonoscopy. I had CAT scans, MRIs, just about every test in the book. The only diagnosis I got was IBS (Irritable Bowel Syndrome). There was a gastrointestinal doctor I had saw and he told me straight up that the problem is in my head; there is no physical issue. I was insulted; what an idiot. I’m definitely not crazy.</p>
<p>Sometime in 2007, I flew up to Hillsboro Oregon one time for a 3 day business trip. I’ve been there a few times, my team was actually located there. I was working on a project with a few people and really needed the face time to finish the project. The first day was really great, I had a good time and we got some good work done. I was reviewing code with a few other folks and it was really nice to see them in person. The second day I made it about halfway through the day before I started to feel ill. I excused myself towards the end of the day and went back to the hotel.</p>
<p>I stayed in the room for a few hours, trying to sleep and relax, but this time I couldn’t handle it. Something is wrong with me. With all the tests I had done coming back with me being fine, the problem had to be in my head. That stupid doctor was right all along. This was hands down the hardest thing I’ve ever had to accept in my life. I felt like a weak piece of crap for not being able to beat this, especially considering how good my problem solving skills are. I had a break down that night and called my stepmom and let her know what was going on. I had no idea what to do with myself at this point. I ended up canceling my stay and leaving Hillsboro early the next morning.</p>
<p>When I got back home, I started seeking out mental health experts. I met with the first person who was available, a lady named Danielle. After a few visits she diagnosed me with OCD (Obsessive Compulsive Disorder). It was great having a name for the problem and a plan for how to treat it. The really horrible feelings I have been having were called panic attacks. These are seriously the worst thing I’ve ever experienced in my life. You get pumped up with adrenaline, your muscles get all tense, you start hyperventilating. It got to the point where I was obsessing and getting scared about having panic attacks. What happens if I go out and meet with my friends and an attack happens? These attacks were happening several times a week, sometimes several times a day.</p>
<p>I got on medicine. It took a few weeks to kick in but I started to feel better. Much better. The thing I noticed the most after taking the medicine was that I started to feel extremely happy again. After living with this problem for almost 3 years without a way to relax, I was seriously suffering from depression. It’s weird admitting that because I didn’t feel sad or anything. I guess I just didn’t feel happy.</p>
<p>Every day since then, my life has gotten much better. Relaxing is much easier. Once I started taking that medicine, I started to feel like myself again. I started having feelings I hadn’t had in years. Things just kept getting better. I switched jobs and now I’m doing something that I love every day. I met a great girl and ended up getting married. I never pictured myself where I am today when I was struggling with those issues.</p>
<p>I still deal with the issue, it’s just nowhere near as bad as it was. As much as I’d like it to just go away, it hasn’t. Every day I take steps to get myself in better shape. There are good days and bad days. However, like any problem out there, once you know the root cause, it’s a lot easier to solve the problem. The hardest part through it all was knowing my thoughts were irrational but just not being able to make them stop. In my case, it was not even possible for my mind to overcome the issue. I had to get medicine to get my brain up and running again.</p>
<p>So that’s what I’ve been dealing with for the past few years. Feels really good to sit down and reflect on it. If you know me personally, you’ll know how I joke about being crazy. I’m not insane, but these are the issues I’ve been dealing with.</p>I’ve always had a hard time relaxing because my brain doesn’t know how to stop working. When I was younger, I could force myself to relax by having a few beers. This worked great for me as a teenager up and through college. I built up enough of a tolerance that I could slam a 12 pack in a 3 hour span and still write complex computer code. It got to a point where I was drinking almost every day. This obviously isn’t a great way to live your life and I ended up getting a DUI in 2005 (I wrote about that experience in a previous blog entry, “Life experience: Driving under the influence”). Part of the sentence given to me was attending counseling for a few months. After talking about alcohol for so many hours, drinking lost all of its appeal and no longer helped me relax.