<?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>Dan Grossman &#187; programmer</title>
	<atom:link href="http://www.dangrossman.info/tag/programmer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dangrossman.info</link>
	<description></description>
	<lastBuildDate>Thu, 19 Aug 2010 20:19:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Product in a Day: FeedLines</title>
		<link>http://www.dangrossman.info/2008/07/29/product-in-a-day-feedlines/</link>
		<comments>http://www.dangrossman.info/2008/07/29/product-in-a-day-feedlines/#comments</comments>
		<pubDate>Tue, 29 Jul 2008 06:53:40 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[USD]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/?p=244</guid>
		<description><![CDATA[This is my first attempt at building a simple product of my own to sell, rather than a service or subscription. I watch the SitePoint Marketplace on an almost daily basis, and I see so many simple, turnkey sites sold and resold on a consistent basis. While the scripts behind these sites may seem simple [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.feedlines.net"><img src="http://www.feedlines.net/logo.png" alt="FeedLines" style="float: left; border: 0; margin: 0 10px 10px 0" /></a>This is my first attempt at building a simple product of my own to sell, rather than a service or subscription. I watch the <a href="http://marketplace.sitepoint.com">SitePoint Marketplace</a> on an almost daily basis, and I see so many simple, turnkey sites sold and resold on a consistent basis. While the scripts behind these sites may seem simple to a programmer like me, there seems to be a market out there for any type of unique site.</p>
<p>Today I fleshed out the script I wrote for <a href="http://www.websitegoodies.com/news.php">Website Goodies&#8217; Industry News</a> page into something generic enough anyone could use it. <a href="http://www.feedlines.net/">FeedLines</a> is the result &mdash; an RSS feed aggregator much like <a href="http://www.popurls.com">PopUrls</a> or <a href="http://www.alltop.com">AllTop</a>, two pretty high traffic sites. <a href="http://www.feedlines.net/">FeedLines</a> serves as a demo of the site and links to a page where you can buy the script for $49.95. I am going to give selling copies of this as turnkey sites on the marketplace a try later this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2008/07/29/product-in-a-day-feedlines/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>My Software Failures</title>
		<link>http://www.dangrossman.info/2007/03/08/my-software-failures/</link>
		<comments>http://www.dangrossman.info/2007/03/08/my-software-failures/#comments</comments>
		<pubDate>Thu, 08 Mar 2007 20:00:05 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[COBOL]]></category>
		<category><![CDATA[CRM]]></category>
		<category><![CDATA[expert system]]></category>
		<category><![CDATA[Jeff Salvage]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[professor]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[Washington]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2007/03/08/my-software-failures/</guid>
		<description><![CDATA[&#8220;The Daily WTF&#8221; has been on my daily reading list for a long time, and I do read it every day. Last week the site changed its name to &#8220;Worse Than Failure&#8221; and kicked off with an interesting post by Alex on the new name and how it applies to all the programmers that read [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;The Daily WTF&#8221; has been on my <a href="http://www.dangrossman.info/links">daily reading list</a> for a long time, and I do read it every day. Last week the site changed its name to &#8220;Worse Than Failure&#8221; and kicked off with <a href="http://worsethanfailure.com/Articles/What_Could_Possibly_Be_Worse_Than_Failure_0x3f_.aspx">an interesting post</a> by Alex on the new name and how it applies to all the programmers that read the site.<span id="more-77"></span></p>
<p>I wish more computer science professors would try to get Alex&#8217;s message across. After my Microsoft internship (which I&#8217;m flying out to Washington for at the end of the month), I&#8217;ll have only a few classes left before graduating. The four years I&#8217;ve been here so far, only one professor, <a href="http://www.jeffsalvage.com/jeffsalvage/default.asp">Jeff Salvage</a>, posed the question of whether software that&#8217;s poorly designed but is working to the client&#8217;s specification is a success or not. </p>
<p>If it&#8217;s not maintainable, impossible to enhance, not scaleable, it&#8217;s a failure even if it works. Anyone that&#8217;s worked on software for someone other than themselves probably knows it is rarely going to be static &mdash; there will always be feature requests, there will always be changes, there will always be bugs. If the software wasn&#8217;t designed properly up front, each change is going to introduce redundancy, hacks, and more bugs. Eventually the code base won&#8217;t be able to handle more change and has to be rewritten entirely.</p>
<p>I&#8217;ve had my share of failures that I&#8217;d like to put in writing so I never forget. These are all pieces of software that were considered a success by the clients they were developed for and their users, that made it to production use or even commercial sale.</p>
<p>The CRM/SFA software I wrote for Access 2 Vendors at the end of high school and the beginning of college was a failure. It was written in PHP and MySQL before I was competent with either and before I had any education in software design. I had no requirements when I started the project, and each ability it was to have came in a weekly e-mail. All this added up to very little design at all, starting over half way through the project to remove snowballing redundancy. It was coded in entirely procedural style, with no database abstraction, horribly suboptimal database queries and, in the end, way too much redundancy. Eventually I had to cut off the project when it simply couldn&#8217;t bear more features without another rewrite. As far as I know, there are commercial users of the system, but it runs awfully slow and will probably never be picked up by another programmer.</p>
<p>The custom &#8220;shopping cart&#8221; I wrote for The Math Forum. PHP was not an option in their environment, so I wrote it in Perl, again prior to any education in design (at that point, after my first year of college, I had only C++ programming courses behind me, nothing higher level about <i>what</i> and <i>how</i> to code). I invented my own &#8220;framework&#8221; which involved separating the &#8220;UI stuff&#8221; from the &#8220;database stuff&#8221;, essentially through duplicating the same logic in two places, processing form submissions to decide what to show next in one place, and manipulating the database in another place. All that got me was two places to edit each time something needed to change, and no less code coupling and no more maintainability. It&#8217;d probably be better to rewrite it from scratch than try to edit it to change the flow of their purchasing area &mdash; although I doubt they did.</p>
<p>The second version of W3Counter. The first version of that service was based on a commercial script I found through HotScripts. The second version was my attempt to add new features by keeping the core code base of that, which in itself was a huge failure in design terms, and try to &#8220;stick on&#8221; my new code. There was no structure, lots of copying and pasting, and lots of hard-to-see dependencies that would break the whole service if one part were changed. It worked, but barely. The third version was a success (and its performance issues are simply a limitation of hardware due to signing up too many thousands of users; I&#8217;m confident in both the software and database design).</p>
<p>The &#8220;missing translation reporting&#8221; feature I added to DuPont&#8217;s Global Reporting System. I can&#8217;t take credit for the failure of the rest of that system. It started out on the right foot a few years before I worked there &mdash; a solid, modular, expandable design. Yet through switching programmers every 6 months, many of them being inexperienced college students, and bringing in remote developers unrelated to the project to build new modules for it, the design principles the software started with were soon abandoned. Code was duplicated, old programmers used to writing COBOL for DuPont&#8217;s mainframe tried to reproduce their style in C++, and logic was split between &#8220;expert system&#8221; rule files and hardcoded conditionals. My contributions, in general, were good &mdash; fixing other programmers&#8217; mistakes, removing duplication, contributing clear and maintainable classes with documented interfaces and low coupling. But the request for a way to report on &#8220;missing translations&#8221; was a failure &mdash; it needed to touch on almost every class and every file in the software, and I wasn&#8217;t able to design something that could do that well.</p>
<p>Looking back on some of the code I wrote just a few years ago, it&#8217;s hard to imagine writing it. It&#8217;s hard to imagine choosing to design software in those ways. It&#8217;s hard to imagine ignoring efficiency, ignoring security, and duplicating so much logic. But realizing that while all that code I wrote made it into use, and was considered a &#8220;success&#8221; by others, is actually a failure, will keep me from repeating the same mistakes again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2007/03/08/my-software-failures/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quest for the Perfect Keyboard</title>
		<link>http://www.dangrossman.info/2007/02/20/quest-for-the-perfect-keyboard/</link>
		<comments>http://www.dangrossman.info/2007/02/20/quest-for-the-perfect-keyboard/#comments</comments>
		<pubDate>Tue, 20 Feb 2007 17:14:15 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Hardware]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[Wireless Elite Desktop]]></category>
		<category><![CDATA[wireless keyboard]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2007/02/20/quest-for-the-perfect-keyboard/</guid>
		<description><![CDATA[I like my keyboards. The last time I used the keyboard that came with a computer was the custom painted one that came with an Alienware system in 1999. Since then I&#8217;ve gone through quite a few from Microsoft, Logitech and Kensington. The latest one I tried out was a Kensington wireless keyboard and mouse [...]]]></description>
			<content:encoded><![CDATA[<p>I like my keyboards. The last time I used the keyboard that came with a computer was the custom painted one that came with an Alienware system in 1999. Since then I&#8217;ve gone through quite a few from Microsoft, Logitech and Kensington. The latest one I tried out was a Kensington wireless keyboard and mouse set from which I only use the keyboard. It feels nice to type on, nicer than the Logitech Elite, has a leather wrist rest built in, and is wireless.<span id="more-75"></span></p>
<p>Biggest problem is it&#8217;s wireless. The advertised range was 30 feet, but it&#8217;s never worked more than a single foot away from the receiver. As the batteries start to die down after a few weeks, I have to inch the keyboard tray more and more under the desk so it stays in contact with the receiver to type. Right now I&#8217;m typing with my hands completely under the desk &mdash; it&#8217;s good I don&#8217;t ever look at the keyboard anyway.</p>
<p><img src="http://www.dangrossman.info/photos/misc/desktop7000.jpg" alt="Microsoft Wireless Elite Desktop 7000" style="float: left; margin: 0 5px 5px 0">Given I&#8217;m a programmer, have e-mails from customers to respond to every day and papers to write for classes, you&#8217;d think I would just replace the keyboard with a decent one pretty quickly. Yet I&#8217;ve been waiting for a specific keyboard since I first saw it in September that was due in stores about two months ago. It&#8217;s the <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FMicrosoft-Wireless-Entertainment-Desktop-Silver%2Fdp%2FB000H12IAC&#038;tag=awio-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Microsoft Wireless Elite Desktop 7000</a>. </p>
<p>It was due to go on sale by January but never showed up at a single store. Since there were never any corrections to the press releases with the release dates, I had asked one of the Microsoft recruiters if he knew anything about Microsoft Hardware and when it&#8217;d come out, and sent e-mails to Gizmodo and Engadget who somehow had gotten multiple samples for review. Nobody knew why they weren&#8217;t for sale yet, and I still don&#8217;t know, except that a few sellers just started listing it on Amazon Marketplace two days ago. I picked the one with the most reviews and ordered; hope it comes soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2007/02/20/quest-for-the-perfect-keyboard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft Interviews: I Won an Xbox 360!</title>
		<link>http://www.dangrossman.info/2007/01/16/microsoft-interviews-i-won-an-xbox-360/</link>
		<comments>http://www.dangrossman.info/2007/01/16/microsoft-interviews-i-won-an-xbox-360/#comments</comments>
		<pubDate>Wed, 17 Jan 2007 00:31:51 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Bill Gates]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[controller]]></category>
		<category><![CDATA[direct manager]]></category>
		<category><![CDATA[drooling]]></category>
		<category><![CDATA[free software movement]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[manager types]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft Hardware]]></category>
		<category><![CDATA[Microsoft Vista]]></category>
		<category><![CDATA[Nintendo]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[programmer]]></category>
		<category><![CDATA[recruiter for the IT department]]></category>
		<category><![CDATA[Richard Stallman]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[software patents]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.dangrossman.info/2007/01/16/microsoft-interviews-i-won-an-xbox-360/</guid>
		<description><![CDATA[I finally had the last of this round of interviews &#8212; my first attempt to find a coop job for April through September to finish the work experience requirement of my degree at Drexel. I met with two really nice people from Microsoft in the morning. First, a recruiter for the IT department that just [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/photos/dans-stuff/xbox_small.jpg" alt="Xbox 360" style="float: left; margin-right: 10px; margin-bottom: 10px" />I finally had the last of this round of interviews &mdash; my first attempt to find a coop job for April through September to finish the work experience requirement of my degree at Drexel. I met with two really nice people from Microsoft in the morning. First, a recruiter for the IT department that just tried to get to know my personality, where my passions lie and why I want to work at Microsoft. She had this great personality and was really easy to talk with so the whole thing flowed very smoothly.<span id="more-66"></span></p>
<p>Then I met with someone that did more technical work for MSIT who went through my experience more in depth. He was great too, I got to talk a lot about myself which doesn&#8217;t always happen with some interviewers, but it stayed conversational. We spent some time talking about Vista and the bugs in the RCs and even into Microsoft Hardware &mdash; he promised to let me know if he can find out why nobody has <a href="http://www.amazon.com/o/ASIN/B000H12IAC/ref=s9_asin_image_1/102-8889738-5800933">the keyboard I&#8217;ve been drooling over since September</a> in stock even though the ship date for the 7000 series was supposed to be 1/8. </p>
<p>A couple hours later I met up with some manager types from DuPont where I worked last year and talked about coming back if I didn&#8217;t get an offer from Microsoft. It&#8217;s always good to have a backup plan. The two Microsoft interviews went well but I don&#8217;t honestly expect an offer &mdash; I have no recent work experience developing in the Visual Studio environment, with .NET or anything that&#8217;s come about in the last 4 years or so since moving off to C++, Java and PHP. </p>
<p>My direct manager, who offered me his job before I left, already left the company for another position, but he made sure everyone else knew I was the best programmer on the team when I was there, so they definitely want to re-hire me.</p>
<p>The Microsoft group that flew in got an e-mail out to everyone that interviewed with them through Drexel&#8217;s career development center to let us know they were having an info session  type gathering in the evening which I just got back from. It was real casual and they and a student from Drexel that worked there last year (and is going back to join the Xbox XA team) talked about life at Microsoft and in Seattle.</p>
<p>About half an hour into it they pulled out a brand new Xbox 360 with a bunch of games and had everyone throw their names in a hat and raffled it off. I won! I haven&#8217;t owned a game console since the Nintendo 64, which my parents had paid for so many years ago. I&#8217;ve never spent my own money on one, but now I get to try out everything I saw when Bill Gates gave the CES keynote address last week &mdash; Xbox Live, Xbox TV, Vista Ultimate&#8217;s media center integration with Xbox Live, using the Xbox 360 controller to navigate MS Live Virtual Earth. I&#8217;ll have a lot of fun with this.</p>
<p style="text-align: center"><img src="/photos/dans-stuff/xbox.jpg" alt="Xbox 360" /></p>
<p>A great day in the end. I&#8217;ve got a lot of work to catch up on so I&#8217;ll stop writing here, but I also got to meet Richard Stallman in person, the man behind GNU and the free software movement. He gave an hour and a half talk at Drexel about software patents that I managed to get to between interviews and classes. Very interesting guy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dangrossman.info/2007/01/16/microsoft-interviews-i-won-an-xbox-360/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
