<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>I Make Web Junk</title>
	
	<link>http://www.imakewebjunk.com</link>
	<description>Dave Konopka, Philly web developer</description>
	<lastBuildDate>Wed, 28 Jul 2010 19:45:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/IMakeWebJunk" /><feedburner:info uri="imakewebjunk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Interactive experiences with jQuery</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/AijjoVGmnXI/</link>
		<comments>http://www.imakewebjunk.com/2010/07/28/interactive-experiences-with-jquery/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 19:45:12 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[presentations]]></category>
		<category><![CDATA[software practice]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=454</guid>
		<description><![CDATA[Last week I gave a presentation on creating interactive web experiences using jQuery at the Wharton UIConf/Higher Ed Web Symposium over at the University of Pennsylvania.

For the presentation I took a plain HTML student schedule form and added a bunch of interactive features: a floating modal dialog box, visual animations, dynamic event handling, and AJAX [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I gave a presentation on creating interactive web experiences using <a href="http://www.jquery.com">jQuery</a> at the <a href="http://web.wharton.upenn.edu/uiconf2010/">Wharton UIConf/Higher Ed Web Symposium</a> over at the University of Pennsylvania.</p>

<p>For the presentation I took a plain HTML student schedule form and added a bunch of interactive features: a floating modal dialog box, visual animations, dynamic event handling, and AJAX content refreshes and server posts. Then I walked through the core features of jQuery that make it an invaluable tool for developing web applications that are both interactive and maintainable.</p>

<p>The demo applications are available here:<br />
<a href="http://uiconf10-jquery-app.heroku.com/">http://uiconf10-jquery-app.heroku.com/</a></p>

<p>The slides are available here:<br />
<a href="http://uiconf10-jquery.heroku.com/">http://uiconf10-jquery.heroku.com/</a></p>

<p><span id="more-454"></span>
I only had the chance to attend the first day of the conference. There was real energy in the crowd for putting serious thought into the design and experience of online content/apps. It was great to see so many people interested in learning and sharing, especially here in Philly.</p>

<p>On a side note &#8212; since my slides for the presentation were very code-heavy, I took a chance and used a Ruby presentation framework called <a href="http://github.com/schacon/showoff">Showoff</a>. The chance paid off. Showoff turned out to be a <strong>huge</strong> time and effort saver in putting together the presentation content.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/AijjoVGmnXI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/07/28/interactive-experiences-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/07/28/interactive-experiences-with-jquery/</feedburner:origLink></item>
		<item>
		<title>Web security for developers</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/_1B-igfTnu4/</link>
		<comments>http://www.imakewebjunk.com/2010/05/27/web-security-for-developers/#comments</comments>
		<pubDate>Thu, 27 May 2010 04:22:26 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[presentations]]></category>
		<category><![CDATA[software practice]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=439</guid>
		<description><![CDATA[This week I gave a presentation on security issues facing web developers to members of PANMA, the Philadelphia Area New Media Association, along with security expert Justin Klein Keane.

View the slide deck in PDF format

View related web security resources

My presentation covered common web security risks including cross-site scripting, injection, cross-site request forgery, and a few [...]]]></description>
			<content:encoded><![CDATA[<p>This week I gave a presentation on security issues facing web developers to members of <a href="http://twitter.com/panma">PANMA</a>, the Philadelphia Area New Media Association, along with security expert <a href="http://www.madirish.net/">Justin Klein Keane</a>.</p>

<p><a href="http://github.com/webjunk/PANMA-WebSecurity/raw/master/panma_security_dk.pdf" target="_blank">View the slide deck in PDF format</a></p>

<p><a href="http://bit.ly/panma-security" target="_blank">View related web security resources</a></p>

<p>My presentation covered common web security risks including cross-site scripting, injection, cross-site request forgery, and a few others listed in the <a href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project">OWASP Top 10</a> project. The presentation is meant to be a starting point to help web developers get into a security mindset. There&#8217;s valuable lessons in there for folks running any kind of web system using PHP, .NET, Ruby on Rails, or any other web platform.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/_1B-igfTnu4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/05/27/web-security-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/05/27/web-security-for-developers/</feedburner:origLink></item>
		<item>
		<title>Failing to plan is planning to fail</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/7dizHaVXVfg/</link>
		<comments>http://www.imakewebjunk.com/2010/05/21/failing-to-plan-is-planning-to-fail/#comments</comments>
		<pubDate>Fri, 21 May 2010 14:25:43 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software practice]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=424</guid>
		<description><![CDATA[I recently wrote a series titled Spec&#8217;ing the Specs for my employer&#8217;s blog on the topic of software project planning.

The posts aren&#8217;t focused on a specific approach or methodology. They offer up some practices to help keep communication and collaboration alive throughout the life of a software project from conception to deployment.

What kind of planning [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wrote a series titled <em>Spec&#8217;ing the Specs</em> for my <a href="http://baysidetech.com/blog/" target="_blank">employer&#8217;s blog</a> on the topic of software project planning.</p>

<p>The posts aren&#8217;t focused on a specific approach or methodology. They offer up some practices to help keep communication and collaboration alive throughout the life of a software project from conception to deployment.</p>

<p>What kind of planning practices have you tried on your own projects? What&#8217;s been an amazing improvement? What&#8217;s been a failure?</p>

<p><strong>Spec&#8217;ing the Specs</strong></p>

<ol>
    <li><a href="http://baysidetech.com/blog/2010/03/specing-the-specs-what-should-my-software-do/" target="_blank">What should my software do?</a></li>
    <li><a href="http://baysidetech.com/blog/2010/04/specing-the-specs-rethink-the-manual/" target="_blank">Rethink the manual</a></li>
    <li><a href="http://baysidetech.com/blog/2010/05/specing-the-specs-keeping-a-project-on-trackl/" target="_blank">Keeping a project on track</a></li></ol>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/7dizHaVXVfg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/05/21/failing-to-plan-is-planning-to-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/05/21/failing-to-plan-is-planning-to-fail/</feedburner:origLink></item>
		<item>
		<title>Developers, embrace the system</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/Z-kPVttNr0s/</link>
		<comments>http://www.imakewebjunk.com/2010/05/18/developers-embrace-the-system/#comments</comments>
		<pubDate>Tue, 18 May 2010 14:43:29 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[software practice]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=413</guid>
		<description><![CDATA[Some web developers avoid systems work like the plague. I can understand a developer&#8217;s reluctance to take a position that comes with systems responsibilities. Systems roles usually come with thankless maintenance work and after hours on-call duties. It&#8217;s the kind of work that gets you reprimands when services are unavailable but goes otherwise unnoticed when [...]]]></description>
			<content:encoded><![CDATA[<p>Some web developers avoid systems work like the plague. I can understand a developer&#8217;s reluctance to take a position that comes with systems responsibilities. Systems roles usually come with thankless maintenance work and after hours on-call duties. It&#8217;s the kind of work that gets you reprimands when services are unavailable but goes otherwise unnoticed when things are running smoothly.</p>

<p>So why do developers need to worry about systems?  Because we&#8217;re increasing the complexity of our apps with new development platforms, single-focus software solutions, and interconnected cloud services. These new tools help us release features faster and make our applications more reliable and performant. But with every extra bit of complexity we&#8217;re adding new infrastructure demands to support our apps.
<span id="more-413"></span></p>

<p>There&#8217;s a shift well underway from scaling up applications with expensive hardware to scaling out by using varied, distributed, on-demand computing and storage services. It&#8217;s no longer acceptable to expect a systems support team to setup a blind environment for deployment. And it&#8217;s not reasonable to expect someone else to work out our software configuration issues manually. Systems have to become part of our software planning process. Our applications have to be built with stock platforms in mind to make sure we can take advantage of horizontal scaling.</p>

<p>Automation is the oil that will keep all these interconnected pieces running smoothly. Whenever I find myself doing something twice, it&#8217;s time to consider scripting it or finding a tool that fits the need. There&#8217;s a time hit to setting up the first time but the consistency that automation adds is almost always worth the effort.</p>

<p>The more systems tasks that we can automate as developers, the more systems folks are freed up to innovate in their world. Less maintenance and fretting over our customizations means more time spent on performance optimizations, strengthening availability, and exploring innovative platform and service options. That&#8217;s where systems teams can add a huge amount of value to an organization.</p>

<p>So what can we do as developers to dig into systems?</p>

<ul>
<li><p><strong>Virtualize, now.</strong> Install a virtual machine using an unfamiliar OS on your desktop. Set up two. Get used to how they interact with each other. <a href="http://www.virtualbox.org/">VirtualBox</a> is free and rock solid. Pick a <a href="http://en.wikipedia.org/wiki/Comparison_of_Linux_distributions">linux distro</a> and run the installation while you code.</p></li>
<li><p><strong>Setup continuous integration for yourself.</strong> Setup a deployment environment in one of your new vm&#8217;s. Get a project automatically deploying from source control. Check out <a href="https://hudson.dev.java.net/">Hudson</a>, <a href="http://www.jetbrains.com/teamcity/">TeamCity</a>, and <a href="http://cerberus.rubyforge.org/">Cerberus</a></p></li>
<li><p><strong>Setup a sandbox environment that mirrors production.</strong> If your production environment is clustered, make sure you have a dev environment that is too. Feel the pain points early and capture solutions as reusable code.</p></li>
<li><p><strong>Sign up for a cloud service account.</strong> Deploy a throw-away app on an unfamiliar system. Get a feel for how deployment works on different cloud systems. You&#8217;ll discover techniques you can work into your own platform. Try setting up a simple content page on <a href="http://heroku.com/">Heroku</a>, the base plan is completely free.</p></li>
</ul>

<p>None of these things require permission or changes to to your workflow to start. They do take some effort and time. But the practice will make us all better equipped developers.</p>

<p>In the evolving world of distributed cloud services and on-demand computing, the gulf between developers and systems folks is shrinking quickly. There will always be a need for specialists on either side. But the overlap between the two worlds is expanding and that can be a huge win for everyone involved.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/Z-kPVttNr0s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/05/18/developers-embrace-the-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/05/18/developers-embrace-the-system/</feedburner:origLink></item>
		<item>
		<title>Keep your ASP.NET Master Pages light</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/nwmX75F83Ro/</link>
		<comments>http://www.imakewebjunk.com/2010/04/27/keep-your-asp-net-master-pages-light/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 14:26:17 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[examples]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=399</guid>
		<description><![CDATA[ASP.NET Master Pages are a great way to make reusable web page templates. A Master Page template file can hold  all the common HTML markup, CSS and JavaScript references, and .NET controls that appear throughout the pages of your web site. Each of your web pages injects only its own specialized content into the [...]]]></description>
			<content:encoded><![CDATA[<p>ASP.NET <a href="http://msdn.microsoft.com/en-us/library/wtxbf3hh.aspx">Master Pages</a> are a great way to make reusable web page templates. A Master Page template file can hold  all the common HTML markup, CSS and JavaScript references, and .NET controls that appear throughout the pages of your web site. Each of your web pages injects only its own specialized content into the shell of the Master Page.</p>

<p>Once you start using Master Pages as shared templates it&#8217;s tempting to start putting shared functionality into them. After all, Master Pages fire their own events like regular web form pages. They can be referenced as objects from the pages that use them. So they may seem like a good place to keep common functions and properties that you need throughout the pages in your site. But there are a few Master Page gotchas that make this a poor practice.</p>

<p><span id="more-399"></span></p>

<h3>Master Page gotchas</h3>

<p>ASP.NET Master Pages seem like they&#8217;re base classes. You declare a Master Page in web form markup header.</p>

<pre><code>&lt;%@ Page Language="C#" MasterPageFile="~/MasterPages/SiteTemplate.master" Title="About Us Page"%&gt;
</code></pre>

<p>Then you define blocks of output content in your page to insert into the Master Page template when a form loads.</p>

<pre><code>&lt;asp:Content ID="ContentBody" ContentPlaceHolderID="Main" Runat="Server"&gt;
    &lt;h1&gt;About Us&lt;/h1&gt;
    &lt;p&gt;We are...&lt;/p&gt;
&lt;/asp:Content&gt;
</code></pre>

<p>And in your page you can reference the Master Page as an object, execute functions and access properties.</p>

<pre><code>contentBodyHolder = (ContentPlaceHolder)Master.FindControl("ContentBody");
</code></pre>

<p>Though it may seem like a base class for pages, a Master Page is really more like a control that loads in the page that uses it. That may feel counterintuitive since the rendered Master Page output contains the calling page output. But the page actually loads the Master Page in much the same way it loads form controls.</p>

<p>For example, the Master Page page load event fires <strong>after</strong> the page load event of a page that uses the master. So with that in mind you can&#8217;t put common page setup logic into a Master Page load event and make use of the results in your page loads. The Master Page event will not fire until after the page&#8217;s load event is complete.</p>

<p>I mentioned that a Master Page is exposed as an object in any page that uses it. The catch is that it&#8217;s exposed as a generic <code>System.Web.UI.MasterPage</code> type. That means that any extra functions or properties you add to your master page will not be visible to Intellisense or to your compiler.</p>

<p>In order to make use of customizations you&#8217;ll have to cast the page object as the specific type of your Master Page within your web page. This means an extra bit of code crowding all of your pages. So while this might seem handy at first, it&#8217;s not the most practical approach.</p>

<pre><code>((SiteTemplate)this.Master).HeaderText = "About Us Page";
</code></pre>

<h3>Use Master Pages for templates, base classes for shared functionality</h3>

<p>So Master Pages are great for templating, but weak for storing common logic and values. Where should you put that common stuff? Put it in a base form class.</p>

<p>Create a class that inherits <code>System.Web.UI.Page</code>. You can add a page load event handler to that class. You can also add any properties or common functions that you need there. Set your pages to inherit from this class rather than <code>System.Web.UI.Page</code>.</p>

<pre><code>public class MyBasePage : System.Web.UI.Page
{
    protected override void OnLoad(System.EventArgs e)
    {
        ...
        base.OnLoad(e);
    }
}
</code></pre>

<p>The base class load event fires before your form load events fire. So you can put common setup logic in there. All of the properties, variables, and functions you add to the base class will be immediately available in all of the inheriting pages without any casting. The customizations will show up in page Intellisense without any extra code on the page side.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/nwmX75F83Ro" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/04/27/keep-your-asp-net-master-pages-light/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/04/27/keep-your-asp-net-master-pages-light/</feedburner:origLink></item>
		<item>
		<title>Emerging tech is changing the enterprise</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/6IjM3t0kgrc/</link>
		<comments>http://www.imakewebjunk.com/2010/04/13/emerging-tech-is-changing-the-enterprise/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 16:25:34 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[philly]]></category>
		<category><![CDATA[software practice]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=327</guid>
		<description><![CDATA[Last week I attended the Philly Emerging Technologies for the Enterprise conference (#PhillyETE). It was my first time attending the five year old conference organized by Chariot Solutions. From start to finish it was a good event for software developers looking to get up to speed on some technologies that are well on their way [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I attended the <a href="http://phillyemergingtech.com/">Philly Emerging Technologies for the Enterprise</a> conference (<a href="http://search.twitter.com/search?q=phillyete">#PhillyETE</a>). It was my first time attending the five year old conference organized by <a href="http://www.chariotsolutions.com/">Chariot Solutions</a>. From start to finish it was a good event for software developers looking to get up to speed on some technologies that are well on their way to critical mass in the industry. Three hotel meals a day and open bar happy hour events didn&#8217;t hurt either.</p>

<p>A lot of the topics on the agenda weren&#8217;t news to attendees. But the chatter surrounding them indicate growing acceptance of the tools and concepts as industry standards. The elusive &#8220;enterprise&#8221; is a beast that takes time to come around. But smaller, more agile shops are tackling enterprise problems more than ever. And with that shift comes a quickening pace of the variety of tools folks are using to tackle those problems. Static, monolithic solutions are being replaced, or at the very least enhanced, one by one by quickly evolving, narrow focus options.</p>

<p><span id="more-327"></span>
The topics I noticed most discussed were the practice of software craftsmanship, NotOnlySQL alternative data stores, cloud based operations and services, functional programming to take advantage of parallel processing, and system configuration as code.</p>

<p>If you&#8217;re interested, my boring <a href="http://gist.github.com/364757">session notes are posted</a> on github.</p>

<h3>Craftsmanship</h3>

<p>The first day&#8217;s keynote by <a href="http://twitter.com/unclebobmartin">Bob Martin</a> was completely focused on the idea of sofware craftsmanship. He&#8217;s a great speaker and gave a very entertaining talk. But most of the sessions carried the same craftsmanship message under the covers.</p>

<p>The biggest take away for me was that time deadlines are no excuse for poorly designed and executed projects. The technical debt that piles up from poor execution dwarfs the time spent on practices like writing compact, modular, loosely coupled code and test driven development. If nothing else, I came away from the conference with a renewed focus on leaving projects that I work on a little better than when I started them.</p>

<h3>NOSQL</h3>

<p>A few NotOnlySQL systems were covered in detailed sessions: MongoDB, Cassandra, Project Voldemort. The takeaway though was that there are solid alternatives to traditional SQL RDBMS&#8217;s. Each system solves different issues and leaves a few things to be desired. None of them will completely replace SQL RDBMS in the market. Still, taking a close look at the options and understanding the differences is a valuable exercise for any developer.</p>

<h3>Cloud</h3>

<p>Cloud services are speeding up developers&#8217; ability to deploy reliable, highly available, scalable applications affordably. They&#8217;re opening up enterprise level services on a pay-for-use budget. This is a game changer for the enterprise where remaining static and being monolithic were the proven pathways to stability.</p>

<p>On the flip side, cloud services are reminding developers of a slew of system level operation concerns that we&#8217;ve sometimes been lazily overlooking in our in-house environments. This is where the configuration as coding concept comes into play. Developers and operations folks have to work together to build application environments and deployment schemes that are highly automated. Putting some of that systems burden back onto developers should free up operations folks for more innovative work.</p>

<p>All in all, Philly ETE was well worth the price of admission. I take the large number of people in attendance as a great sign of strength for the business technology community in Philadelphia.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/6IjM3t0kgrc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2010/04/13/emerging-tech-is-changing-the-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2010/04/13/emerging-tech-is-changing-the-enterprise/</feedburner:origLink></item>
		<item>
		<title>WTF is open?</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/SOyzipjd2sI/</link>
		<comments>http://www.imakewebjunk.com/2009/12/23/wtf-is-open/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 15:17:54 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[business models]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[open]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=322</guid>
		<description><![CDATA[So, Gruber thinks that Google&#8217;s The meaning of open blog post is the biggest pile of horseshit he&#8217;s ever seen from Google. I couldn&#8217;t disagree more.

The Google post is long. On first skim I can see coming away thinking it flip-flops. But the core principals in there are solid and clear. It lays out an [...]]]></description>
			<content:encoded><![CDATA[<p>So, Gruber thinks that Google&#8217;s <a href="http://googleblog.blogspot.com/2009/12/meaning-of-open.html">The meaning of open</a> blog post is the <a href="http://daringfireball.net/linked/2009/12/22/open">biggest pile of horseshit he&#8217;s ever seen from Google</a>. I couldn&#8217;t disagree more.</p>

<p>The Google post is long. On first skim I can see coming away thinking it flip-flops. But the core principals in there are solid and clear. It lays out an alternative model for business that the general public often has trouble grasping: Open.</p>

<p><span id="more-322"></span></p>

<h3>Business is proprietary, right?</h3>

<p>Businesses exist to make money, plain and simple. I think I learned in eighth grade that a public company is beholden to generate money for its share holders. It&#8217;s one of the basic tenants of our form of capitalism. Like Gordon Gekko said in Wall Street, &#8220;Greed is Good.&#8221; It drives people to accomplish and advance. But the faulty assumption tied up in these generalizations is that there is only way to make money: proprietary business models.</p>

<p>Proprietary products and standards have been one pathway to profit in the past. That doesn&#8217;t mean proprietary is the only possible guiding principle going forward.</p>

<h3>Rising sea level is a good thing</h3>

<p>People often wonder how a company like Google makes money when they give away so much for free. This post lays out the model. Google doesn&#8217;t aim to extract money out of their users by locking them into a perpetual software life-cycle. They aim to raise the sea level of technology.</p>

<p>As the technology improves and cross connects more lines of business open up and more folks gain access to them. Google&#8217;s slice of the pie grows far more than if they focused on grabbing the whole of today&#8217;s pie without regard to the consequences. In the process we get better technology.</p>

<p>Check out Doc Searls recent post <a href="http://www.linuxjournal.com/content/wanted-more-open-source-research">Wanted: More Open Source Research</a> for more on the value of open over proprietary. He does good job highlighting some real world A/B examples.</p>

<h3>Black &amp; white, and shades of gray</h3>

<p>Open doesn&#8217;t always mean free. Open isn&#8217;t about altruism. <strong>Open is not an all or nothing game</strong>.</p>

<p>One thing is clear: the end goal for Google is profit. But in pursuit of that profit they choose to err on the side of open over proprietary. There are cases where they will swing towards the proprietary side. Ads and search algorithms are two examples in the post where they won&#8217;t open source code. On the other hand, they have released plenty of free tools for managing both ads and search. That feels like a fair mix to me.</p>

<p>It comes down to a different set of guiding principles. Proprietary has worked out well in the past. And maybe it serves other industries well. When it comes to technology in a hyperconnected age though, proprietary hinders advancement and it is limits consumer options. That&#8217;s why I&#8217;m excited to see Google outline their open guiding principles.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/SOyzipjd2sI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2009/12/23/wtf-is-open/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2009/12/23/wtf-is-open/</feedburner:origLink></item>
		<item>
		<title>BarCamp Philly blew my mind</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/M9uiE24J9RE/</link>
		<comments>http://www.imakewebjunk.com/2008/11/10/barcamp-philly-blew-my-mind/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 14:31:47 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[philly]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=277</guid>
		<description><![CDATA[BarCamp Philly rocked this weekend. Somewhere around 200 people piled into the University of the Arts with amazing amounts of energy to share ideas on tech and community. I met a lot of great people from the local area that I hadn&#8217;t met before. There were people from all kinds of backgrounds: development, design, community [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.barcampphilly.org/">BarCamp Philly</a> <strong>rocked</strong> this weekend. Somewhere around 200 people piled into the University of the Arts with amazing amounts of energy to share ideas on tech and community. I met a lot of great people from the local area that I hadn&#8217;t met before. There were people from all kinds of backgrounds: development, design, community organization, marketing, and social media. The organizers, <a href="http://stellargirl.com">Roz Duffy</a> and <a href="http://www.30points.com/">JP Toto</a>, and all the volunteers deserve lots of credit for making the event a huge success.</p>

<p><span id="more-277"></span></p>

<h4>Philly is an awesome place to be right now</h4>

<p>This was my first BarCamp experience and I&#8217;m glad to have had it in Philly. This city is an awesome place to be right now. Sure there&#8217;s people interested in technology all over the country. But the really exciting thing about Philly is how excited people here are about sharing: sharing knowledge, sharing experiences, and sharing in projects that improve life for everyone.</p>

<h4>By the people, for the people</h4>

<p>The really powerful sessions were open discussions led without much direction or format. Judging by the Twitter chatter there were plenty of these great sessions to go around. I didn&#8217;t end up in many web development sessions, and I think that&#8217;s a good thing. It might be cool to do a more focused DevCamp some other time. But open conversations about the impact of technology on people&#8217;s lives were the best things about BarCamp. The sessions ranged from topics like using social media to bring about social change to whether the internet helps or hurts our personal lives.</p>

<h4>Be Open</h4>

<p>One thing that came up in a few different sessions was a general fear of openness. How open should we be with our ideas? What if someone steals my idea? How open should we be with our opinions? What if somebody disagrees with me?</p>

<p>Something <a href="http://www.dangerouslyawesome.com/">Alex Hillman</a> said in a session resounded with me. I&#8217;m paraphrasing here. You can probably imagine 5 to 10 negative side effects that might come from being open. Maybe somebody steals your idea. Or maybe somebody attacks your opinions on the internet. But the potential upside is infinite. Somebody might hear about your idea, reach out to you, and that connection might be the key to getting your idea off the ground. Put yourself out there for what you&#8217;re excited about. Make connections with people and your ideas will benefit in ways you never expected.</p>

<h4>Do first, worry later</h4>

<p>Another powerful thing that came up a few times is to take action whenever you can. If you&#8217;re stuck in a job where you feel things could be improved, make a tiny change. Sneak in an improvement. Don&#8217;t ask permission to do it. Find like-minded people and tackle the problem. Fly under the radar. Set goals and constantly chip away at them.</p>

<p>If you can&#8217;t fulfill yourself at your job, find some way to be creative outside your job and do it. Sort through your passions and find some way to express them. If you spend all your energy being frustrated you are guaranteed to be frustrated a year from now. Take on your frustrations and find ways to solve them. There&#8217;s no telling what you will have accomplished in a year.</p>

<p>The first BarCamp Philly was a blast. If you didn&#8217;t make it out to this one, make sure you can be at the next one. I&#8217;ve got a few more posts kicking around in my head from the day. But for now I&#8217;m excited to see everyone keep the energy flowing into all the other community powered projects going on around town.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/M9uiE24J9RE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2008/11/10/barcamp-philly-blew-my-mind/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2008/11/10/barcamp-philly-blew-my-mind/</feedburner:origLink></item>
		<item>
		<title>BarCamp Philly</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/uoVu-6y0OzU/</link>
		<comments>http://www.imakewebjunk.com/2008/10/18/barcamp-philly/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 15:35:13 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[community]]></category>
		<category><![CDATA[philly]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=268</guid>
		<description><![CDATA[
I&#8217;m really excited that Philly will host its first BarCamp &#8220;un&#8221;conference in just a few weeks. There&#8217;s a ton of energy around the event with lots of folks from different backgrounds signed up to attend. The planners have put together a great location for the day in classroom space at the University of the Arts [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.barcampphilly.org/"><img style="float:right;margin-left:10px;" src="http://www.barcampphilly.org/images/barcamp_badge_250px_vertical.png" border="0" alt="BarCamp Philly" /></a>
I&#8217;m really excited that Philly will host its first <a href="http://www.barcampphilly.org/">BarCamp &#8220;un&#8221;conference</a> in just a few weeks. There&#8217;s a ton of energy around the event with lots of folks from different backgrounds signed up to attend. The planners have put together a great location for the day in classroom space at the University of the Arts in Center City.</p>

<p><span id="more-268"></span>
BarCamp is a totally free &#8220;un&#8221;conference format that has been done many times in cities all over the world. Groups of geeks meet up without any kind of set schedules or planned keynote speakers. Attendees huddle up in the morning around a whiteboard and come up with a day&#8217;s worth of sessions and topics. Everybody has a chance to lead a session on any topic of interest and participate in sessions lead by other attendees.</p>

<p>Every city brings its own unique flavor to a BarCamp and I&#8217;m sure Philly won&#8217;t disappoint. Some of the topics already suggested: Open Source software licenses, technology and the future of music, building iPhone apps, scalable web design, and serial entrepreneurship. I&#8217;m really looking forward to hearing about the creative things people are doing all over the city.</p>

<p>If you&#8217;re going to be anywhere near Philly on Saturday November 8th, definitely plan to come to BarCamp. There will be some fun things going on before and after the event. Watch the <a href="http://www.barcampphilly.org/">BarCamp Philly web site</a> for details.</p>

<p>And if you are going to come <a href="https://barcampphilly.ticketleap.com/">make sure you register</a>. It&#8217;s totally free, but registration is required because space is limited.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/uoVu-6y0OzU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2008/10/18/barcamp-philly/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2008/10/18/barcamp-philly/</feedburner:origLink></item>
		<item>
		<title>Keep an Eye on Craigslist with Google Alerts</title>
		<link>http://feedproxy.google.com/~r/IMakeWebJunk/~3/H45SagsflGA/</link>
		<comments>http://www.imakewebjunk.com/2008/10/17/keep-an-eye-on-craigslist-with-google-alerts/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 16:38:15 +0000</pubDate>
		<dc:creator>Dave Konopka</dc:creator>
				<category><![CDATA[examples]]></category>

		<guid isPermaLink="false">http://www.imakewebjunk.com/?p=251</guid>
		<description><![CDATA[Craigslist is my goto site for second-hand gear. Concert tickets, computer hardware, gaming systems&#8230; No matter what I&#8217;m looking for I know eventually someone will put one up for sale.

Scanning through endless listings of unrelated garbage though is boring. That&#8217;s why I use Google Alerts to do the boring work for me. Google Alerts keeps [...]]]></description>
			<content:encoded><![CDATA[<p>Craigslist is my goto site for second-hand gear. Concert tickets, computer hardware, gaming systems&#8230; No matter what I&#8217;m looking for I know eventually someone will put one up for sale.</p>

<p>Scanning through endless listings of unrelated garbage though is boring. That&#8217;s why I use <a href="http://www.google.com/alerts">Google Alerts</a> to do the boring work for me. Google Alerts keeps an eye on Craigslist and sends me an email whenever keywords that I&#8217;m interested in are posted anywhere on the site.</p>

<p><span id="more-251"></span>
If you&#8217;ve never heard of it before, Google Alerts is like Google Search on a schedule. You enter a search term much like you would in Google search. But instead of giving you immediate results, Alerts watches the web for new matches to appear. Whenever new results are posted to the web for your search term Alerts sends you an email. The email includes links to the sites that mention your term along with a snippet of surrounding text for context.</p>

<p>So how does this help you watch Craigslist? Well, one of the cool things about Alerts is that you can use all kinds of Google search operators. For instance, the <em>Site:</em> keyword limits a search to a single domain. So if I put in <em>&#8220;Mac mini&#8221; site:http://philadelphia.craigslist.org</em> as my alert search, new posts with the phrase &#8220;Mac mini&#8221; will be emailed to me as they pop up. But only results in the http://philadelphia.craigslist.org domain will be included.</p>

<p>Swap out &#8220;Mac mini&#8221; for whatever it is you&#8217;re looking for and you&#8217;ve got yourself a Philly Craigslist Alert. Check out the list of supported <a href="http://www.google.com/help/operators.html">Google search operators</a> to refine your own alerts. You don&#8217;t even need a Google account to setup an alert. Any email address will do. And if immediate emails aren&#8217;t your thing, there&#8217;s a daily digest mode for those low-demand things on your wish list.</p>
<img src="http://feeds.feedburner.com/~r/IMakeWebJunk/~4/H45SagsflGA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.imakewebjunk.com/2008/10/17/keep-an-eye-on-craigslist-with-google-alerts/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		<feedburner:origLink>http://www.imakewebjunk.com/2008/10/17/keep-an-eye-on-craigslist-with-google-alerts/</feedburner:origLink></item>
	</channel>
</rss>
