<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Justin Carmony &#187; Programming</title>
	<atom:link href="http://www.justincarmony.com/blog/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.justincarmony.com/blog</link>
	<description>Web Designer &#38; Software Engineer</description>
	<lastBuildDate>Wed, 01 Feb 2012 04:30:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mac OS X &amp; Wireshark &#8211; No Interfaces Found Fix</title>
		<link>http://www.justincarmony.com/blog/2011/05/12/mac-os-x-wireshark-no-interfaces-found-fix/</link>
		<comments>http://www.justincarmony.com/blog/2011/05/12/mac-os-x-wireshark-no-interfaces-found-fix/#comments</comments>
		<pubDate>Thu, 12 May 2011 18:58:57 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[wireshark]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=914</guid>
		<description><![CDATA[Alright, quick fix for a problem I always forget. When running Wireshark on OS X, when I go to select an interface to capture on, I get an error telling me there are no available interfaces to capture on. This is because Wireshark is running as a user that doesn&#8217;t have ownership on these interfaces. ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/10/ubuntu-desktop-terminal-su/' rel='bookmark' title='Ubuntu Desktop Terminal &#8211; Su'>Ubuntu Desktop Terminal &#8211; Su</a></li>
<li><a href='http://www.justincarmony.com/blog/2011/02/02/mysql-stored-procedure-name_const-and-character-sets/' rel='bookmark' title='MySQL Stored Procedure, NAME_CONST, and Character Sets'>MySQL Stored Procedure, NAME_CONST, and Character Sets</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/05/wireshark-logo.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/05/wireshark-logo-300x92.png" alt="" title="wireshark-logo" width="300" height="92" class="alignright size-medium wp-image-915" /></a>Alright, quick fix for a problem I always forget. When running Wireshark on OS X, when I go to select an interface to capture on, I get an error telling me there are no available interfaces to capture on. This is because Wireshark is running as a user that doesn&#8217;t have ownership on these interfaces.</p>
<p>Solution, open up the terminal and run the command:</p>
<p><code>sudo chown &lt;username&gt; /dev/bpf*</code></p>
<p>After a reboot, these permissions get reset, so you need to do it after each reset (and hence why I need this every now and then but can never remember the command).</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/02/14/xampp-for-mac-my-frustrations-solutions/' rel='bookmark' title='XAMPP for Mac &#8211; My Frustrations &amp; Solutions'>XAMPP for Mac &#8211; My Frustrations &#038; Solutions</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/10/ubuntu-desktop-terminal-su/' rel='bookmark' title='Ubuntu Desktop Terminal &#8211; Su'>Ubuntu Desktop Terminal &#8211; Su</a></li>
<li><a href='http://www.justincarmony.com/blog/2011/02/02/mysql-stored-procedure-name_const-and-character-sets/' rel='bookmark' title='MySQL Stored Procedure, NAME_CONST, and Character Sets'>MySQL Stored Procedure, NAME_CONST, and Character Sets</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2011/05/12/mac-os-x-wireshark-no-interfaces-found-fix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How I Became a Web Developer &amp; CTO</title>
		<link>http://www.justincarmony.com/blog/2011/02/23/how-i-became-a-web-developer-cto/</link>
		<comments>http://www.justincarmony.com/blog/2011/02/23/how-i-became-a-web-developer-cto/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 11:57:56 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[cevo]]></category>
		<category><![CDATA[clipish]]></category>
		<category><![CDATA[cto]]></category>
		<category><![CDATA[Dating DNA]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[kiosks]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=763</guid>
		<description><![CDATA[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&#8217;ll try and track down the original files and update the screenshots. Today some memories ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/07/15/web-development-10-years-ago-now/' rel='bookmark' title='Web Development 10-Years Ago &amp; Now'>Web Development 10-Years Ago &#038; Now</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/15/being-a-productive-developer/' rel='bookmark' title='Being a Productive Developer'>Being a Productive Developer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>Note: many of the screenshots of websites I had done in the past are from the <a href="http://www.archive.org/web/web.php">Internet Archive</a> and many of the images are missing. But it can give an idea on the projects I had worked on. One day I&#8217;ll try and track down the original files and update the screenshots.</em></p>
<p>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 <em>unique</em> way I became a web developer. I never went to school to learn Computer Science or Information Systems. I&#8217;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 <a href="http://en.wikipedia.org/wiki/Warcraft_II:_Tides_of_Darkness">Warcraft 2</a> by my classmate Daren (We all got A&#8217;s, we had just finished the entire coursework in 2 and a half weeks). </p>
<p>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.</p>
<h3>Heritage</h3>
<p><span id="more-763"></span></p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/photoshop3.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/photoshop3-150x150.png" alt="Photoshop 3" title="photoshop 3" width="150" height="150" class="alignright size-thumbnail wp-image-764" /></a>How I ended up in Technology to begin with is probably because part of it is in my blood. My Father, <a href="http://kevincarmony.com/kcprofessional.htm">Kevin Carmony</a>, 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. </p>
<p>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) <a href="http://en.wikipedia.org/wiki/Microsoft_FrontPage">Microsoft FrontPage</a> in 1997. There were also a couple of website books laying around that I would read, or at least try to.</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/visual_studio_6.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/visual_studio_6-150x150.jpg" alt="" title="visual_studio_6" width="150" height="150" class="alignright size-thumbnail wp-image-785" /></a>On the other side of the equation was my mother, while herself wasn&#8217;t extremely technical, encouraged and &#8220;sponsored&#8221; 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 &#8220;high&#8221; 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 &#8220;Provo&#8221; dial-up connection instead of the broken &#8220;Ogden&#8221; phone number. I even once ordered a &#8220;temporary&#8221; AOL dial-up account, with her credit card and <strong>without</strong> 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 &#8220;expenses&#8221;, 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.</p>
<p>She was also very patient with a son whose grades weren&#8217;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&#8217;t bad, just not great), but I wouldn&#8217;t have learned what I did, <strong>nor make the connections that eventually fast tracked my career</strong>. I owe her a great deal (I love you mom!)</p>
<h3>Humble Beginnings</h3>
<p>I first learned about websites, and how <strong>I</strong> could make them, while sitting in my 7th Grade Band Class. My fellow clarinet player Kenny Cottrell explained to me in between songs about <a href="http://en.wikipedia.org/wiki/HTML">HTML</a>, <a href="http://en.wikipedia.org/wiki/Notepad_%28software%29">Notepad</a>, 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&#8217;s home printer. Single page, of course, because I couldn&#8217;t figure out how to easily do double page, and it was on her expensive laser printer (this was 1997) with expensive cartridges. </p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/amazon1999.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/amazon1999-150x150.png" alt="Amazon in 1999" title="Amazon in 1999" width="150" height="150" class="alignright size-thumbnail wp-image-765" /></a>My very first website was hosted on one of my father&#8217;s web servers, and using FrontPage, I made a website about a game called <a href="http://en.wikipedia.org/wiki/The_Realm_Online">The Realm</a>, one of the very first graphical Massive Multiplayer Online games (MMO, think World of Warcraft). It was bad, really bad. I can&#8217;t find any pictures or old files from it, but you can take my word for it. When spending weekends at my Grandma&#8217;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 <a href="http://www.amazon.com/">Amazon</a>&#8216;s rounded corner tabs for <strong>hours</strong> trying to get mine to look just as nice.</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/granstre_screen018.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/granstre_screen018-150x150.jpg" alt="The Granstream Saga for PSX" title="The Granstream Saga for PSX" width="150" height="150" class="alignright size-thumbnail wp-image-768" /></a>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 <a href="http://en.wikipedia.org/wiki/Final_Fantasy_VII">Final Fantasy VII</a>, <a href="http://en.wikipedia.org/wiki/Suikoden_%28video_game%29">Suikoden I</a> &#038; <a href="http://en.wikipedia.org/wiki/Suikoden_II">II</a>, and even more obscure (and terrible) titles like <a href="http://en.wikipedia.org/wiki/The_Granstream_Saga">The Granstream Saga</a>. 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 <a href="http://en.wikipedia.org/wiki/Breath_of_Fire_III">Breath of Fire 3</a> 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&#8217;t half bad. However, I don&#8217;t have a screenshot of how the old site used to look.</p>
<h3>Counter-Hack</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/CSS_Hacked.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/CSS_Hacked-150x150.jpg" alt="Counter-Strike Source Hack" title="Counter-Strike Source Hack" width="150" height="150" class="alignright size-thumbnail wp-image-770" /></a>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 <a href="http://en.wikipedia.org/wiki/Counter-Strike">Counter-Strike</a>. It was a <a href="http://en.wikipedia.org/wiki/First-person_shooter">First Person Shooter</a>, and it was a lot of fun. However, at the same time, there were a lot of these &#8220;cheats&#8221; and &#8220;hacks&#8221; programs that were coming out. My friends and I would be accused of &#8220;cheating&#8221; and &#8220;hacking&#8221; when in reality we weren&#8217;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.</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/counterhack-v1.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/counterhack-v1-150x150.png" alt="Very First Version of Counter-Hack" title="Very First Version of Counter-Hack" width="150" height="150" class="alignright size-thumbnail wp-image-780" /></a>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&#8217;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&#8217;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 <a href="http://www.anthonyro.com/">Anthony Ouwehand</a> (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&#8217;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. </p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/Capture.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/Capture-150x150.png" alt="Counter Hack Version 3 by Anthony" title="Counter Hack Version 3 by Anthony" width="150" height="150" class="alignright size-thumbnail wp-image-782" /></a>During the years with Counter-Hack, a few highlights were interviews with Wired for news stories, working with Valve Software to help recover the <a href="http://en.wikipedia.org/wiki/Half-Life_2#Leak">HL2 Leak</a>, and an interview and article with Rolling Stone Magazine. During it&#8217;s height, Counter-Hack was covering dozens of games with hundreds of thousands of visitors a month. During it&#8217;s later years, Counter-Hack implemented a Wiki system for much of it&#8217;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&#8217;t have asked for a better experience. I learned a lot before even starting college.</p>
<h3>Developing Out of Necessity for CEVO</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v1.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v1-150x150.jpg" alt="CEVO Version 1" title="CEVO Version 1" width="150" height="150" class="alignright size-thumbnail wp-image-774" /></a>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 <a href="http://www.cevo.com/">CEVO</a>. 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 &#8220;hacking&#8221; 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 <a href="http://www.linkedin.com/in/rivulent">Eric Ping</a> to be the CTO, and the company started to grow.</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v3.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v3-150x150.jpg" alt="CEVO Version 3" title="CEVO Version 3" width="150" height="150" class="alignright size-thumbnail wp-image-776" /></a>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&#8217;t handle it all, and since we didn&#8217;t have the funds to hire another developer, I thought since I knew something about web design and programming, I could help out.</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v4.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-v4-150x150.jpg" alt="CEVO Version 4" title="CEVO Version 4" width="150" height="150" class="alignright size-thumbnail wp-image-777" /></a>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&#8217;s code, but now I was really learning. I was also learning extremely quickly because I had no other option. It wasn&#8217;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: <strong>myself</strong>. 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&#8217;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 &#8220;Jr. Developer&#8221; wouldn&#8217;t have hands-on experience dealing with. </p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-current.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/cevo-current-150x150.jpg" alt="CEVO Current Version" title="CEVO Current Version" width="150" height="150" class="alignright size-thumbnail wp-image-778" /></a>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.</p>
<h3>Ambient Partners, LLC</h3>
<p>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&#8217;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. </p>
<p>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 &#8220;white-label&#8221; 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: &#8220;Justin, money is tight and we can&#8217;t afford to keep you on staff if you&#8217;re unable to make real progress on RBO. Either we need to see some real progress very soon, or staffing changes will be made.&#8221;</p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/blockbuster-express.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/blockbuster-express-150x150.png" alt="" title="blockbuster-express" width="150" height="150" class="alignright size-thumbnail wp-image-771" /></a>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 <a href="http://www.blockbusterexpress.com/">Blockbuster Express</a>, it is powered by the same web services I built in 2007. </p>
<p>After building RBO, I was tasked with building a reporting &#038; 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 &#8220;executive reporting tool.&#8221; 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&#8217;s auto-updater system), Ambient Partners was purchased by <a href="http://www.ncr.com/">NRC</a>.</p>
<h3>Dating DNA</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/ddna-0.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/ddna-0-150x150.jpg" alt="Dating DNA" title="Dating DNA" width="150" height="150" class="alignright size-thumbnail wp-image-787" /></a>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. </p>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/datingdna-1.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/datingdna-1-150x150.jpg" alt="" title="datingdna-1" width="150" height="150" class="alignright size-thumbnail wp-image-788" /></a>My father at the same time was working on his new business: <a href="http://www.datingdna.com/">Dating DNA</a>. 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&#8217;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.</p>
<p>Through 2008 and 2009 I worked as a full-time developer for Dating DNA. I took over all responsibilities for all their technology. <a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/ddna-iphone.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/ddna-iphone-150x150.jpg" alt="" title="ddna-iphone" width="150" height="150" class="alignright size-thumbnail wp-image-789" /></a>In those two years, we did a lot. I&#8217;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&#8217;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.</p>
<h3>Alienware &#038; CEVO</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/alienware-arena.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/alienware-arena-150x150.png" alt="" title="alienware arena" width="150" height="150" class="alignright size-thumbnail wp-image-772" /></a>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&#8217;t done before in CEVO. Dell&#8217;s brand <a href="http://www.alienware.com/">Alienware</a> wanted us to make them a website like CEVO&#8217;s, only completely branded for Alienware. We built, from the ground up, and custom solution for Dell and Alienware, and <a href="http://www.alienwarearena.com/">Alienware Arena</a> 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&#8217;s look and feel, and I&#8217;m very proud with the result. It was built by myself, Eric Ping, and our new talented developer Mike Stevens. While I can&#8217;t say how many members Alienware Arena now has, it is <strong>a lot</strong>. Building such a successful website for a large company like Dell doesn&#8217;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.</p>
<h3>Utah Open Source</h3>
<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/utosc.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/02/utosc-150x150.jpg" alt="" title="utosc" width="150" height="150" class="alignright size-thumbnail wp-image-792" /></a>One thing that happened in November 2008 that I would consider one of the crucial events that &#8220;fast-tracked&#8221; my education as a web developer was being introduced to the local Open Source groups in Utah. I <a href="http://www.justincarmony.com/blog/2008/11/13/speaking-utah-php-usergroup-streamlined-web-development/">spoke</a> at the <a href="http://uphpu.org">Utah PHP Usergroup</a> and was introduced to the <a href="http://utos.org">Utah Open Source Foundation</a>. 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 <a href="http://nginx.org/">nginx</a>, <a href="http://www.nagios.org/">nagios</a>, <a href="http://redis.io/">redis</a>, <a href="http://memcached.org/">memcached</a>, <a href="http://php.net/manual/en/book.apc.php">php apc</a>, linux server administration, and <a href="http://git-scm.com/">Git</a> just to name <em>a few</em> 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, <strong>and</strong> knew people I could ask questions too. That, and I&#8217;ve made a lot of great friends through the different meetings, lunches, and <a href="http://www.flickr.com/search/?q=%23utosc&#038;s=rec#page=0">conferences</a>. I&#8217;ve picked up some contract work through my connections with these groups, and overall they have been extremely beneficial and great.</p>
<h3>Chief Technology Officer</h3>
<p>All of these different things played a part in me having the job I have today, CTO of Dating DNA. <a href="http://www.justincarmony.com/blog/2010/10/19/new-job-cto-of-dating-dna/">I&#8217;ve written already</a> about my new responsibilities as our new CTO, and what it means for the company. These few short months as CTO we&#8217;ve made a lot of changes to handle even more scaling (especially with holiday surges and such). We&#8217;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&#8217;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.</p>
<h3>Advice &#038; Lessons Learned</h3>
<p>After reading and thinking about the different things I&#8217;ve experienced and gone through to get me to this point, I&#8217;ve had a few thoughts that I think can help anyone in our field, and other fields of work:</p>
<ul>
<li><strong>Surround yourself by people who help each other learn</strong> &#8211; 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.</li>
<li><strong>Always be learning something new, always</strong> &#8211; Trust me, there is always something to learn in this industry. Even if you&#8217;re learning something that isn&#8217;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 &#8220;course&#8221; of &#8220;holy crap, we need to get this done and working or we crash and burn.&#8221; Even to this day, a lot of the things I learned about how hacks work I apply in other areas of computer science.</li>
<li><strong>Don&#8217;t let formal education be your <em>only</em> source of knowledge</strong> &#8211; Those that know me know I can be a little &#8220;harsh&#8221; 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&#8217;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.</li>
<li><strong>Apply and build something important to you</strong> &#8211; There isn&#8217;t a better teacher than experience, and getting is as soon as possible, and as frequent as possible, will help a lot. I&#8217;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.</li>
<li><strong>Networking and getting to know people is crucial</strong> &#8211; 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&#8217;s CTO, and the rumor went out I was considering a new job, I had <strong>a lot</strong> of people contact me to see if I was interested in certain positions. There is no down side to being a &#8220;social&#8221; developer. Just because this isn&#8217;t &#8220;Marketing&#8221; doesn&#8217;t mean social networking isn&#8217;t important. I personally don&#8217;t like the term &#8220;networking&#8221; 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.</li>
<li><strong>Love what you do</strong> &#8211; If you don&#8217;t love what you do, then there is a good chance you will not go far in this industry. It doesn&#8217;t mean this is the <em>only</em> thing you do. Other hobbies and activities are important. But if you dread going to work, and do your work, every day, then it&#8217;s time to find something else.</li>
</ul>
<p>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&#8217;t look terrible. I look forward to the next few decades to see where web technology takes us.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/07/15/web-development-10-years-ago-now/' rel='bookmark' title='Web Development 10-Years Ago &amp; Now'>Web Development 10-Years Ago &#038; Now</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/15/being-a-productive-developer/' rel='bookmark' title='Being a Productive Developer'>Being a Productive Developer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2011/02/23/how-i-became-a-web-developer-cto/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Debuging with PHP, Stack Traces, and Redis</title>
		<link>http://www.justincarmony.com/blog/2011/01/10/debugging-with-php-stack-traces-and-redis/</link>
		<comments>http://www.justincarmony.com/blog/2011/01/10/debugging-with-php-stack-traces-and-redis/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 23:22:56 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=722</guid>
		<description><![CDATA[A cool new trick I found with debugging pieces of code and how often they get executed. We were running into a problem where an expensive query was being called more frequently than I thought it should. This query was only found inside of a single member of a class. However, this class, which retrieves ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2011/01/07/creating-chatroom-walls-with-redis-and-php/' rel='bookmark' title='Creating Chatroom / Walls with Redis &amp; PHP'>Creating Chatroom / Walls with Redis &#038; PHP</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/20/nerfing-a-php-object/' rel='bookmark' title='&#8220;Nerfing&#8221; a PHP Object'>&#8220;Nerfing&#8221; a PHP Object</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/02/19/ms-sql-2005-t-sql-row-count-for-each-table/' rel='bookmark' title='MS SQL 2005 (T-SQL) Row Count for Each Table'>MS SQL 2005 (T-SQL) Row Count for Each Table</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/01/php-logo.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2011/01/php-logo-300x210.jpg" alt="" title="php-logo" width="300" height="210" class="alignright size-medium wp-image-724" /></a>A cool new trick I found with debugging pieces of code and how often they get executed. We were running into a problem where an expensive query was being called more frequently than I thought it should. This query was only found inside of a single member of a class. However, this class, which retrieves a user&#8217;s photo album, is used all over the place. So it was really hard to determine exactly where the unneeded queries being executed from. </p>
<p>This is where <a href="http://redis.io/">Redis</a> comes in. I hate doing any extensive logging to disk on a production server, however sometimes you need to do some logging to track down a bug. With Redis, it instead would be logged to memory and periodically written to file. So it was very, very quick, and did not slow down anything on production.</p>
<p>So to log where how many times our class was being called, we used PHP&#8217;s <a href="http://php.net/manual/en/function.debug-backtrace.php">debug_backtrace()</a> function. This would return an array with each row holding information about the stack trace. Using this, we could identify the different parts of our program that was using our class and this SQL statement. I used <a href="http://rediska.geometria-lab.net/">Rediska</a> as a PHP library to communicate with Redis.</p>
<p>So, inside of our class right before the SQL statement, I included this code:</p>
<pre class="brush: php; title: ; notranslate">
// Get Instance of Rediska for the Debug Connection
$redis = new Rediska_Manager::get('debug');

$stacktrace = debug_backtrace();

// Loop through the stacktrace
foreach($stacktrace as $k =&gt; $v)
{
    // Unset args and object variables, since they will throw off our hash calculation.
    unset($stacktrace[$k]['args']);
    unset($stacktrace[$k]['object']);
}

// Start an output buffer to capture the var_dump;
ob_start();
var_dump($stacktrace);
$print = ob_get_contents();
ob_end_clean();

// Hash what it returns, since it will the same each time for each stacktrace
$hash = md5($print);

// Increment the count
$redis-&gt;increment('debug.photoAlbum.count:'.$hash);
// Set the Content of the Stack Trace so it can be read later.
$redis-&gt;set('debug.photoAlbum.content:'.$hash, $print);
</pre>
<p>Few important lines to note. We unset &#8216;args&#8217; and &#8216;object&#8217; because it will unique for each function call, we just want to know where the function is being called. We then set two values to redis, one to hold the count, and another to hold the content.</p>
<p>Now, to read the data, I just made a PHP script:</p>
<pre class="brush: php; title: ; notranslate">
// Get Instance of Rediska for the Debug Connection
$redis = new Rediska_Manager::get('debug');
// Get all the keys matching the patern for the counts.
$keys = $redis-&gt;getKeysByPattern('debug.photoAlbum.count*');

$sorted = array();
$strings = array();

$total = 0;

// loop through the keys to strip out the hash
foreach($keys as $key)
{
    // Get the hash part
    $parts = explode(':', $key);
    $hash = $parts[1];

    $count = $redis-&gt;get('debug.photoAlbum.count:'.$hash);

    $total += $count;

    $string = &quot;Count (&quot;.$hash.&quot;): &quot;.$count.&quot;\n&quot;
            .$redis-&gt;get('debug.photoAlbum.content:'.$hash).&quot;\n&quot;
            .&quot;\n\n\n&quot;;

    $sorted[$hash] = $count;
    $strings[$hash] = $string;
}

// Reverse Sort by Numberic numbers
arsort($sorted, SORT_NUMERIC);

echo &quot;Grand Total: &quot;.$total.&quot;\n\n&quot;;

foreach($sorted as $hash =&gt; $count)
{
    echo $strings[$hash];
}
</pre>
<p>A few notes, first off, the <a href="http://redis.io/commands/keys">KEYS</a> function for Redis has some limitations. Mainly, it should be used sparingly, and only for admin pruposes. The documentation explains it pretty well. </p>
<p>Second, this script will sort by count and print the count along with the content of the stack trace.</p>
<p>This helped me identify a situation where it was calling the class several times instead of just once. The bottom line is, after figuring out the problem spot, we were able to fix it, saving us several thousand expensive queries every hour. I highly recommend this technique for debugging issues on production servers. Its working well for me.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2011/01/07/creating-chatroom-walls-with-redis-and-php/' rel='bookmark' title='Creating Chatroom / Walls with Redis &amp; PHP'>Creating Chatroom / Walls with Redis &#038; PHP</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/20/nerfing-a-php-object/' rel='bookmark' title='&#8220;Nerfing&#8221; a PHP Object'>&#8220;Nerfing&#8221; a PHP Object</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/02/19/ms-sql-2005-t-sql-row-count-for-each-table/' rel='bookmark' title='MS SQL 2005 (T-SQL) Row Count for Each Table'>MS SQL 2005 (T-SQL) Row Count for Each Table</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2011/01/10/debugging-with-php-stack-traces-and-redis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goal for 2011: Learn C</title>
		<link>http://www.justincarmony.com/blog/2010/12/29/goal-for-2011-learn-c/</link>
		<comments>http://www.justincarmony.com/blog/2010/12/29/goal-for-2011-learn-c/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 02:09:53 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[iPhone SDK]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=687</guid>
		<description><![CDATA[I feel this is one area of my computer science education that is rather weak. The years I spent in schooling learning C, C++, or another derivative, either my teachers / professors really didn&#8217;t teach it well, or were only around of half a semester. Truly, computer science teachers when I was in school were ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/05/20/iphone-sdk-learning-the-basics-by-removing-the-touch/' rel='bookmark' title='iPhone SDK &#8211; Learning the Basics by Removing the Touch'>iPhone SDK &#8211; Learning the Basics by Removing the Touch</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/21/wordpress-oop/' rel='bookmark' title='WordPress &amp; OOP'>WordPress &#038; OOP</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/08/29/project-management-and-entrepreneurship/' rel='bookmark' title='Project Management &amp; Entrepreneurship'>Project Management &#038; Entrepreneurship</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/12/c_programming.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/12/c_programming-150x150.jpg" alt="" title="c_programming" width="150" height="150" class="alignright size-thumbnail wp-image-689" /></a>I feel this is one area of my computer science education that is rather weak. The years I spent in schooling learning C, C++, or another derivative, either my teachers / professors really didn&#8217;t teach it well, or were only around of half a semester. Truly, computer science teachers when I was in school were the &#8220;<a href="http://en.wikipedia.org/wiki/Hogwarts#Defence_Against_the_Dark_Arts">professor of defense against the dark arts</a>,&#8221; as they were always changing, even mid semester. </p>
<p>Also, I&#8217;ve never had a very strong need to learn C. Almost all of my work is web based, and so traditional LAMP skills were more than enough. However, things are changing in the industry, and there are a few reasons why I want to polish up on my C and re-learn it.</p>
<p>First off, there are a lot of new, cool technologies coming out for web development. The whole <a href="http://en.wikipedia.org/wiki/NoSQL">NoSQL</a> concept and the different solutions for it are being written in C based languages. Even after all these years, many are being written in C. Now, I doubt I would be willing to write my own NoSQL solution when there are great ones out there, but I would love to contribute bug fixes, or be able to read and understand on a lower level how they work. </p>
<p>Second, I&#8217;ve been cautious or nervous compiling my own binaries on Linux. Almost always, if a new PHP release came out, I would want to wait for my distribution to release and update. Sometimes, that can be months, and even years. By learning C and learning more how it works, I hope to be able to compile my own binaries when needed, and not feel so hopeless if something breaks.</p>
<p>Third, <a href="http://php.net/">PHP</a> is written in C. There have been times where I&#8217;ve wondered exactly how a specific function or worked, or have found a bug I would love to submit a fix for. Its amazing how large the PHP community is, and yet how few contribute to help. I would love to become a code contributer, and learning C is a prerequisite definitely. Also, with web development and PHP, sometimes certain tasks could be performed much quicker when compiled, such as the score generation system for Dating DNA. It would be great if I could generate millions of compatibility scores at a C level, instead of just in PHP. </p>
<p>Fourth, is iPhone development is not going anywhere but up. We pay the bills and more with our iPhone sales for Dating DNA and Clipish, and having the option to do some iPhone Development when needed would be great. Granted, iPhone Development is done in Obj-C 2.0, but when I first tried iPhone development, almost every single one of my problems were from a fundamental lack of understanding on how Obj-C 2.0 worked. A better of understanding of C would help me greatly in this. </p>
<p>Firth, it would just be good to learn. Even if I don&#8217;t use it a lot, learning the programming language that is used by so many of my tools would be great. So, along side my posts on Redis, PHP, and web service development, you might be seeing on beginner information on Learning C. </p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/05/20/iphone-sdk-learning-the-basics-by-removing-the-touch/' rel='bookmark' title='iPhone SDK &#8211; Learning the Basics by Removing the Touch'>iPhone SDK &#8211; Learning the Basics by Removing the Touch</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/21/wordpress-oop/' rel='bookmark' title='WordPress &amp; OOP'>WordPress &#038; OOP</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/08/29/project-management-and-entrepreneurship/' rel='bookmark' title='Project Management &amp; Entrepreneurship'>Project Management &#038; Entrepreneurship</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2010/12/29/goal-for-2011-learn-c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Alaskan Cruise &#8211; Very Fun</title>
		<link>http://www.justincarmony.com/blog/2010/06/04/alaskan-cruise-very-fun/</link>
		<comments>http://www.justincarmony.com/blog/2010/06/04/alaskan-cruise-very-fun/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 21:34:06 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[alaska]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[vacation]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=564</guid>
		<description><![CDATA[I think it&#8217;s important for technology folk, especially programmers and system administrators, to take breaks and such that allow for us to be completely disconnected from our work. Its a very hard thing to do, especially if you work with very small companies. With Dating DNA, when I go on vacation, I&#8217;m the only Sys ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/03/30/quick-update/' rel='bookmark' title='Quick Update'>Quick Update</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/16/speaking-utah-open-source-conference-2009/' rel='bookmark' title='Speaking: Utah Open Source Conference 2009'>Speaking: Utah Open Source Conference 2009</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/06/SeattleToAlaskaCruiseShip.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/06/SeattleToAlaskaCruiseShip-150x150.jpg" alt="" title="SeattleToAlaskaCruiseShip" width="150" height="150" class="alignright size-thumbnail wp-image-594" /></a>I think it&#8217;s important for technology folk, especially programmers and system administrators, to take breaks and such that allow for us to be completely disconnected from our work. Its a very hard thing to do, especially if you work with very small companies. With Dating DNA, when I go on vacation, I&#8217;m the only Sys Admin and all of our web development stops for the time I&#8217;m gone. So if there are Web Service APIs that need to be updated for our iPhone Developer, he has to wait as well. Also, if something goes down, I&#8217;m not around to fix it. Not a very fun situation to be in.</p>
<p>So for Dating DNA &#038; Clipish I put together the &#8220;Basic Server Administration Document&#8221; which detailed everything a person would need to know to perform basic sys admin tasks. It was nicked named the &#8220;Oh Crap&#8221; document. Fortunately, while I was gone, there were no problems, and the document was not needed.</p>
<p>For my other main project, CEVO, that was not the case. CEVO has 4 times the servers that Dating DNA has, and is a bit more complex. But there are two other programmers who also monitor the servers, so I wasn&#8217;t worried. Then, while I was gone, half the physical servers for a Virtual Server &#8220;Grid&#8221; went down, which was my pet project. The CTO for CEVO, Eric, had to try to figure out what was wrong and co-ordinate with the Data Center to figure what happened and how to fix everything. Since we host our Databases on this &#8220;Grid&#8221;, if it goes down, everything practically goes down. At the time, I was in Glacier Bay, watching Glaciers crumble and fall into the ocean, with zero internet connectivity.</p>
<p>So thank you Eric for putting up with everything while I was gone. It was all fixed by the time I came back.</p>
<p>But if there is anyone wondering if an Alaskan Cruise is worth it, it definitely is. My father-in-law took us, which was very nice of him. I&#8217;ll probably post some pictures in the near future of the trip. </p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/03/30/quick-update/' rel='bookmark' title='Quick Update'>Quick Update</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/16/speaking-utah-open-source-conference-2009/' rel='bookmark' title='Speaking: Utah Open Source Conference 2009'>Speaking: Utah Open Source Conference 2009</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2010/06/04/alaskan-cruise-very-fun/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Cloud to Bare Metal</title>
		<link>http://www.justincarmony.com/blog/2010/03/22/cloud-to-bare-metal/</link>
		<comments>http://www.justincarmony.com/blog/2010/03/22/cloud-to-bare-metal/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 06:02:22 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=545</guid>
		<description><![CDATA[A Little Background It was the summer of 2008 when I attended the LT Pact conference that I first drank the &#8220;Cloud Kool-Aid.&#8221; As you can see from my notes, I was pretty excited about this whole concept. Excited enough, one client of mine signed up for Layered Tech&#8217;s grid layer (which is what they ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/06/27/lt-pact-08-overview-of-experience/' rel='bookmark' title='LT Pact &#8217;08 &#8211; Overview of Experience'>LT Pact &#8217;08 &#8211; Overview of Experience</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/06/aptana-studio-php-ide-alternative-to-pdt-zend-studio/' rel='bookmark' title='Aptana Studio – PHP IDE Alternative to PDT, Zend Studio'>Aptana Studio – PHP IDE Alternative to PDT, Zend Studio</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/03/cloud-vector.jpg"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2010/03/cloud-vector-150x150.jpg" alt="" title="cloud-vector" width="150" height="150" class="alignright size-thumbnail wp-image-598" /></a><br />
<h3>A Little Background</h3>
<p>It was the summer of 2008 when <a href="http://www.justincarmony.com/blog/2008/06/27/lt-pact-08-overview-of-experience/">I attended the LT Pact</a> conference that I first drank the &#8220;Cloud Kool-Aid.&#8221; As you can see from my notes, I was pretty excited about this whole concept. Excited enough, one client of mine signed up for Layered Tech&#8217;s grid layer (which is what they were demoing at the conference).</p>
<p>One interesting thing I heard at the LT Pact conference was one of their keynotes was as IT Researcher for Gartner. He outlined what phases the current industry would go through with &#8220;cloud computing&#8221;:<span id="more-545"></span></p>
<ul>
<li>First, several early adopters would have great success implementing the technology.</li>
<li>Second, mainstream hype would &#8220;over-hype&#8221; cloud computing.</li>
<li>Due to the hype, many people would start &#8220;using the cloud&#8221; as a silver bullet, thinking the cloud would be perfect for anything.</li>
<li>A &#8220;cloud crash&#8221; would occur where disillusioned IT managers realized the cloud had its drawbacks, and wasn&#8217;t the perfect solution for any problem. More over-hyped people will start to move away from the cloud.</li>
<li>After the dust had settled and the hype faded away, the actual cloud technology would find a common place in today&#8217;s IT.</li>
</ul>
<p>Currently I think different people and groups are at different stages of the last three listed above. Some are still raving and hyping the cloud for everything. Some are <a href="http://alan.blog-city.com/has_amazon_ec2_become_over_subscribed.htm">bitter about their disillusionment</a>. Many are now <a href="http://www.infoworld.com/d/cloud-computing/cloud-versus-cloud-guided-tour-amazon-google-appnexus-and-gogrid-122">looking beyond the hype</a> at the real concepts behind &#8220;cloud computing&#8221; and finding &#8220;the services are wildly different. While many parts of Web hosting are pretty standard, the definition of &#8216;cloud computing&#8217; varies widely.&#8221; (<a href="http://www.infoworld.com/d/cloud-computing/cloud-versus-cloud-guided-tour-amazon-google-appnexus-and-gogrid-122">InfoWorld</a>)</p>
<blockquote><p>After a few hours, the fog of hype starts to lift and it becomes apparent that the clouds are pretty much shared servers just as the Greek gods are filled with the same flaws as earthbound humans. Yes, these services let you pull more CPU cycles from thin air whenever demand appears, but they can&#8217;t solve the deepest problems that make it hard for applications to scale gracefully. Many of the real challenges lie at the architectural level, and simply pouring more server cycles on the fire won&#8217;t solve fundamental mistakes in design.</p></blockquote>
<p>In a <a href="http://don.blogs.smugmug.com/2008/02/27/ec2-isnt-50-slower/">rebuttal blog post</a>, Don MacAskill defending accusations that EC2 was over 50% slower than stated. </p>
<blockquote><p>&#8230; let me explain what I think is happening: Amazon’s done a poor job at setting user expectations around how much compute power an instance has. And, to be fair, this really isn’t their fault – both AMD and Intel have been having a hard time conveying that very concept for a few years now&#8230;</p>
<p>Bottom line? EC2 is right on the money. Ted’s 2.0GHz Pentium 4 performed the benchmark almost exactly as fast as the Small (aka 1.7GHz old Xeon) instance. My 866MHz Pentium 3 was significantly slower, and my modern Opteron was significantly faster.</p>
<p>So what about that guy with the Ruby benchmark? Can you see what I missed, now? See, he’s using a Core 2 Duo. The Core line of processors has completely revolutionized Intel’s performance envelope, and thus, the Core processors preform much better for each clock cycle than the older Pentium line of CPUs. This is akin to AMD, which long ago gave up the GHz race, instead choosing to focus on raw performance (or, more accurately, performance per watt).</p></blockquote>
<h3>My Experiences</h3>
<p>Virtualized Servers can be awesome. They have some great advantages, while also having clear disadvantages (if you look beyond the hype). While I know I&#8217;ve quoted a lot about Amazon EC2, I have only experimented with it. However, I have a good deal of experience with <a href="http://www.3tera.com/AppLogic/">3Tera&#8217;s AppLogic</a>, and have recently moved a website to <a href="http://www.rackspacecloud.com/">Rackspace Cloud</a>. </p>
<h3>Learning Curve</h3>
<p>While Rackspace Cloud was more straight forward, learning 3Tera&#8217;s AppLogic is a large task. I spent several months learning a lot (and tearing my hair out some days) and then another year of learning to deal with it&#8217;s quirks. It is pretty cool once you get it down, but in all honesty its features didn&#8217;t line up with what the company using it needed. Every now and then we spin up a custom server for a website or something else. However, AppLogic is built more for people who are doing a large volume of similar instances. So while it works, it probably isn&#8217;t the best fit for us. </p>
<p>Also, with AppLogic&#8217;s components, they are engineered for very very specific tasks. Doing things outside of their scope *is* possible, however there was a vast amount of tinkering, reading, blood, sweat, and tears trying to get it to work. There are still things, like with the way AppLogic handle network routing, that are just unique at best. </p>
<h3>Bare Metal to The Cloud</h3>
<p>Each instance I&#8217;ve gone to deploy on the Cloud, either Rackspace Cloud, Amazon EC2, or AppLogic, the project itself had started on a dedicated server that we then moved to a virtualized server. Since when virtualized servers started to pop up, even in the earlier days of simple VPS solutions, you would be moving from dedicated bare metal to a virtual server. The inherit problem is that virtual servers, especially on shared hardware, have *less* resources available to them, especially CPU power. On Bare Metal Dedicated Servers, I rarely run into CPU issues. When the CPU power is being shared with several other &#8220;virtual servers&#8221;, you suddenly only have a quarter of what was available.</p>
<p>Then you have your neighbors. While moving <a href="http://www.clipish.net/">Clipish</a> to the Rackspace Cloud the little 1GB RAM server felt peppy. I was confident in our choice. Clipish isn&#8217;t complicated, and it&#8217;s web services are pretty easy going. The only intense part is when you clear the image cache. Then when a web server request comes in and the image isn&#8217;t there, it pulls the image from the Database, performs the ImageMagick operations to resize, watermark, create a thumbnail, etc on demand. During the early morning, it isn&#8217;t a problem at all. However, one night I &#8220;cleared the cache&#8221; during peak times, and within minutes the server had locked up. </p>
<p>Turns out on our old server, the web services could easily burst to all 8 cores for a few minutes while regenerating hundreds of image caches. Even the Rackspace server could burst during off-peak hours and repopulate. However, during peak times, when the dozen or so &#8220;neighbors&#8221; we&#8217;re using their allotted CPU, and our server couldn&#8217;t &#8220;burst&#8221; like before. So what did we have to do? We wrote a script that would loop through our image library one at a time and regenerate it. This works, but after the move and we were experiencing these problems, we thought &#8220;did we make the right move to go to the cloud?&#8221;</p>
<h3>Cloud to Bare Metal</h3>
<p>I think the approach with the &#8220;cloud&#8221; needs to be this. You have your baby project, so throw it up on the cloud. Let it cost $15-$20 bucks a month. Take advantage of the daily backup snapshots, etc, and just worry about development. Let it grow and at some point you&#8217;re going to hit a fork in the road:</p>
<ul>
<li><strong>Bare Metal Benefits outweigh Cloud Benefits</strong> &#8211; Bare Metal is typically cheaper than Cloud power. If you are not spinning up and down servers on a daily biases, but is a more fixed size, then quickly scaling isn&#8217;t an issue. Cost can and should be a huge priority for hosting your application. If your application needs more higher CPU, Memory, or Bandwidth that doesn&#8217;t fit the Cloud model then going Bare Metal is a good idea.
<li><strong>Cloud Benefits outweigh Bare Metal Benefits</strong> &#8211; If your application, however, can fit on the cloud and the budget at the same time, then it can be a beneficial to stay on the cloud. Just remember you can&#8217;t expect a Cloud server to outperform a Bare Metal server of the same specs. But you can take advantage of things like spinning up new servers in minutes, take quick backups of virtual machines, etc.</li>
</ul>
<h3>Conclusion</h3>
<p>I guess my biggest advice when it comes to deciding on bare metal vs cloud is to understand the pros &#038; cons. Remember that while you <strong>can</strong> burst to more CPU, you shouldn&#8217;t rely on that always being the case. The Cloud does afford some cool flexibility, but it isn&#8217;t perfect, and it can be a lot more expensive than going bare metal. Also, if you&#8217;re on bare metal, and moving to the cloud, the cost of raw power is a great deal more expensive on the Cloud. </p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/06/27/lt-pact-08-overview-of-experience/' rel='bookmark' title='LT Pact &#8217;08 &#8211; Overview of Experience'>LT Pact &#8217;08 &#8211; Overview of Experience</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/06/aptana-studio-php-ide-alternative-to-pdt-zend-studio/' rel='bookmark' title='Aptana Studio – PHP IDE Alternative to PDT, Zend Studio'>Aptana Studio – PHP IDE Alternative to PDT, Zend Studio</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2010/03/22/cloud-to-bare-metal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My 2009 Technology Recap</title>
		<link>http://www.justincarmony.com/blog/2009/12/23/my-2009-technology-recap/</link>
		<comments>http://www.justincarmony.com/blog/2009/12/23/my-2009-technology-recap/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 18:55:31 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[Goals]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Presentation]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[UPHPU]]></category>
		<category><![CDATA[utah]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2009/12/23/my-2009-technology-recap/</guid>
		<description><![CDATA[Its been two years now that I&#8217;ve been a more or less &#8220;serious blogger.&#8221; I had using the term blogger, since when people hear about blogs, they think of people either detailing their entire lives, or pumping some angel. For me, blogging has just been a way to share information with people I know locally, ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/16/speaking-utah-open-source-conference-2009/' rel='bookmark' title='Speaking: Utah Open Source Conference 2009'>Speaking: Utah Open Source Conference 2009</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/10/11/presentation-real-life-scaling/' rel='bookmark' title='Presentation: Real Life Scaling'>Presentation: Real Life Scaling</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Its been two years now that I&#8217;ve been a more or less &#8220;serious blogger.&#8221; I had using the term blogger, since when people hear about blogs, they think of people either detailing their entire lives, or pumping some angel. For me, blogging has just been a way to share information with people I know locally, and those I don&#8217;t even know who find my blog via searching. I&#8217;ve had a few spurts where I blogged quite frequently, but for the most part it was just here and there.</p>
<p>I&#8217;ve gone back and looked at this year of 2009, and the things I&#8217;ve blogged about, and I thought I&#8217;d give a little recap.</p>
<p><b>My CSS Conversion</b></p>
<p>At the beginning of the year I realized I had <a href="http://www.justincarmony.com/blog/2009/01/08/css-im-100-converted/">100% percent to using CSS</a>. I&#8217;m still a little in awe that being such a table junkie I finally did it. There were a few key things that I did to help me learn all the difficult things with CSS. I hope I can help some poor web developer out there understand their CSS a little better.</p>
<p><b>A Year of PHP IDEs</b></p>
<p>I really invested some time in trying out and experimenting with <a href="http://www.justincarmony.com/blog/2009/02/06/aptana-studio-php-ide-alternative-to-pdt-zend-studio/">several PHP Integrated Development Environments (IDEs)</a>. I had been using Zend Studio for several years, however more and more I found myself frustrated with it&#8217;s quirks. However, I haven&#8217;t had time yet to blog about the new IDE I am using, <a href="http://netbeans.org/">NetBeans</a>. I&#8217;ve made the switch from Zend Studio to NetBeans, and while I&#8217;m not completely sold, I&#8217;m still giving it some time. Maybe over christmas break I&#8217;ll blog some about it.</p>
<p><b>Interesting Challenges w/ MySQL</b></p>
<p>While I haven&#8217;t blogged about most of them, I have had some interesting challenges w/ MySQL over the last year. One was converting <a href="http://www.justincarmony.com/blog/2009/01/12/mysql-40-million-rows-myisam-innodb/">40 Million rows from a MyISAM engine to an InnoDB Engine</a>. I&#8217;ve been having some serious heart-to-heart conversations with MySQL (metaphorically of course) on how I&#8217;m going to scale it to millions and billions of rows. I think I&#8217;ve mapped out in my head how we&#8217;re going to handle it for <a href="http://www.datingdna.com/">Dating DNA</a>. That will be one challenge I&#8217;ll be addressing in 2010.</p>
<p><b>New Blog Design</b></p>
<p>This year I got around to <a href="http://www.justincarmony.com/blog/2009/02/20/new-blog-design/">re-designing my blog using the Carrington Theme as a base</a>. I kinda like it, but it still could use a little more polish. One day I&#8217;ll find time to give it that extra polish.</p>
<p><b>Memcached</b></p>
<p>This year I really got into the theory on how to <a href="http://www.justincarmony.com/blog/2009/05/20/memcached-simple-effective-and-powerful/">design an application with Memcached</a>. I&#8217;ve decreased the load on several websites by using it, and wrote an <a href="http://www.justincarmony.com/blog/2009/06/24/writing-effictive-php-caches-with-memcached/">in-depth article on the theory of caching, and how to implement it effectively</a>. I&#8217;ve been amazed at how well it works, and that I hadn&#8217;t used it before.</p>
<p><b>A Year of Presentations</b></p>
<p>I&#8217;ve given two presentations this year, my <a href="http://www.justincarmony.com/blog/2009/06/24/writing-effictive-php-caches-with-memcached/">Memcached</a> presentation at UPHPU, and my &#8220;<a href="http://www.justincarmony.com/blog/2009/10/11/presentation-real-life-scaling/">Real Life Scaling</a>&#8221; presentation at the Utah Open Source Conference. I got great feedback from both presentations, and I look forward to what I&#8217;ll present on this upcoming year. I&#8217;m thinking about putting together a presentation called &#8220;Being a Web Ninja with jQuery,&#8221; and showing of the dozen of awesome applications I&#8217;ve built using jQuery.</p>
<p><b>Utah Open Source Conference 2009</b></p>
<p>This year I helped organize and throw together the Utah Open Source Conference. I was made the Sponsorship Manager, and it was interesting trying to talk to companies in a recession about donating to a non-profit conference. I haven&#8217;t had a chance to blog about different techniques on how to professional ask for money for something like this, but hopefully in 2010 I&#8217;ll be able to share some insights.</p>
<h2>Things I Didn&#8217;t Blog About</h2>
<p>There were a lot of things I didn&#8217;t get around to blogging about this year. I&#8217;ll quickly touch on them here, and hopefully in 2010 I&#8217;ll be able to blog about them more.</p>
<p><strong>Web Services</strong> &#8211; I&#8217;ve done a LOT of web service work. Web services provide a unique challenge, since many times its hard to debug them. At my old job, one of the biggest challenges is we really couldn&#8217;t debug our web services until all of the other pieces of the puzzle were done. Then we spent long hours with trial and error, debugging via dumping logs. I&#8217;ve learned a lot of tricks with PHP and web services. Hopefully I&#8217;ll be blog more about those soon.</p>
<p><b>Performance Tuning LAMP</b> &#8211; I&#8217;ve had to do a lot of tuning to keep the Dating DNA website afloat. Because of the awesomeness of our iPhone apps, we&#8217;ve had a lot of load on our web servers. There are a lot of things you can do to get the LAMP stack to run well.</p>
<p><b>Alienware Arena</b> &#8211; Here was a fun little project I was able to crank out for probably the largest client I&#8217;ve done work for: Dell. We made them a website for their Alienware brand called &#8220;<a href="http://www.alienwarearena.com/">Alienware Arena</a>.&#8221;</p>
<p>
<a href="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2009/12/AlienwareArena.png"><img src="http://c747925.r25.cf2.rackcdn.com/blog/wp-content/uploads/2009/12/AlienwareArena-tm.jpg" width="400" height="352" alt="AlienwareArena.png" /></a></p>
<p>There were a lot of challenges to this website, mainly timeline and budget. But we were able to walk away happy with our work, and the Dell / Alienware team were really happy. It was interesting going through and trying to copy / mimic the look and feel of the Alienware website. I&#8217;m really proud of what we made.</p>
<p><b>Never Ending iPhone App Store Saga</b> &#8211; Anyone who knows me has heard of the bloody wars that my current employer has had with Apple, their iPhone, and the App Store. The ridiculous approval process, the extremely long wait periods, and Apple&#8217;s OCD when it comes to their phone. I won&#8217;t say much anything else on the topic, but boy it has been frustrating.</p>
<h2>What to Expect with 2010</h2>
<p>Boy, 2010 will be interesting. What to expect? I&#8217;ll be doing some pretty sick programming in jQuery, as I&#8217;ll be adding integrating chat to the Dating DNA website. What else? A <b><i>lot</i> <span style="font-weight: normal;">more when it comes to integrating websites into other social network platforms.</span></b></p>
<p><b><span style="font-weight: normal;">From a business platform, 2010 will be a lot of work spent on taking some great ideas and trying to monetize them. While working on awesome stuff is great, its important to pay the bills with them. I will have an entire year to sign up Sponsors for the 2010 UTOS Conference instead of 2 short months.</span></b></p>
<p>Hopefully I&#8217;ll get in a better habit of documenting my discoveries and solutions here in my blog. Sharing information is the best way to help everyone out.</p>
<p>I hope everyone has a happy holiday and good luck in the new year! 2010, here we come!</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/16/speaking-utah-open-source-conference-2009/' rel='bookmark' title='Speaking: Utah Open Source Conference 2009'>Speaking: Utah Open Source Conference 2009</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/10/11/presentation-real-life-scaling/' rel='bookmark' title='Presentation: Real Life Scaling'>Presentation: Real Life Scaling</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/12/23/my-2009-technology-recap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article: Why Developers Get Fired</title>
		<link>http://www.justincarmony.com/blog/2009/09/24/article-why-developers-get-fired/</link>
		<comments>http://www.justincarmony.com/blog/2009/09/24/article-why-developers-get-fired/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 18:43:04 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=478</guid>
		<description><![CDATA[Here is an article that showed up on my RSS feed: Why Developers Get Fired. While I never have been fired from a job, I have been put in a situtaion where I needed to prove my worth to the company. The advice this article gives is pretty good, and in my opinion are the ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/01/25/great-php-article-leadership-in-software-development/' rel='bookmark' title='Great PHP Article: Leadership in Software Development'>Great PHP Article: Leadership in Software Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/12/php-article-10-principles-of-the-php-masters/' rel='bookmark' title='PHP Article: 10 Principles of the PHP Masters'>PHP Article: 10 Principles of the PHP Masters</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/22/article-5-things-your-clients-should-know/' rel='bookmark' title='Article: 5 Things Your Clients Should Know'>Article: 5 Things Your Clients Should Know</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Here is an article that showed up on my RSS feed: <a href="http://itmanagement.earthweb.com/features/article.php/3839981/Why-Developers-Get-Fired.htm" target="_blank">Why Developers Get Fired</a>. While I never have been fired from a job, I have been put in a situtaion where I needed to prove my worth to the company. The advice this article gives is pretty good, and in my opinion are the most overlooked issues. A developer could easily overlook these issues, and get side blinded by a pink slip. Here is an exceprt:</p>
<blockquote><p>I have learned the hard way over the years that it doesn’t matter how clever you think you are or how much everyone loves you on your team. The fact is, there are always potential circumstances that can come to a head, resulting in the ax coming down on your valuable head.</p>
<p>Sometimes these doomsday series of events are in your control. Sometimes it’s like being blindsided by a bus.</p>
<p>&#8230;</p>
<p>We might as well start with the obvious. If your job consistently isn’t getting done, then you will eventually be toast. All it takes is a few missed deadlines and your manager will have no choice because “you know what” rolls downhill. A manager can only absorb so many blows from unhappy end users or their own boss.</p>
<p>Why wouldn’t you see this one coming? Well, you might be thinking the missed deadlines are not your fault. Your excuses may include “the design was bad” or “the deadlines are not realistic” or “they are making me code in Java and I am a .NET expert.”</p>
<p>Guess what?  Excuses don’t matter. Results matter.</p></blockquote>
<p>While I hope I never get fired from a job, hopefully these tips can help any developer out.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/01/25/great-php-article-leadership-in-software-development/' rel='bookmark' title='Great PHP Article: Leadership in Software Development'>Great PHP Article: Leadership in Software Development</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/09/12/php-article-10-principles-of-the-php-masters/' rel='bookmark' title='PHP Article: 10 Principles of the PHP Masters'>PHP Article: 10 Principles of the PHP Masters</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/09/22/article-5-things-your-clients-should-know/' rel='bookmark' title='Article: 5 Things Your Clients Should Know'>Article: 5 Things Your Clients Should Know</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/09/24/article-why-developers-get-fired/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Nerfing&#8221; a PHP Object</title>
		<link>http://www.justincarmony.com/blog/2009/09/20/nerfing-a-php-object/</link>
		<comments>http://www.justincarmony.com/blog/2009/09/20/nerfing-a-php-object/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 18:26:35 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[reflection]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=470</guid>
		<description><![CDATA[I was trying to think of something with PHP I could blog about that would be short and sweet. Then I thought of something that a good friend of my taught me: nerfing objects. The Problem Many times while working with PHP and bigger frameworks, you&#8217;ll have classes that extend classes that extand classes. We ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/12/03/php-singletons-sub-classing-and-has-a-relationships/' rel='bookmark' title='PHP Singletons, Sub-Classing, and HAS-A Relationships'>PHP Singletons, Sub-Classing, and HAS-A Relationships</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/06/aptana-studio-php-ide-alternative-to-pdt-zend-studio/' rel='bookmark' title='Aptana Studio – PHP IDE Alternative to PDT, Zend Studio'>Aptana Studio – PHP IDE Alternative to PDT, Zend Studio</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/01/21/list-of-50-php-tools/' rel='bookmark' title='List of 50 PHP Tools'>List of 50 PHP Tools</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I was trying to think of something with PHP I could blog about that would be short and sweet. Then I thought of something that a good friend of my taught me: <strong>nerfing objects</strong>.</p>
<p><strong>The Problem</strong></p>
<p>Many times while working with PHP and bigger frameworks, you&#8217;ll have classes that extend classes that extand classes. We have an <a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">ORM system</a> that interfaces our Database with PHP classes. This makes accessing and updating information easy for us. So lets say we have a class called &#8220;Post&#8221; that stores a blog post. Our ORM class just takes a few lines of code to hook up our &#8220;Post&#8221; class to the &#8220;posts&#8221; database tables. We just extend our base DataObject, which contains all sorts of references to other class isntances. Long story short, this PHP code is awesome, but there is one issue.</p>
<p>Lets say I have an AJAX call that gets some post data, so I want to pass my &#8220;Post&#8221; class through a JSON parser to send back a JSON version of the PHP class. The problem was that the JSON parser was picking up on the extended classes&#8217;s private members and such, so it was spitting back a whole lot of stuff we didn&#8217;t want it to that belonged to the ORM classes.</p>
<p><strong>The Solution</strong></p>
<p>So what do we do? We &#8220;nerf&#8221; the class. Nerfing is a term used by gamers about video games. It means &#8220;[to make] a change to a game that reduces the desirability or effectiveness of a particular game element. The term is also used as a verb for the act of making such a change. The term is used as a reference to the NERF brand of toys which are soft and less likely to cause serious injury.&#8221; (<a href="http://en.wikipedia.org/wiki/Nerf_(computer_gaming)" target="_blank">Wikipedia</a>)</p>
<p>So we make a &#8220;Nerfed&#8221; version of the class, with no functions, or extended protected members, just the data. We do this by using two parts of PHP:</p>
<ul>
<li>stdClass PHP Class</li>
<li>PHP&#8217;s Reflection Class</li>
</ul>
<p>Just attach this function to your class and you&#8217;ll be able to &#8220;nerf&#8221; it.</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php

class ExampleClass extends ComplexClass
{

  // .. Some PHP Class code ..
  public function GetNerf()
  {
    $nerf = new stdClass();

    // Save the values of the fields
    $dbFields = $this-&gt;dbFields;

    foreach ($dbFields as $n =&gt; $v)
    {
      $nerf-&gt;$n = $v;
    }
    //var_dump($nerf);

    $me_ref = new ReflectionClass(get_class($this));
    $me_properties = $me_ref-&gt;getProperties();
    foreach($me_properties as $m)
    {
      if($m-&gt;isPublic())
      {
        $name = $m-&gt;getName();
        $nerf-&gt;$name = $this-&gt;$name;
      }
    }

    return $nerf;
  }

}

?&gt;
</pre>
<p>Hopefully that makes sense, but the Reflection capabilities of PHP are pretty simple and powerful. Hopefully over the next few weeks I&#8217;ll be posting some more tricks with PHP Reflection.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/12/03/php-singletons-sub-classing-and-has-a-relationships/' rel='bookmark' title='PHP Singletons, Sub-Classing, and HAS-A Relationships'>PHP Singletons, Sub-Classing, and HAS-A Relationships</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/02/06/aptana-studio-php-ide-alternative-to-pdt-zend-studio/' rel='bookmark' title='Aptana Studio – PHP IDE Alternative to PDT, Zend Studio'>Aptana Studio – PHP IDE Alternative to PDT, Zend Studio</a></li>
<li><a href='http://www.justincarmony.com/blog/2009/01/21/list-of-50-php-tools/' rel='bookmark' title='List of 50 PHP Tools'>List of 50 PHP Tools</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/09/20/nerfing-a-php-object/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Being a Productive Developer</title>
		<link>http://www.justincarmony.com/blog/2009/09/15/being-a-productive-developer/</link>
		<comments>http://www.justincarmony.com/blog/2009/09/15/being-a-productive-developer/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 03:50:59 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Goals]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/?p=457</guid>
		<description><![CDATA[Doh! I meant to schedule this for Thursday, so oops! Already off my schedule, but oh well. These last few weeks my productivity seems to have been fluctuating, and it has been irritating. So I&#8217;ve decided over the next few weeks to keep track of how I work, see what works well and what doesn&#8217;t, ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/08/23/two-way-sync-between-google-calendar-windows-os-x-and-iphone/' rel='bookmark' title='Two-Way Sync between Google Calendar, Windows, OS X, and iPhone'>Two-Way Sync between Google Calendar, Windows, OS X, and iPhone</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/07/adeona-open-source-lojack-for-laptops/' rel='bookmark' title='Adeona &#8211; Open Source LoJack for Laptops'>Adeona &#8211; Open Source LoJack for Laptops</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><em>Doh! I meant to schedule this for Thursday, so oops! Already off my schedule, but oh well. <img src='http://c747925.r25.cf2.rackcdn.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </em></p>
<p>These last few weeks my productivity seems to have been fluctuating, and it has been irritating. So I&#8217;ve decided over the next few weeks to keep track of how I work, see what works well and what doesn&#8217;t, and figure out how I can be more productive.</p>
<p>Just as I would suggest any company with scaling/growth problems, I&#8217;m going to do the same with me: metrics. You can&#8217;t really know where and what to fix if you can&#8217;t tell how they are performing. So I&#8217;m going to start to keep track of my time in a lot more detail. I think this will help me in so many fronts, and I&#8217;ve known for a long time I need to do this. I&#8217;ve signed up for a demo account with <a href="http://www.getharvest.com/" target="_blank">Harvest</a>, a time tracking software. Why? They seem to have a great interface, both Windows and Mac apps, and iPhone web and native app. So it will be easy to keep track of what I&#8217;m doing no matter what or where I am.</p>
<p>Over these next few weeks I&#8217;ll write how things are going, see where I can approve, and how that goes.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2009/09/14/so-you-want-to-be-a-web-developer/' rel='bookmark' title='So You Want To Be A Web Developer?'>So You Want To Be A Web Developer?</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/08/23/two-way-sync-between-google-calendar-windows-os-x-and-iphone/' rel='bookmark' title='Two-Way Sync between Google Calendar, Windows, OS X, and iPhone'>Two-Way Sync between Google Calendar, Windows, OS X, and iPhone</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/10/07/adeona-open-source-lojack-for-laptops/' rel='bookmark' title='Adeona &#8211; Open Source LoJack for Laptops'>Adeona &#8211; Open Source LoJack for Laptops</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2009/09/15/being-a-productive-developer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 26/133 queries in 0.056 seconds using memcached
Content Delivery Network via Rackspace Cloud Files: c747925.r25.cf2.rackcdn.com

Served from: www.justincarmony.com @ 2012-02-07 23:22:55 -->
