<?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; ASP .NET</title>
	<atom:link href="http://www.justincarmony.com/blog/tag/asp-net/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>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>Empowering JavaScript Through jQuery</title>
		<link>http://www.justincarmony.com/blog/2008/10/24/empowering-javascript-through-jquery/</link>
		<comments>http://www.justincarmony.com/blog/2008/10/24/empowering-javascript-through-jquery/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 00:31:27 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/10/24/empowering-javascript-through-jquery/</guid>
		<description><![CDATA[Once I discovered jQuery, my life as a web developer changed. There are few libraries, tools, etc. that I can honestly say have completely changed the way I code. In all honesty, jQuery makes the difficult aspects of JavaScript and turns them into a strength. I recommend it over any other JavaScript library I know. ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/04/21/iphone-web-development-controlling-the-viewport-via-javascript/' rel='bookmark' title='iPhone Web Development: Controlling the viewport via Javascript'>iPhone Web Development: Controlling the viewport via Javascript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/05/16/iphone-sdk-dna-a-frustrating-issue/' rel='bookmark' title='iPhone SDK DNA &#8211; A Frustrating Issue'>iPhone SDK DNA &#8211; A Frustrating Issue</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Once I discovered <a href="http://jquery.com/">jQuery</a>, my life as a web developer changed. There are few libraries, tools, etc. that I can honestly say have completely changed the way I code. In all honesty, jQuery makes the difficult aspects of JavaScript and turns them into a strength. I recommend it over any other JavaScript library I know. It is smaller, leaner, straight forwards, and more powerful than anything out there. Large companies like Google, Microsoft, and Dell use it. Microsoft is now including jQuery in Visual Studio, their powerful IDE for making websites. If anything, I have yet to meet a person who has used jQuery and has gone to anything else.</p>
<p>Learning anything new can be challenging, so I thought I would share my resources on learning jQuery. First off you need to check out <a href="http://docs.jquery.com/Tutorials">jQuery&#8217;s tutorial section</a>. I recommend just about every tutorial on there, and each will help you understand jQuery a little better. Once you&#8217;ve gone through the tutorials on how jQuery, sit down and make something meaningful with it. Don&#8217;t just follow the tutorials, but actually try to use it in your next project. Soon you&#8217;ll see how amazing jQuery can be. Last but not least, my absolute favorite quick reference is <a href="http://visualjquery.com/">Visual jQuery</a> by Remy Sharp &amp; Yehuda Katz. When ever I need to look up quickly how to do something, I use can find it within seconds on Visual jQuery.</p>
<p>I&#8217;m going to try to post at least one tip or trick with jQuery every week, not only to help me keep a history of my tricks, but to help others solve common problems. If anyone has any questions, please feel free to leave a comment and I&#8217;d be more than happy to answer any questions.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/04/21/iphone-web-development-controlling-the-viewport-via-javascript/' rel='bookmark' title='iPhone Web Development: Controlling the viewport via Javascript'>iPhone Web Development: Controlling the viewport via Javascript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/05/16/iphone-sdk-dna-a-frustrating-issue/' rel='bookmark' title='iPhone SDK DNA &#8211; A Frustrating Issue'>iPhone SDK DNA &#8211; A Frustrating Issue</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/10/24/empowering-javascript-through-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ASP .NET, LINQ, GridViews, and GUID Errors</title>
		<link>http://www.justincarmony.com/blog/2008/02/25/asp-net-linq-gridviews-and-guid-errors/</link>
		<comments>http://www.justincarmony.com/blog/2008/02/25/asp-net-linq-gridviews-and-guid-errors/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 20:17:22 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[GridView]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/02/25/asp-net-linq-gridviews-and-guid-errors/</guid>
		<description><![CDATA[I found a simple problem today. Here is the deal, there were several times where I had to base a LinqDataSource off a Guid that I would set in the Page_Load(). I created an&#60;asp:HiddenField /&#62; to hold the value so all my DataSources could pull it from the control. The HiddenField control&#8217;s value is stored ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/' rel='bookmark' title='ASP .NET, GridViews, SqlDataSource, and Guid Parameters'>ASP .NET, GridViews, SqlDataSource, and Guid Parameters</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/02/25/linq-and-not-in-queries/' rel='bookmark' title='LINQ and NOT IN Queries'>LINQ and NOT IN Queries</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I found a simple problem today. Here is the deal, there were several times where I had to base a LinqDataSource off a Guid that I would set in the Page_Load(). I created an&lt;asp:HiddenField /&gt; to hold the value so all my DataSources could pull it from the control. The HiddenField control&#8217;s value is stored as a string, so I would have to convert the guid to a string. After doing this, I was getting the following error:</p>
<p><span></span></p>
<h2><em><em>Operator &#8216;==&#8217; incompatible with operand types &#8216;Guid&#8217; and &#8216;String&#8217;</em></em></h2>
<p>After looking around in my code and some forums, I found the answer: Linq is strongly cast and Visual Studio 2008 most like set the &#8220;where&#8221; clause to something like this:</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'; color: blue">&lt;</span><span style="font-size: 10pt; font-family: 'Courier New'; color: #a31515">asp</span><span style="font-size: 10pt; font-family: 'Courier New'; color: blue">:</span><span style="font-size: 10pt; font-family: 'Courier New'; color: #a31515">LinqDataSource</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: red">ID</span><span style="color: blue">=&#8221;ldsProducs&#8221;</span> <span style="color: red">runat</span><span style="color: blue">=&#8221;server&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">ContextTypeName</span><span style="color: blue">=&#8221;CartDataContext&#8221;</span> <span style="color: red">EnableDelete</span><span style="color: blue">=&#8221;True&#8221;</span> <span style="color: red">EnableInsert</span><span style="color: blue">=&#8221;True&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">EnableUpdate</span><span style="color: blue">=&#8221;True&#8221;</span> <span style="color: red">OrderBy</span><span style="color: blue">=&#8221;Product_UPC1&#8243;</span> <span style="color: red">TableName</span><span style="color: blue">=&#8221;Product_UPCs&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">Where</span><span style="color: blue">=&#8221;Product_IID == @Product_IID&#8221;&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: blue">&lt;</span><span style="color: #a31515">WhereParameters</span><span style="color: blue">&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>            </span><span style="color: blue">&lt;</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">ControlParameter</span> <span style="color: red">ControlID</span><span style="color: blue">=&#8221;hfProductIID&#8221;</span> <span style="color: red">Name</span><span style="color: blue">=&#8221;Product_IID&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>                </span><span style="color: red">PropertyName</span><span style="color: blue">=&#8221;Value&#8221;</span> <span style="color: red">Type</span><span style="color: blue">=&#8221;Object&#8221;</span> <span style="color: blue">/&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: blue">&lt;/</span><span style="color: #a31515">WhereParameters</span><span style="color: blue">&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"><span>    </span><span style="color: blue">&lt;/</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">LinqDataSource</span><span style="color: blue">&gt;</span></span></p>
<p> However, because Linq is strongly cast you can&#8217;t perform an == operand on a String and Guid, so I changed the following:</p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'; color: blue">&lt;</span><span style="font-size: 10pt; font-family: 'Courier New'; color: #a31515">asp</span><span style="font-size: 10pt; font-family: 'Courier New'; color: blue">:</span><span style="font-size: 10pt; font-family: 'Courier New'; color: #a31515">LinqDataSource</span><span style="font-size: 10pt; font-family: 'Courier New'"> <span style="color: red">ID</span><span style="color: blue">=&#8221;ldsProducs&#8221;</span> <span style="color: red">runat</span><span style="color: blue">=&#8221;server&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">ContextTypeName</span><span style="color: blue">=&#8221;CartDataContext&#8221;</span> <span style="color: red">EnableDelete</span><span style="color: blue">=&#8221;True&#8221;</span> <span style="color: red">EnableInsert</span><span style="color: blue">=&#8221;True&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">EnableUpdate</span><span style="color: blue">=&#8221;True&#8221;</span> <span style="color: red">OrderBy</span><span style="color: blue">=&#8221;Product_UPC1&#8243;</span> <span style="color: red">TableName</span><span style="color: blue">=&#8221;Product_UPCs&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: red">Where</span><span style="color: blue">=&#8221;<span style="background: yellow none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">Product_IID == Guid(@Product_IID)&#8221;&gt;</span><o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: blue">&lt;</span><span style="color: #a31515">WhereParameters</span><span style="color: blue">&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>            </span><span style="color: blue">&lt;</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">ControlParameter</span> <span style="color: red">ControlID</span><span style="color: blue">=&#8221;hfProductIID&#8221;</span> <span style="color: red">Name</span><span style="color: blue">=&#8221;Product_IID&#8221;</span> <o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>                </span><span style="color: red">PropertyName</span><span style="color: blue">=&#8221;Value&#8221;</span> <span style="color: red">Type</span><span style="color: blue">=&#8221;Object&#8221;</span> <span style="color: blue">/&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal"><span style="font-size: 10pt; font-family: 'Courier New'"><span>        </span><span style="color: blue">&lt;/</span><span style="color: #a31515">WhereParameters</span><span style="color: blue">&gt;<o:p></o:p></span></span></p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"><span>    </span><span style="color: blue">&lt;/</span><span style="color: #a31515">asp</span><span style="color: blue">:</span><span style="color: #a31515">LinqDataSource</span><span style="color: blue">&gt;</span></span></p>
<p> Now it&#8217;ll convert the HiddenField&#8217;s value to a Guid and compair.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/' rel='bookmark' title='ASP .NET, GridViews, SqlDataSource, and Guid Parameters'>ASP .NET, GridViews, SqlDataSource, and Guid Parameters</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/02/25/linq-and-not-in-queries/' rel='bookmark' title='LINQ and NOT IN Queries'>LINQ and NOT IN Queries</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/02/25/asp-net-linq-gridviews-and-guid-errors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Page.FindControl() Returning Null Issues and Solutions Within Another Control</title>
		<link>http://www.justincarmony.com/blog/2008/02/12/pagefindcontrol-returning-null-issues-and-solutions-within-another-control/</link>
		<comments>http://www.justincarmony.com/blog/2008/02/12/pagefindcontrol-returning-null-issues-and-solutions-within-another-control/#comments</comments>
		<pubDate>Tue, 12 Feb 2008 18:41:51 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[Server Controls]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/02/12/pagefindcontrol-returning-null-issues-and-solutions-within-another-control/</guid>
		<description><![CDATA[Alright, I&#8217;m going to have a lot of blog posts over the next few days going over my wonderful expereinces learning how to create advanced server controls, and just how hard it is to find good information on the subject. But the problem I ran into today was having Page.FindControl() not work as expected. Problem ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/' rel='bookmark' title='ASP .NET GridView Access to Data In Code'>ASP .NET GridView Access to Data In Code</a></li>
<li><a href='http://www.justincarmony.com/blog/2007/12/31/retrieve-current-modulecontrolleraction-inside-view-script-layout-script/' rel='bookmark' title='Retrieve Current Module/Controller/Action inside View Script / Layout Script'>Retrieve Current Module/Controller/Action inside View Script / Layout Script</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Alright, I&#8217;m going to have a lot of blog posts over the next few days going over my wonderful expereinces learning how to create advanced server controls, and just how hard it is to find good information on the subject.  But the problem I ran into today was having Page.FindControl() not work as expected.</p>
<h3>Problem</h3>
<p>Page.FindControl() can be misleading. A developer without understanding the situation could assume FindControl() will return a control found within that page. <strong><font color="#ff0000"><u><em>This is completely wrong.</em></u></font> </strong>The reason this does not work is because Page does not have its own FindControl() function. It actually <em><strong>inherits</strong> </em>this from Control, because Page inherits control. So FindControl() is really more like a FindChildrenControls(), and it is <em><strong>not</strong></em> recursive.</p>
<h3>Example</h3>
<p>I have some code that does a Page.FindControl() for a GridView. However, later I <em><strong>move</strong></em> the GridView into an UpdatePanel to add ajax enabled stuff. All of a sudden my Page.FindControl() doesn&#8217;t work. The reason? Because my GridView is no longer a direct child of the Page and it is now a child of the UpdatePanel. So instead of being Page -&gt; GridView it is Page -&gt; UpdatePanel -&gt; GridView.</p>
<h3>Solution</h3>
<p><span id="more-17"></span>I found a <a href="http://www.codinghorror.com/blog/archives/000307.html" title="Coding Horror: Recursive Page.FindControl" target="_blank">blog post</a> for a recursive post.  Here is the code:</p>
<pre class="brush: csharp; title: ; notranslate">
private Control FindControlRecursive(Control root, string id)
{
if (root.ID == id)
{
return root;
}

foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
{
return t;
}
}

return null;
}
</pre>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/' rel='bookmark' title='ASP .NET GridView Access to Data In Code'>ASP .NET GridView Access to Data In Code</a></li>
<li><a href='http://www.justincarmony.com/blog/2007/12/31/retrieve-current-modulecontrolleraction-inside-view-script-layout-script/' rel='bookmark' title='Retrieve Current Module/Controller/Action inside View Script / Layout Script'>Retrieve Current Module/Controller/Action inside View Script / Layout Script</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/02/12/pagefindcontrol-returning-null-issues-and-solutions-within-another-control/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>ASP .NET Ajax &#8211; Straight forward and simple, the way it should be.</title>
		<link>http://www.justincarmony.com/blog/2008/02/11/asp-net-ajax-straight-forward-and-simple-the-way-it-should-be/</link>
		<comments>http://www.justincarmony.com/blog/2008/02/11/asp-net-ajax-straight-forward-and-simple-the-way-it-should-be/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 16:34:41 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP .NET]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/02/11/asp-net-ajax-straight-forward-and-simple-the-way-it-should-be/</guid>
		<description><![CDATA[I have to say, I&#8217;m very impressed with the implementation of ASP .NET AJAX. After creating several projects in .NET, converting several of my pages to implement AJAX was beyond easy. It was incredible. It takes all the &#8220;thinking&#8221; out of AJAX and just makes it work. Now, I&#8217;m not familiar with the security and ...


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I have to say, I&#8217;m very impressed with the implementation of ASP .NET AJAX. After creating several projects in .NET, converting several of my pages to implement AJAX was beyond easy. It was incredible. It takes all the &#8220;thinking&#8221; out of AJAX and just makes it work. Now, I&#8217;m not familiar with the security and stability of it, but for simple AJAX to make your interface just &#8220;nicer&#8221;, its amazing.  I&#8217;ll be posting a few tricks and tips that I discover as I play around with the AJAX capabilities of .NET.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/02/11/asp-net-ajax-straight-forward-and-simple-the-way-it-should-be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP .NET, GridViews, SqlDataSource, and Guid Parameters</title>
		<link>http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/</link>
		<comments>http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 21:40:27 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[DataSource]]></category>
		<category><![CDATA[GridView]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/</guid>
		<description><![CDATA[Another thing I ran into today. I actually ran into it awhile back but since I ran into it again today I&#8217;d thought I&#8217;d post on it to help anyone who happens to find it. Problem You have a GridView and a SqlDataSource that takes 1 or more Guids as a Parameter. You use the ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/' rel='bookmark' title='ASP .NET GridView Access to Data In Code'>ASP .NET GridView Access to Data In Code</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/02/php5x-or-php6-argument-for-type-hinting-better-ides/' rel='bookmark' title='PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs'>PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Another thing I ran into today. I actually ran into it awhile back but since I ran into it again today I&#8217;d thought I&#8217;d post on it to help anyone who happens to find it.</p>
<h3>Problem</h3>
<p>You have a GridView and a SqlDataSource that takes 1 or more Guids as a Parameter. You use the built in DataSource configuration and it doesn&#8217;t give any errors. However, when you actually run it and pass the Guid, you get this error:</p>
<p><em><strong>&#8220;Implicit conversion from data type sql_variant to uniqueidentifier is not allowed. Use the CONVERT function to run this query.&#8221;</strong></em></p>
<h3> Solution</h3>
<p>Inside your source look at your DataSource. The parameter tag will look something like this:</p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue">&lt;</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #a31515">asp</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue">:</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #a31515">QueryStringParameter</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"> <span style="color: red">Name</span><span style="color: blue">=&#8221;Customer_IID&#8221;</span> <span style="color: red">QueryStringField</span><span style="color: blue">=&#8221;iid&#8221;</span> <span style="color: red">Type</span><span style="color: blue">=&#8221;Object&#8221;</span> <span style="color: blue">/&gt;</span></span></p>
<p class="MsoNormal">Change the Type to <em><strong>Empty</strong></em> like this:</p>
<p class="MsoNormal">&nbsp;</p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue">&lt;</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #a31515">asp</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue">:</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #a31515">QueryStringParameter</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"> <span style="color: red">Name</span><span style="color: blue">=&#8221;Customer_IID&#8221;</span> <span style="color: red">QueryStringField</span><span style="color: blue">=&#8221;iid&#8221;</span> <strong><em><span style="color: red">Type</span><span style="color: blue">=&#8221;Empty&#8221;</span></em></strong> <span style="color: blue">/&gt;</span></span></p>
<p class="MsoNormal">I have no clue why Visual Studio 2005 thinks a Guid should be an Object and not an Empty, but this will fix your problems.</p>
<p class="MsoNormal">&nbsp;</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/' rel='bookmark' title='ASP .NET GridView Access to Data In Code'>ASP .NET GridView Access to Data In Code</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/02/php5x-or-php6-argument-for-type-hinting-better-ides/' rel='bookmark' title='PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs'>PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/01/31/asp-net-gridviews-sqldatasource-and-guid-parameters/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ASP .NET &amp; System.Threading.ThreadAbortException Error</title>
		<link>http://www.justincarmony.com/blog/2008/01/31/asp-net-systemthreadingthreadabortexception-error/</link>
		<comments>http://www.justincarmony.com/blog/2008/01/31/asp-net-systemthreadingthreadabortexception-error/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 20:02:15 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[Errors]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/01/31/asp-net-systemthreadingthreadabortexception-error/</guid>
		<description><![CDATA[While doing some work today I started to run into a ThreadAbortException error. While debugging it spit back this error: Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack. I was really confused because everything seemed to be working just fine, then I found ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p> While doing some work today I started to run into a ThreadAbortException error. While debugging it spit back this error:</p>
<p><em><strong><span id="_ctl0_MainContent_PostFlatView"><span id="_ctl0_MainContent_PostFlatView__ctl0_PostSubject" class="forumName">Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack</span></span></strong></em>.</p>
<p>I was really confused because everything seemed to be working just fine, then I found this forum thread. Turns out there are several causes for this error, but mine was caused by doing a Response.Redirect(); from within a Try-Catch statement. Apparently ASP .NET does not like that.</p>
<p><strong>Workaround</strong></p>
<p>In a try-catch statement, use a boolean variable to mark weather or not to Redirect (or some other variable to accomplish your logic) and preform the Response.Redirect(); <em><strong>outside</strong></em> of your Try Catch. On a side note, I&#8217;ve successfully been able to Redirect from inside the Catch {} aspect, just not the try {}.</p>
<p><strong>Resources</strong></p>
<p>Here is the link to the forums that I found my answer:</p>
<p><a href="System.Threading.ThreadAbortException">http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=268544&amp;SiteID=1</a></p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/01/31/asp-net-systemthreadingthreadabortexception-error/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ASP .NET GridView Access to Data In Code</title>
		<link>http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/</link>
		<comments>http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 16:52:38 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[DataSource]]></category>
		<category><![CDATA[GridView]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/</guid>
		<description><![CDATA[There are situations where you want to gain access to the GridView&#8217;s DataSet to display extra information outside of the GridView. I found the following code to work the best for me. You can get the information from the DataSource of a GridView by doing the following: DataView dv = (DataView)sdsDataSource.Select(DataSourceSelectArguments.Empty); if (dv != null) ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>There are situations where you want to gain access to the GridView&#8217;s DataSet to display extra information outside of the GridView. I found the following code to work the best for me. You can get the information from the DataSource of a GridView by doing the following:</p>
<p><span style="font-size: 10pt; font-family: 'Courier New'; color: #2b91af">DataView</span><span style="font-size: 10pt; font-family: 'Courier New'"> dv = (<span style="color: #2b91af">DataView</span>)sdsDataSource.Select(<span style="color: #2b91af">DataSourceSelectArguments</span>.Empty);</span><br />
<span style="font-size: 10pt; font-family: 'Courier New'; color: blue">if</span><span style="font-size: 10pt; font-family: 'Courier New'"> (dv != <span style="color: blue">null</span>)<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'">{</span><br />
<span style="font-size: 10pt; font-family: 'Courier New'; color: blue">  try<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'"><span>      </span>{<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'"><span>      </span><span>      </span>strName = (<span style="color: #2b91af">String</span>)dv.Table.Rows[0][<span style="color: #a31515">"Name"</span>];<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'"><span>     </span><span> </span>}<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'"><span>      </span><span style="color: blue">catch</span> { strName = <span style="color: #a31515">&#8220;N/A&#8221;</span>; }<o:p></o:p></span><br />
<span style="font-size: 10pt; font-family: 'Courier New'">}</span></p>
<p>You should be able to access whatever information you need from the <span style="font-size: 10pt; font-family: 'Courier New'; color: #2b91af">DataView</span><span style="font-size: 10pt; font-family: 'Courier New'"></span>.</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/' rel='bookmark' title='ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript'>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/01/22/asp-net-gridview-access-to-data-in-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ASP .NET Accessing Session, Request, Response, etc from within a Class</title>
		<link>http://www.justincarmony.com/blog/2008/01/17/asp-net-accessing-session-request-response-etc-from-within-a-class/</link>
		<comments>http://www.justincarmony.com/blog/2008/01/17/asp-net-accessing-session-request-response-etc-from-within-a-class/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 22:30:38 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[HttpContext]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/01/17/asp-net-accessing-session-request-response-etc-from-within-a-class/</guid>
		<description><![CDATA[I remember it took me forever to figure this out and the headache before learning this that it caused. Because .NET is strongly typed you are unable to access the Session, Request, or Response (and many other Http/Web object) from within a class library like you can writing in a code-behind file or on the ...


Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2007/12/31/retrieve-current-modulecontrolleraction-inside-view-script-layout-script/' rel='bookmark' title='Retrieve Current Module/Controller/Action inside View Script / Layout Script'>Retrieve Current Module/Controller/Action inside View Script / Layout Script</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/02/php5x-or-php6-argument-for-type-hinting-better-ides/' rel='bookmark' title='PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs'>PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I remember it took me forever to figure this out and the headache before learning this that it caused. Because .NET is strongly typed you are unable to access the Session, Request, or Response (and many other Http/Web object) from within a class library like you can writing in a code-behind file or on the page itself. I battled for weeks (I almost think months) trying to find ways of passing information between my pages and class library, when I finally found the answer:</p>
<p class="MsoNormal"><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #2b91af">HttpContext</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'">.Current.Session</span><br />
<span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #2b91af">HttpContext</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #2b91af"><font color="#000000">.Current.Response</font><br />
HttpContext</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'">.Current.Request</span></p>
<p class="MsoNormal">Thats it. No special magic, just use the <span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: #2b91af">HttpContext</span><span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'">.Current</span> Object within a class library that is being used within the context of a website. Once I found that, it made life so much easier, and if you are reading this, I hope it makes your life easier too.</p>
<p class="MsoNormal">&nbsp;</p>


<p>Related posts:<ol><li><a href='http://www.justincarmony.com/blog/2007/12/31/retrieve-current-modulecontrolleraction-inside-view-script-layout-script/' rel='bookmark' title='Retrieve Current Module/Controller/Action inside View Script / Layout Script'>Retrieve Current Module/Controller/Action inside View Script / Layout Script</a></li>
<li><a href='http://www.justincarmony.com/blog/2008/01/02/php5x-or-php6-argument-for-type-hinting-better-ides/' rel='bookmark' title='PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs'>PHP5.x or PHP6 &#8211; Argument for Type-Hinting: Better IDEs</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/01/17/asp-net-accessing-session-request-response-etc-from-within-a-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP .NET 2.0, GridViews, HyperLinkField, and JavaScript</title>
		<link>http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/</link>
		<comments>http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/#comments</comments>
		<pubDate>Tue, 08 Jan 2008 04:34:00 +0000</pubDate>
		<dc:creator>Justin Carmony</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[GridView]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/</guid>
		<description><![CDATA[I&#8217;ve found some interesting notes on ASP .NET&#8217;s GridView, it&#8217;s limitations and work arounds. For work I was looking for a way to execute JavaScript from clicking a link on a GridView Cell. An example would be to having a list of transactions and wanting to click a link to update it&#8217;s details. I noticed ...


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve found some interesting notes on ASP .NET&#8217;s GridView, it&#8217;s limitations and work arounds. For work I was looking for a way to execute JavaScript from clicking a link on a GridView Cell. An example would be to having a list of transactions and wanting to click a link to update it&#8217;s details. I noticed that many functions of GridView used &lt;a&gt; tags to execute JavaScript. An example would be:</p>
<pre class="brush: xml; title: ; notranslate">
&amp;lt;a href=&quot;javascript:myFunction('variable');&quot;&amp;gt;Link&amp;lt;/a&amp;gt;
</pre>
<p>Since I had experience with the HyperLinkField before, I thought I would add a HyperLinkField to my GridView and set  the <strong>DataNavigateUrlFields</strong> to the needed fields and the DataNavigateUrlFormatString to use the fields properly. I was hoping to accomplish it by using the following code, which in turn I found out <em><font color="#ff0000"><strong>this solution does not work:</strong></font></em></p>
<p>[asp]<br />
&lt;asp:HyperLinkField DataNavigateUrlFields=&#8221;UserID,Date&#8221; DataNavigateUrlFormatString=&#8221;javascript:updatePanel(&#8216;{0}&#8217;,'{1:d}&#8217;);&#8221;<br />
HeaderText=&#8221;View&#8221; Text=&#8221;Details&#8221; /&gt;<br />
[/asp]</p>
<p>It turns out that there is a bug with the DataNavigateUrlFormatString and HyperLinkField that when trying to use javascript inside, it strips the <strong>href attribute</strong> and  leaves just a &lt;a&gt;Text&lt;/a&gt;, not giving the user a link. I found information <a href="http://forums.asp.net/p/1034007/1425058.aspx" title="ASP .NET GridView Bug" target="_blank">here at this forum post</a>. This is as of ASP .NET 2.0 and I don&#8217;t know about 3.0 or 3.5. As show in the forum post, this is the correct way to insert JavaScript into your gridview:</p>
<p>[asp]<br />
&lt;asp:TemplateField HeaderText=&#8221;Details&#8221;&gt;<br />
&lt;ItemStyle CssClass=&#8221;viewLines&#8221; /&gt;<br />
&lt;ItemTemplate&gt;<br />
&lt;a id=&#8221;user&lt;%# Eval(&#8220;userid&#8221;) %&gt;&#8221; href=&#8221;javascript:updatePanel(&#8216;&lt;%# Eval(&#8220;userid&#8221;) %&gt;&#8217;,'&lt;%# Eval(&#8220;date&#8221;) %&gt;&#8217;);&#8221;&gt;View User&lt;/a&gt;<br />
&lt;/ItemTemplate&gt;<br />
&lt;/asp:TemplateField&gt;<br />
[/asp]</p>
<p>Now, using this technique I was able to use <a href="http://jquery.com" title="jQuery Home Page">jQuery </a>to insert a row below the clicked item and add additional information.</p>
<pre class="brush: xml; title: ; notranslate">
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
function updatePanel(user,date)
{
$('#LineItems').remove(); // remove previous entries anywhere in the grid

//  Now I got up two parents, to get to the TR tag, and I append after it another row with id's so I can identifier them easily with jQuery.
$('#tran'+tran_id).parent().parent().after('&amp;lt;tr id=&quot;LineItems&quot;&amp;gt;&amp;lt;td&amp;gt;Add. Info.&amp;lt;/td&amp;gt;&amp;lt;td colspan=\&quot;10\&quot; id=&quot;LineItemsContent&quot;&amp;gt;Getting information...&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;');
// I load the information through an ajax call
$('#LineItemsContent').load('Details.aspx?u='+user+'&amp;amp;date='+date);

}
&amp;lt;/script&amp;gt;
</pre>
<p>I hope this can help people who are struggling to figure out why their HyperLinkFields won&#8217;t work correctly with JavaScript.</p>
<p>Justin</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.justincarmony.com/blog/2008/01/07/asp-net-20-gridviews-hyperlinkfield-and-javascript/feed/</wfw:commentRss>
		<slash:comments>1</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 38/123 queries in 0.040 seconds using memcached
Content Delivery Network via Rackspace Cloud Files: c747925.r25.cf2.rackcdn.com

Served from: www.justincarmony.com @ 2012-02-07 20:57:25 -->
