<?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>What&#039;s In Peter&#039;s Head</title>
	<atom:link href="http://pchristensen.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://pchristensen.com/blog</link>
	<description>Peter Christensen&#039;s Blog</description>
	<lastBuildDate>Fri, 03 May 2013 19:47:27 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How To Teach Yourself Programming</title>
		<link>http://pchristensen.com/blog/articles/teach-yourself-programming/</link>
		<comments>http://pchristensen.com/blog/articles/teach-yourself-programming/#comments</comments>
		<pubDate>Fri, 03 May 2013 19:47:27 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=546</guid>
		<description><![CDATA[This didn&#8217;t come through my new web-crush Mentii, but it is another bit of advice that I thought deserved to go farther than one email. This is a friend that lives near a tech center and wants to learn programming, but has no background or experience other than normal computer usage.  I looked at some [...]]]></description>
				<content:encoded><![CDATA[<p>This didn&#8217;t come through my new web-crush <a title="Mentoring Made Easy" href="http://pchristensen.com/blog/articles/mentoring-made-easy/">Mentii</a>, but it is another bit of advice that I thought deserved to go farther than one email. This is a friend that lives near a tech center and wants to learn programming, but has no background or experience other than normal computer usage.  I looked at some of the university programs near him and gave my recommendations, but that&#8217;s not widely relevant.  The important part was:</p>
<h2>tl;dr: YOU HAVE TO TEACH YOURSELF PROGRAMMING</h2>
<p>The full version was this:</p>
<p>I highly, highly recommend doing a lot of programming on your own.</p>
<p>First, the programming requirements for college aren&#8217;t a perfect match with what you need for a job, and there are not enough intense programming courses to get you fully proficient.  You wouldn&#8217;t expect to get in shape if you only took P.E. classes, would you?</p>
<p>Second, some people just don&#8217;t enjoy or &#8220;get&#8221; programming &#8211; it&#8217;s a specific way of thinking that some people take to naturally, lots can learn, and some people truly do not enjoy it. Doing your own will make school easier, prepare you better for work, and let you know really quickly if programming is not for you.</p>
<p>There are many, many sub-fields within programming, but for beginners, I would recommend choosing one of these 2 paths:</p>
<ul>
<li><span style="line-height: 13px;">Web programming &#8211; server-side languages, HTML, Javascript, CSS.  This is probably the skillset that currently has the lowest bar for getting a full-time job.  There&#8217;s an infinite amount of knowledge above those 4 components, but you can learn enough of these in 6 months to contribute to a web development team.</span></li>
<li>&#8220;Maker&#8221; programming &#8211; Arduino, Javascript, electronics, robotics.  Smart devices are just now hitting the early adopter phase (Pebble watch, Nest thermostat, lost of stuff on Kickstarter) but there are tens of thousands of products that need to be reinvented with network connectivity and inexpensive microprocessors, and probably thousands more products that haven&#8217;t been imagined yet (this <a href="http://www.kickstarter.com/projects/1273668931/hapifork-the-smart-fork-that-tracks-your-eating-ha-0">smart fork</a> is probably my favorite).  In 3-5 years, I think an interdisciplinary electronics+code prototyping skillset will be the <a href="http://www.paulgraham.com/hw.html">next big class of technical skills</a>, alongside web, mobile apps, and desktop software.</li>
</ul>
<p>I know much, much less about Maker programming than web programming, so I&#8217;ll withhold my advice there. For teaching yourself web programming, I recommend the following resources:</p>
<ul>
<li><a href="http://learnpythonthehardway.org/book/">Learn Python the Hard Way</a> (free online) &#8211; Python is a simple but powerful language. It&#8217;s probably the language that looks the most like the process it describes. It&#8217;s also used heavily by Google and NASA, as well as being the most prominent language for science and math. This book assumes no previous programming knowledge and only basic computer usage. It&#8217;s 52 lessons going from printing text to a screen, all the way to storing data collected from a web page. It&#8217;s a very, very solid and broad introduction to programming.</li>
<li><a href="http://www.codecademy.com/">Codecademy</a> (free online) &#8211; this is a series of online lessons and exercises. This is probably narrower than LPTHW but includes interactive elements and has lessons for more technologies (LPTHW only uses Python but covers a wider range of programming topics)</li>
<li><a href="http://tryruby.org/">Try Ruby</a> (free online) &#8211; a short (~15 min) online interactive tutorial to learn the Ruby programming language (that&#8217;s what I use and lots of web companies use)</li>
<li><a href="http://railsforzombies.org/">Rails for Zombies</a> (free online) &#8211; a series of interactive lessons to learn Rails, a set of tools in the Ruby language that makes it fast to build web sites. These are aimed at beginners and released by the same people that make Try Ruby</li>
<li><a href="http://ruby.railstutorial.org/">Rails Tutorial</a> (free online) &#8211; an intermediate set of lessons about building websites using Ruby and Rails. It assumes more programming familiarity so it&#8217;s not great to start with but if you finish RFZ you&#8217;re probably ready for it. It covers more advanced coding practices, web site principles, and more. Very, very thorough.</li>
<li><a href="http://www.codeschool.com/">Code School</a> (paid ~$25 courses online) &#8211; a collection of high quality courses with video and interactive lessons covering a variety of web technologies.</li>
</ul>
<p>I have dabbled or perused most of these but I&#8217;ve been programming for 20 years and professionally for almost 10, so I&#8217;m not the target audience.  I have heard good things about them and they all come from sources I trust and respect.</p>
<p>The most successful programmers I know are the ones that are the most prolific &#8211; they write a lot of code, of different types, to solve different problems, because that&#8217;s the way you learn.  And the more you learn, the better equipped you are to solve the next problem you face.  So no matter what you use to learn, you should program a lot.  University CS programs have some intensive programming courses, but it&#8217;s too small a percentage of the time you spend learning.  You have to supplement it yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/teach-yourself-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mentoring Made Easy</title>
		<link>http://pchristensen.com/blog/articles/mentoring-made-easy/</link>
		<comments>http://pchristensen.com/blog/articles/mentoring-made-easy/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 23:44:57 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=545</guid>
		<description><![CDATA[I came across a new site that has completely captivated me: Mentii.  It&#8217;s a matchmaking site for people looking for mentors and people willing to be mentors. The signup process was simple &#8211; you can import your profile from LinkedIn, you can import your contacts (I always skip this step), and write a statement of [...]]]></description>
				<content:encoded><![CDATA[<p>I came across a new site that has completely captivated me: <a href="https://mentii.com/">Mentii</a>.  It&#8217;s a matchmaking site for people looking for mentors and people willing to be mentors.</p>
<p>The signup process was simple &#8211; you can import your profile from LinkedIn, you can import your contacts (I always skip this step), and write a statement of what kind of mentoring you can provide.  The next screen is a list of people that have recently asked for advice.</p>
<p>I feel great about my career now, but I made some uninformed choices earlier in my career that cost me a lot of time and money.  If I had a trusted mentor when I was at those junction points in my life, I might have ended up where I am much earlier.  So giving me the opportunity to be that helpful person for others is irresistible to me.</p>
<p>I contacted a few people still in school who were in situations I could help with.  It felt great!!!  Thank you to the Mentii team for creating such a rewarding service.</p>
<p>Here are two emails I sent, with the personal bits removed.  This is similar to earlier advice I wrote to a <a title="Advice to a college sophomore programmer" href="http://pchristensen.com/blog/articles/advice-to-a-college-sophomore-programmer/">college sophomore</a> and someone whose <a title="What Your Resume Really Says About You" href="http://pchristensen.com/blog/articles/what-your-resume-really-says-about-you/">resume was misrepresenting them</a>.</p>
<p><span id="more-545"></span></p>
<p>&#8212;&#8211;</p>
<p>[to a student graduating in marketing but wanting to get into technology and startups]</p>
<p>I&#8217;m a software developer in San Francisco who has been around startups for a while. Here are some things I would recommend for you:</p>
<ul>
<li>[background] Nathan Marz from Twitter (a seriously great developer) wrote about why having a blog in Silicon Valley is a great idea, especially for non-technical people. Read and take to heart: <a href="http://nathanmarz.com/blog/break-into-silicon-valley-with-a-blog-1.html">http://nathanmarz.com/blog/break-into-silicon-valley-with-a-blog-1.html</a></li>
<li>Get permission to write about some of the projects and experiences you&#8217;ve done at internships, part-time jobs, etc, removing the sensitive business bits</li>
<li>Find out what kind of startups interest you &#8211; is there a domain (metrics, developer tools, social good, etc) or technology (rich web applications, horizontal scaling technology, smart hardware, etc) that interest you? Find out the companies working in that space and get involved with them. Follow and comment on their blogs and tweets.</li>
<li>Identify some individuals that work at those companies and reach out to them. Don&#8217;t come in saying you want to work for them or with them, but instead offer them some insight you have about their product, marketing, etc and describe your background to put your advice in context.</li>
<li>If when talking to them, they describe a need that you could meet (introducing someone you know to them, referring them to potential customers, offering to include them in a Meetup talk comparing competitors in their space, writing a review of their service on your blog, build a demo integration of their product they can add to their portfolio, etc), offer to do it for them, then do a great job at it and follow up with them when it&#8217;s done. The important thing is that they bring it up &#8211; most people are too polite to shoot down ideas but they probably won&#8217;t have much use for things they don&#8217;t already know they need.</li>
</ul>
<p>I find this targeted, strategic approach to give more results than going to meetups and general interest coffee dates. The biggest personnel risk most startups have is getting someone who will a) suck up a lot of resources in explanation, training, followup, and b) not deliver work. By finding something they could use and delivering it and informing them, you&#8217;ve alleviated both of their main concerns. Normally, price is not the concern, risk is &#8211; a person who is unproven to them probably has a negative value because the possibility of failure is so high.</p>
<p>&#8212;&#8211;</p>
<p>[to a freshman CS student who just moved far from home]</p>
<ul>
<li>People in the Bay Area are very open and friendly. It&#8217;s a mix of the attitude, the weather, and the fact that most people know they want to work on projects too big for one person to do.</li>
<li>Don&#8217;t wait for graduation or a job to start working on projects &#8211; engineering is a skill and a craft that takes lots of practice and self-guided discovery, and you can&#8217;t get that in a pre-scoped project for school or work.</li>
<li>Think about what kind of work you&#8217;d like to do and become really familiar with that space &#8211; the companies, open source projects, thought leaders, etc. When you dig in, you might find out you don&#8217;t actually care for it, but if you do like it, you&#8217;ll be more competent and prepared to enter that space.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/mentoring-made-easy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thank You Andrew Mason</title>
		<link>http://pchristensen.com/blog/articles/thank-you-andrew-mason/</link>
		<comments>http://pchristensen.com/blog/articles/thank-you-andrew-mason/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 05:46:19 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=543</guid>
		<description><![CDATA[Today something sad but not unexpected happened. Andrew Mason was fired as CEO of Groupon. I worked at Groupon for two years, from late 2010 to late 2012, and while the experience was a mostly positive mixed bag, Andrew was definitely one of the highlights.  Even though I knew it was a matter of time, [...]]]></description>
				<content:encoded><![CDATA[<p>Today something sad but not unexpected happened. Andrew Mason was fired as CEO of Groupon. I worked at Groupon for two years, from late 2010 to late 2012, and while the experience was a mostly positive mixed bag, Andrew was definitely one of the highlights.  Even though I knew it was a matter of time, I was still sad to hear the news.</p>
<p><span id="more-543"></span></p>
<p>Andrew was a programmer founder and he retained a strong connection to the engineering team even after his CEO duties pulled him in other directions. By the time I started working there the company already had 3000 employees, so I didn&#8217;t get much personal interaction with him. But his personality, humor, and optimism were always clear and the entire company was imbued with those same traits. From the monkey he rented to walk around the office, to the <a href="http://twitpic.com/3dkurp">Salesforce Balls</a>, the &#8220;Enjoy Your Fleeting Recognition&#8221; awards, all the way to his <a href="https://www.jottit.com/v5wux/">sweet and honest firing announcement</a>.</p>
<p>As Groupon grew into a global organization, more and more talented outside executives were brought in, and the company changed to go public. Among other things, this diluted the spirit that early Groupon had. I was late enough to Groupon that I didn&#8217;t know which early employees contributed what to the culture, but for the rank and file, Andrew was the face of what made Groupon fun and exciting. Starting with the billion dollar round and the questions that raised about Groupon&#8217;s investors, then the backlash about the S-1 filing, then the stock&#8217;s poor performance, the energy and enthusiasm slowly leached out.</p>
<p>As more bad things happened, it became clear that someone was going to have to pay. None of the outside execs was a big enough fish to fry, and compared to the other founders, Andrew had a smaller ownership stake and was the public face of the company, so he was always the obvious target. I kept hoping for the news to change for the better because I knew that if it didn&#8217;t, Andrew would go.  A wise friend of mine said &#8220;I don&#8217;t care who threw the grenade at this point, Mason jumped onto it.&#8221;</p>
<p>People are quick to say that daily deals don&#8217;t work, that it&#8217;s a scam, a broken business model, but that&#8217;s too simplistic.  Groupon is a unique source for businesses to get a ton of new customers, and with the right business model and a plan to retain those new customers, merchants can radically transform their business.  Groupon was also beginning to offer businesses software tools much better than they would otherwise have access to.  But there were no barriers to competition and Groupon was hit on three sides by other big competitors like Living Social, hundreds of small clone deal sites, and tech companies like Facebook and Google that started their own ad programs.  Similar to the airline industry, the competitors beat each other to a pulp to the point where none of them can profitably provide the valuable service that many businesses were in need of.  I&#8217;m optimistic for Groupon&#8217;s long term future, although I think they&#8217;re worse off without Andrew at the helm.</p>
<p>I know Andrew will go on to do great things, and I&#8217;m excited that Chicago now has two powerful tech figures on the market (hi, <a href="https://twitter.com/harper">Harper!</a>). I would work for Andrew again in a heartbeat and I look forward to hearing what he does next.</p>
<p>Thank you Andrew Mason for leading the most exciting two years of my career so far!</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/thank-you-andrew-mason/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Makers &#8211; Inspiration and Limitations</title>
		<link>http://pchristensen.com/blog/articles/makers-inspiration-limitations/</link>
		<comments>http://pchristensen.com/blog/articles/makers-inspiration-limitations/#comments</comments>
		<pubDate>Wed, 13 Feb 2013 19:32:04 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Book Review]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=540</guid>
		<description><![CDATA[I just finished reading the book Makers: The New Industrial Revolution by Chris Anderson. tl;dr version: It&#8217;s a well written, entertaining read, it covers some exciting possibilities, but while it describes some society-wide changes, I think those will take 15-20 years. Most of the benefit in the short term will be to individuals and companies [...]]]></description>
				<content:encoded><![CDATA[<p>I just finished reading the book <a href="http://www.amazon.com/Makers-The-New-Industrial-Revolution/dp/0307720950">Makers: The New Industrial Revolution by Chris Anderson</a>.<a href="http://amazon.com/o/asin/B0083DJUMA"><img class="size-medium wp-image-541 alignright" alt="makers-cover" src="http://pchristensen.com/wp-content/uploads/2013/02/makers-cover-196x300.jpg" width="196" height="300" /></a></p>
<p>tl;dr version: It&#8217;s a well written, entertaining read, it covers some exciting possibilities, but while it describes some society-wide changes, I think those will take 15-20 years. Most of the benefit in the short term will be to individuals and companies who enjoy making things.</p>
<p>Long version:</p>
<p><span id="more-540"></span></p>
<p>I did not read Chris&#8217;s previous books <a href="http://www.amazon.com/Free-Smartest-Businesses-Something-Nothing/dp/B0043RT912">Free</a> and <a href="http://www.amazon.com/Long-Tail-Future-Business-Selling/dp/B001Q9E9F6">The Long Tail</a> but I read many reviews of them and articles by the author. I thought they were innovative ideas but presented as an inevitable future rather than simply being new tools in a business toolbox. I&#8217;m much more convinced by Makers. I think it&#8217;s a meatier idea, but I also think Chris is an excellent persuasive writer, and he had hundreds of pages to work on me this time.</p>
<p>I believe the central premise of Makers &#8211; that manufacturing will become as accessible to normal people as paper printing has become and that change will create new opportunities &#8211; will be a huge positive force in the lives of those that embrace it. I&#8217;ve been very impressed with the people I&#8217;ve met in the Maker community. Besides the awesome gadgets, all of the Makers I know are trulygenerous, excited people who love what they&#8217;re doing and love sharing it, and their love of making is adding value to the world. It&#8217;s what I imagine the software community was like before software startups became big business. Even the most idealistic developer today can&#8217;t avoid the fact that software is inextricable from big companies, startups, and money. <a href="http://www.paulgraham.com/hw.html">Hardware startups</a> are becoming hot but because hardware still has a marginal cost, companies must have pricing discipline. Too many startups provide a free service that can&#8217;t support itself, so they shut down and disappoint their users. I see hardware startups creating more <a href="http://www.fastcompany.com/3000852/37signals-earns-millions-each-year-its-ceo%E2%80%99s-model-his-cleaning-lady">italian restaurants</a> than megacorps, and I think that&#8217;s a good thing.</p>
<p>How will Makers affect the world? First, by democratizing digital product design. A whole host of items will be reimagined over the next few decades, to turn &#8220;dumb&#8221; objects into smart, networked services (see <a href="http://www.nest.com/">Nest thermostats</a> and <a href="http://getpebble.com/">Pebble smart watches</a>). Someone will need to make these, and just as the best software has come from individuals and small teams, so will the best new hardware. The people doing this will be the ones who learn this valuable skill through enjoyable play and tinkering. Besides the software billionaires, many millions of people have great lives and careers because software development is a valuable skill, but many of those people learned it because it was cheap, available, and rewarding. The spread of Maker communities, spaces, kits, and tools will do the same for hardware, and I predict that there will be 10x as many teenagers and college students that work with their hands a decade from now.</p>
<p>Second, home (for lower-quality or single material) and local (for more complex goods) manufacturing capabilities will shift consumption, not in Western suburban communities, but in underserved areas in rural and urban areas, and in developing countries. The entire world&#8217;s supply chain is delivered to the superstores close to suburban homes and people&#8217;s lives are designed around reliance on that supply chain. The <em>variety of quality</em> as well as the convenience of having everything co-located will continue to work for most households. This distribution model has ruled for so long that mass manufactured goods <em>define</em>the acceptable level of quality. For example, I have a laser printer in my house, but I still buy greeting cards at the store because I can spend 2 minutes and $5 and get a well written card on better quality paper with the right sized envelope. But people that have never had that kind of retail access will build their lives and expectations around on-demand manufacturing and open source digital designs. I love picturing an African village treating a 3-d printer as their Wal-Mart.</p>
<p>I really enjoyed this book (it&#8217;s entertainingly written if nothing else) and I encourage everyone to find a <a href="http://hackerspaces.org/">Maker space near you</a> and try making something. It&#8217;s a rush.</p>
<p>**************<br />
Here are some random thoughts I wrote down while reading the book:</p>
<ul>
<li>Book turned a skeptic into a believer</li>
<li>Express &#8220;print&#8221; as analogy with desktop publishing</li>
<li>Maker machines are a technological capacity that everyone is eventually going to have, like digital cameras, Internet, computers, printers, etc</li>
<li>What changes when you can assume everyone has these?</li>
<li>Separating design from mfg seems fraught, similar to outsourcing. This never worked for software and product companies are learning the lessons. Maybe I&#8217;m missing something about the diff between traditional mfg and design vs 3d designed objects</li>
<li>Most people worked for companies to get jobs and support their life. Should sustenance be decoupled from purpose?</li>
<li>The author makes so many points convincingly that I have to take him seriously when he makes one I&#8217;m skeptical about</li>
<li>Confuse possibility with scale &#8211; a new industry creating 10ks of jobs doesn&#8217;t even match population growth. This might be the future economic situation but most aren&#8217;t being prepared for it</li>
<li>Dorsey square story &#8211; being software only limits you to seeing the world through software-colored lenses</li>
<li>Diybio is reproducing LAN equmemt cheaply using maker skills. Could medical be done as well? Could medical procedures be done so cheaply that insurance be undercut completely? Would that collapse the medical cost pyramid?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/makers-inspiration-limitations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When We Build &#8211; Notes and Quotes</title>
		<link>http://pchristensen.com/blog/articles/when-we-build-notes-and-quotes/</link>
		<comments>http://pchristensen.com/blog/articles/when-we-build-notes-and-quotes/#comments</comments>
		<pubDate>Wed, 30 Jan 2013 05:24:20 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=537</guid>
		<description><![CDATA[I just watched an inspiring video about what it means to be a designer today.  It&#8217;s called &#8220;When We Build&#8221; by Wilson Miner. Wilson Miner &#8211; When We Build from Build on Vimeo. It&#8217;s worth watching the video because the images, music, video, and his hypnotically powerful vocal pacing are outstanding.  But if you don&#8217;t [...]]]></description>
				<content:encoded><![CDATA[<p>I just watched an inspiring video about what it means to be a designer today.  It&#8217;s called <a href="http://vimeo.com/34017777">&#8220;When We Build&#8221; by Wilson Miner</a>.</p>
<p><iframe src="http://player.vimeo.com/video/34017777" height="281" width="500" allowfullscreen="" frameborder="0"></iframe></p>
<p><a href="http://vimeo.com/34017777">Wilson Miner &#8211; When We Build</a> from <a href="http://vimeo.com/build">Build</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>It&#8217;s worth watching the video because the images, music, video, and his hypnotically powerful vocal pacing are outstanding.  But if you don&#8217;t have time now or you need more convincing, here are my notes.  Most of the quotes are word for word because he chose his words and ideas as carefully as he chose his media.</p>
<p>Wilson, thank you so much for this talk &#8211; I can&#8217;t even imagine how powerful it would be in person.</p>
<p>[1:00] Warning that it&#8217;s going to be a strange talk<br />
I&#8217;ve been cynical about the potential of what we do &#8211; &#8220;It&#8217;s just a website, get over it&#8221;<br />
This is a uniquely exciting time to be designing digital tools and products</p>
<p><span id="more-537"></span></p>
<p>[2:22] Examples of things he has been working on<br />
The house I grew up in &#8211; like a museum, collections of antique furniture, books, instruments, computers, etc<br />
When my father passed away, all of &#8220;his&#8221; things resurfaced in my life<br />
The classic Mercedes that was handed down to him</p>
<p>[4:15]<br />
We invest ourselves in things, but they&#8217;re just things, tools, they fulfill a need<br />
They&#8217;re empty vessels that we fill up with our stories<br />
They reflect our desires, hopes for the future, and our best images of ourselves</p>
<p>[4:50] &#8220;We shape our tools, and thereafter our tools shape us.&#8221; Marshall Macluhan<br />
Academic celebrity in 60s/70s<br />
Understanding Media: The Extensions of Man [LINK] &#8211; how electronic media (TV) impacts society and culture<br />
Each thing we create creates a new environment<br />
The medium is the message<br />
When you introduce a new medium into society, it changes our outlook, attitudes, our feelings about the world<br />
Light bulb is a medium that creates a new environment to lengthen the workday, change how and when people can interact and gather; it changes how we behave, and so it changes how we think</p>
<p>[6:40]<br />
Car is very noticeable effect<br />
Cars haven&#8217;t chaned much in 100 years, but we changed the world around it, our whole way of living</p>
<p>[7:15] Macluhan&#8217;s Ideas were way ahead of their time, but hard to convey secondhand</p>
<p>[8:00-11:00] Video<br />
quotes from Macluhan, Steve Jobs &#8220;Bicycle for Our Minds&#8221;</p>
<p>[11:57] Computers are a Bicycle for Our Minds<br />
Tools are empowering, like a bionic augmentation for our minds</p>
<p>[12:35] Computers have become invisible<br />
Eniac was huge, physical, mechanical interaction<br />
PDP-1 from IBM &#8211; has a display<br />
Space War &#8211; 1st computer game<br />
Real time, direct interaction was something that had to be invented<br />
Network added</p>
<p>[15:00] Removing things<br />
Remove the network, and create wires<br />
Make the computer smaller and portable<br />
In science fiction, screens are everywhere (e.g. 2001 Space Odyssey)<br />
Even 10 years ago, this seemed futuristic<br />
What&#8217;s your &#8220;time to screen&#8221; in the morning?<br />
How much more of our downtime are we spending in front of a screen?</p>
<p>[17:10] The car shaped our environment in the 20th century, the screen will be as important in the 21st<br />
What goes on those screens is pretty important<br />
The things we choose the surround ourselves determines what we will become<br />
We&#8217;re not just making pretty interfaces; we&#8217;re in the process of building an environment where we&#8217;ll spend most of our time, for the rest of our lives<br />
We&#8217;re the deisgners, we&#8217;re the builders &#8211; what do we want that environment to feel like? What do we want to feel like?</p>
<p>[18:50] Simplicity is how designers see the world<br />
Example: a friend who literally couldn&#8217;t boil water and got uncomfortable in kitchens<br />
There&#8217;s no such thing as a simple recipe for someone who can&#8217;t operate a stove<br />
&#8220;The only intuitive interface is the nipple. Everything after that is learned.&#8221;<br />
We take a lot of information and understanding for granted because we&#8217;ve already learned it.<br />
What we think is intuitive is based on complex sets of learned understanding<br />
Graphic: How to use a magazine by Khoi Vin &#8211; shows how complex it is and how much we already know how to use it</p>
<p>[21:50] Designers are already assuming what people know<br />
e.g. use a mouse, underlined text can be clicked on<br />
Those assumptions are changing faster than we&#8217;re used to, e.g. radio adoption vs TV, Youtube, iPhone<br />
We have less time to adjust to and learn new environments<br />
It&#8217;s not enough to rely on what we expect other people to know</p>
<p>[23:36] We need to be always learning, and let go of what we already know<br />
The don&#8217;t know mind is open to learning, discovery, truth about how the world really is, rather than how we expect it<br />
&#8220;At times of change, the learners are the ones who will inherit the world, while the knowers will be beautifully prepared for a world which no longer exists.&#8221; Alistair Smith<br />
If you want a clue to rapid technological change, look at artists<br />
New environments and new media require human input, control</p>
<p>[25:15] Examples about Robert Irwin<br />
Transform space so people experience something different; change what people perceive and be aware of your imperception<br />
Get energy with color, spacing, lines, dots that fade away but still convey energy<br />
Change the room &#8211; change the lights, stretch piano wire across the ugliest wall in the room, hang translucent fabric across the ceiling<br />
Visitors had to walk by the museum and decide what was going on &#8211; no one noticed<br />
No one cared about what he did, but it changed everything about his work<br />
He didn&#8217;t create the room, but he responded to it</p>
<p>[32:00]<br />
He integrated them to create decisive gestures, to change how the room felt<br />
The smallest changes can be transformative, but they have to be the right changes.<br />
Discovering what those are takes patience. You have to pay attention, you have to be available in response.<br />
Responsiveness isn&#8217;t something we can just build into our product, it&#8217;s an attitude we can adopt.<br />
We can learn to listen to the changing environment, and be available in response.<br />
We can come in with our bag of tricks and solutions, and come up short.<br />
But we can stay, keep trying until we find what fits.</p>
<p>[33:20]<br />
Architecture: &#8220;When we build, let us think that we build forever. Let it not be for present delight, nor for present use alone. Let it be such work as our descendants will thank us for.&#8221; John Ruskin<br />
Websites have a short shelf-life, especially compared to a house, a car, a chair.<br />
We don&#8217;t design things that stand still &#8211; we design organisms, ecosystems.<br />
The ones that survive are the ones that adapt to the environment; evolve, mutate, respond<br />
Sometimes our imaginations don&#8217;t stretch far ahead, we don&#8217;t look behind us for inspiration.<br />
When we design for the world of screens, we have a long time ahead of us, and a long history older than the web, or software, or computers.</p>
<p>[35:40]<br />
We&#8217;re tool builders &#8211; we make things that change our lives, and that change the world.<br />
We&#8217;re the product of the world, but we&#8217;re also its designer.<br />
Design is the choices we make about the world we want to live in.<br />
We choose where to live, what to surround ourselves with, and what to spend our time and energy on. We make our world what it is, and we become the kind of people that live in it.</p>
<p>[37:00]<br />
When we&#8217;re gone, all that&#8217;s left of us is what we made. The things you and I make may not leave a visible footprint on the earth, but everything we make takes up space, makes noise, competes for attention.<br />
What do we want to spend more time on? What shapes us? What nourishes us? What do we want to see grow?<br />
We all have an idea, we all have somethign we want to make for no other reason than that we want it to exist. Something small but meaningful.</p>
<p>We get to make things that we hope will nudge the world in what he hope is the right direction.</p>
<p>This is a great job.</p>
<p>Links: <a href="http://www.wilsonminer.com/build2011/">http://www.wilsonminer.com/build2011/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/when-we-build-notes-and-quotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fast Rails Tests</title>
		<link>http://pchristensen.com/blog/articles/fast-rails-tests/</link>
		<comments>http://pchristensen.com/blog/articles/fast-rails-tests/#comments</comments>
		<pubDate>Fri, 18 Jan 2013 18:43:56 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=536</guid>
		<description><![CDATA[News: A few months ago, I took a job at Manilla.com and moved to the Bay Area!  I wrote a post at the tech blog there about writing fast tests in Rails &#8211; check it out!]]></description>
				<content:encoded><![CDATA[<p>News: A few months ago, I took a job at Manilla.com and moved to the Bay Area!  I wrote a post at the tech blog there about <a href="http://chill.manilla.com/2012/11/15/fast-rails-tests/">writing fast tests in Rails</a> &#8211; check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/fast-rails-tests/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on DIYDrones/3DRobotics Talk by Chris Anderson</title>
		<link>http://pchristensen.com/blog/articles/diydrones-3drobotics-notes/</link>
		<comments>http://pchristensen.com/blog/articles/diydrones-3drobotics-notes/#comments</comments>
		<pubDate>Thu, 17 Jan 2013 20:24:15 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=534</guid>
		<description><![CDATA[[Last night I went to the Silicon Valley Automotive Open Source meetup where Chris Anderson of DIYDrones/3DRobotics told his story.  Here are my notes, slightly rewritten and re-ordered to make more sense if you weren't there] DIY Drones talk by Chris Anderson, 3D Robotics 1/16/2013, Nokia Sunnyvale Backstory involving building a Lego Mindstorms autopilot with [...]]]></description>
				<content:encoded><![CDATA[<p>[Last night I went to the <a href="http://www.meetup.com/Silicon-Valley-Automotive-Open-Source/events/90869822/">Silicon Valley Automotive Open Source</a> meetup where Chris Anderson of DIYDrones/3DRobotics told his story.  Here are my notes, slightly rewritten and re-ordered to make more sense if you weren't there]</p>
<h2>DIY Drones talk by Chris Anderson, 3D Robotics</h2>
<p>1/16/2013, Nokia Sunnyvale</p>
<p>Backstory involving building a Lego Mindstorms autopilot with his kids in 2008 (this is a good story worth watching, e.g. from his <a href="https://www.youtube.com/watch?v=dSrlKi_g_IU">Maker Faire talk</a>)</p>
<p>DIYDrones Community</p>
<ul>
<li>He fostered the community by &#8220;being dumb in public&#8221;, and letting interested people come and teach him</li>
<li>DIYDrones is now the biggest community of people building drones, ~30K registered members, bigger than any aerospace company</li>
<li>Ground control software written by an IT guy in City Hall in the Outback</li>
<li>Smartphone processors and sensors have revolutionized robotics sensors and components</li>
<li>Powerful, light, small sensors and processors are the &#8220;Peace divided of the smart phone wars&#8221;</li>
</ul>
<p><span id="more-534"></span></p>
<p>Arduino</p>
<ul>
<li>people laughed at for the choice because it wasn&#8217;t the most powerful or professional</li>
<li>chosen because it was the most open community</li>
<li>lowered the barrier to entry &#8211; some top contributors are not even programmers or engineers</li>
<li>got people that wouldn&#8217;t have participated if they needed an advanced tool-chain</li>
<li>assumed the hardware would catch up</li>
<li>Drone community should be like a great video game &#8211; easy to pick up, hard to master</li>
</ul>
<p>Current models</p>
<ul>
<li>APM2.5 &#8211; universal autopilot for many helicopter and plane formats, GPS guided plus other sensors</li>
<li>PX4 (ARM based) &#8211; enables cutting edge robotics research but easy enough for kids</li>
<li>&#8220;We love the research dudes, but we really love the kids&#8221;</li>
</ul>
<p>Military grade technology at toy prices</p>
<ul>
<li>uses: personal, classroom, disposable, delivery</li>
<li>example &#8211; sending drones with biodegradable bodies on one-way missions to measure glacial pools</li>
<li>feature parity with military (probably exceeded military features by now, plus better ground station), but sacrifice reliability to shed costs (currently ~2 nines for DIYDrones vs 8-9 9s for military, at .01% of cost)</li>
</ul>
<p>Vehicle configurations</p>
<ul>
<li>Favor solid state components and minimize mechanical components</li>
<li>Quad/hex/octocopters only have one variable: rotation speed per prop</li>
<li>Solid state copter turning requires 200-400Hz adjustments in rotation speed, mechanical components can&#8217;t do much higher than 50Hz</li>
<li>Mechanical parts are less reliable and more complex</li>
</ul>
<p>Flight features</p>
<ul>
<li>Geofencing &#8211; the plane becomes uncrashable</li>
<li>Mobile/tablet interface &#8211; touch interface, direct, focus on the mission</li>
<li>&#8220;FollowMe Box&#8221; &#8211; Raspberry Pi radio tracker &#8211; turn it on, the drone flies to you, follows ~30&#8242; above and behind you, filming, then when the battery is low it flies back to where it started. Get great windsurfind shots!</li>
</ul>
<p>Free/paid</p>
<ul>
<li>DIYDrones non-profit community</li>
<li>3DRobotics for profit manufacturer</li>
</ul>
<p>Manufacturing and production</p>
<ul>
<li>design and manufacturing in San Diego &amp; Tijuana</li>
<li>Tijuana is the Shenzhen of North America</li>
<li>Electronics manufacturing &#8211; you need local production to innovate faster, iterate faster, don&#8217;t tie up capital in supply chain, don&#8217;t wait to sell out big batches, not hamstrung by errors</li>
</ul>
<p>Contributor reward structure (pic)</p>
<p>Open hardware business model</p>
<ul>
<li>giveaway the bits, sell the atoms</li>
<li>charge 2.6 BOM</li>
<li>keep ahead of closers by innovating faster, supporting better</li>
<li>90% of features, 0.1% price compared to military</li>
<li>democratize technology low price -&gt; volume -&gt; business</li>
</ul>
<p>Open software hardware</p>
<ul>
<li>free fast better R&amp;Dexempt from regulatory barriers</li>
<li>development and support done by customers</li>
<li>avoid FCC approval by selling components to developer</li>
<li>regulations have exceptions for R&amp;D and private use</li>
</ul>
<p>More children flying drones than military service</p>
<ul>
<li>more sold per quarter than entire military</li>
<li>~30,000 ArduPilot modules sold vs ~7k drones in US military</li>
<li>FAA regs: must remain under 400ft altitude, stay within line of site, away from built areas</li>
<li>at that altitude, you get sub-cm photo resolution</li>
</ul>
<p>Open source hardware challenges</p>
<ul>
<li>requires architecture of participation (hard to setup)</li>
<li>untested legal questions</li>
<li>reliability is hard b/c of complex hardware/software</li>
<li>limited margins (cloners undercut pricing power)</li>
<li>immature collaboration tools (version control for hardware/design)</li>
<li>piracy</li>
</ul>
<p>Amateurs can disrupt the biggest industries in the world</p>
<h4>Q&amp;A</h4>
<p>What about suicide bombers &#8211; there are much easier ways to deliver bombs already</p>
<p>What about smuggling drugs? &#8220;Delivering drugs across the border is a solved problem&#8221;</p>
<p>Potential uses outside of recreation? Farms are a great place to test commercial uses, hiking search and rescue</p>
<p>What are the main constraints? Simplicity &#8211; they can do anything, but right now you have to enter all the vehicle constraints into the autopilot, there&#8217;s no onboard machine learning to teach the autopilot by flying</p>
<p>What about privacy? Privacy is a technological outcome that has been shrinking. There&#8217;s no national privacy policy, communities don&#8217;t control their airspace</p>
<p>Opportunities for involvement</p>
<ul>
<li>C++ for the hard stuff</li>
<li>C/Arduino for control/navigation</li>
<li>python scripting for ground station</li>
<li>swarming &#8211; hard to program, but the hardware is there for drone to drone communication &#8211; all Arduinos are Ross nodes (?)</li>
<li>new raspberry Pi station will have ruby/html5 interface (coming Feb?)</li>
</ul>
<p>Ground station</p>
<ul>
<li>logs data</li>
<li>record/replay flight info</li>
<li>HuD on virtual horizon or superimposed over video</li>
<li>map</li>
<li>change input from radio, joystick, script, etc</li>
</ul>
<p>Keeping things simple</p>
<ul>
<li>don&#8217;t tell the machine things they should be able to figure out on their own</li>
<li>be simple but expandable; defining hardware is complex, support is hard</li>
<li>they&#8217;re like PCs with driver problems, not an integrated Apple product, but that&#8217;s the price of being open</li>
<li>maneuverability with as little mechanical as possible</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/diydrones-3drobotics-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Understanding the Clojure Development Ecosystem</title>
		<link>http://pchristensen.com/blog/articles/clojure-development-ecosystem/</link>
		<comments>http://pchristensen.com/blog/articles/clojure-development-ecosystem/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 18:00:09 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://pchristensen.com/blog/?p=531</guid>
		<description><![CDATA[Lots of books, talks, and blog posts help people learn Clojure the language, but leave out prosaic issues outside of the language, like development environments and using libraries. This covers the gap between dipping your toe in and confident proficiency. This guide assumes you are aware of Clojure and want to become a Clojure programmer. [...]]]></description>
				<content:encoded><![CDATA[<p>Lots of books, talks, and blog posts help people learn Clojure the language, but leave out prosaic issues outside of the language, like development environments and using libraries. This covers the gap between dipping your toe in and confident proficiency.</p>
<p>This guide assumes you are aware of Clojure and want to become a Clojure programmer.</p>
<h2>Sections</h2>
<p><a href="#why-clojure">Why Clojure?</a><br />
<a href="#philosophy-of-clojure">The Philosophy of Clojure</a><br />
<a href="#language-tools">Language Tools</a><br />
<a href="#rich-hickeys-talks">Rich Hickey&#8217;s Talks</a><br />
<a href="#baby-steps">Baby Steps</a><br />
<a href="#leiningen">Leiningen</a><br />
<a href="#nrepl">nREPL</a><br />
<a href="#nrepl-el">nrepl.el</a><br />
<a href="#helpful-tips">Helpful Tips</a><br />
<a href="#appendix-links">Appendix &#8211; Links</a></p>
<p><span id="more-531"></span></p>
<h2><a id="why-clojure"></a>Why Clojure?</h2>
<p>Nothing says it better than the front page of clojure.org:</p>
<blockquote><p>&#8220;[Clojure] is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language &#8211; it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.</p>
<p>Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.&#8221; &#8211; <a href="http://clojure.org/">Rich Hickey</a>, creator of Clojure</p></blockquote>
<h2><a id="philosophy-of-clojure"></a>The Philosophy of Clojure</h2>
<p>Clojure is an opinionated language. Rich Hickey might not be as brash as DHH is with Rails, but his strong opinions are infused throughout the language and community. If you don&#8217;t understand the programming philosphy behind Clojure, you will stumble around, fighting the language (and you will lose).</p>
<p><strong>Simplicity</strong> &#8211; Designs should be broken down into atomic, contained, composable units. This is different than ease, which is a measure of how little effort it takes to solve today&#8217;s problems with current resources. Simplicity gives you agility to respond to new opportunities that a complex design would prevent you from pursuing.</p>
<p><strong>Correctness</strong> &#8211; The more accurate your mental model of your code, the more confidently and accurately you can change it or add to it without breaking it.</p>
<p><strong>Manage Difficulty</strong> &#8211; With a better language and tools, you can solve harder problems, or solve easier problems faster.</p>
<h2><a id="language-tools"></a>Language Tools</h2>
<p>Clojure has many awesome features to achieve those philosophical goals.</p>
<ul>
<li><strong>First class functions</strong> &#8211; Functions can be assigned to a variable, passed as arguments to other functions, and returned by other functions. The enables new kinds of abstraction and composition.</li>
<li><strong>Immutability</strong> &#8211; Data is expected not to change, outside of some controlled circumstances. Variables are assigned, but not changed &#8211; a variable is a name to refer to a fact, not a container for a value. This makes using values more predictable and concurrency friendly. Clojure has lots of academic and implementation work making this run efficiently.</li>
<li><strong>JVM Foundation</strong> &#8211; By compiling to JVM byte code and including native Java interop, Clojure has performance, distribution, and library advantages over other from-scratch languages.</li>
<li><strong>Macros</strong> &#8211; Lisp languages are homoiconic &#8211; their code is written in the same data structures as the language uses, so code generation is natural and easy.</li>
<li><a href="http://www.datomic.com/"><strong>Datomic</strong></a> - Rich has released a database-ish product called Datomic that embodies the same principles of simplicity, correctness, and immutability</li>
</ul>
<p>Everyone everywhere ever has written more and better about all these topics. Start with any book on Clojure, preferably <a href="http://pragprog.com/book/shcloj2/programming-clojure">Programming Clojure</a> (WARNING: Clojure book titles tend to sound the same)</p>
<h2><a id="rich-hickeys-talks"></a>Rich Hickey&#8217;s Talks</h2>
<p>You should watch the following talks to understand the base principles and language strategies for achieving them by watching these talks. I would recommend that any software developer watches them, whether or not they ever do anything with Clojure.</p>
<ul>
<li><a href="http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey">Are We There Yet?</a></li>
<li><a href="https://www.youtube.com/watch?v=f84n5oFoZBc">Hammock Driven Development</a></li>
<li><a href="http://www.infoq.com/presentations/Value-Values">The Value of Values</a></li>
<li><a href="http://www.infoq.com/presentations/Simple-Made-Easy">Simple Made Easy</a></li>
<li><a href="https://www.youtube.com/watch?v=rI8tNMsozo0">Simplicity Matters</a></li>
</ul>
<h2><a id="baby-steps"></a>Baby Steps</h2>
<p>If you want an instant, no-strings-attached way to play with Clojure, there are a few options.</p>
<p><a href="http://tryclj.com/"><strong>Try Clojure</strong></a> &#8211; A web-based console (REPL in Lisp/Clojure terms) that will evaluate any code you type in. It also includes a friendly tutorial to walk you through the basics.</p>
<p><a href="http://www.4clojure.com/"><strong>4Clojure</strong></a> &#8211; A set of exercises geared around helping you learn Clojure. For each problem, you enter your solution and the site runs unit tests against your code. Once you pass, you can view solutions from other users. I recommend following a few users from the <a href="http://www.4clojure.com/users">leaderboard</a> to see a variety of solutions for each problem. The site doesn&#8217;t teach you Clojure, but you have to learn in order to solve the increasingly difficult challenges.</p>
<p><strong><a href="http://himera.herokuapp.com/index.html">Himera</a></strong> &#8211; similar to Try Clojure, but for ClojureScript. (See also <a href="http://clojurescript.net/">http://clojurescript.net/</a>)</p>
<h2><a id="leiningen"></a>Leiningen</h2>
<p>Once you&#8217;re past playing in a sandboxed environment, you should <strong>*immediately*</strong> install <a href="https://github.com/technomancy/leiningen#installation">Leiningen</a> and use that with your Clojure code. In the words of the excellent documentation page</p>
<blockquote><p>&#8220;Leiningen is for automating Clojure projects without setting your hair on fire.&#8221;</p></blockquote>
<h3>NOTE: Make sure to get the <a href="https://github.com/technomancy/leiningen#installation">Leiningen v2 preview script</a>, don&#8217;t start anything new with v1.x. v2 is very stable and has a ton of improvements, it&#8217;s waiting on a change to the Java package management system before officially releasing.</h3>
<p>I came to Clojure from Ruby on Rails, so here&#8217;s the analogy. Leiningen does for Clojure what rvm, rake, bundler, rubygems, and the Rails command-line does for Ruby.</p>
<p>Structurally, leiningen starts with a simple bootstrap script that you download and execute, then it will download and manage its dependencies when you run it. You get a ton of features, including a better REPL, the ability to connect your REPL to local or remote Clojure instances, package management, dependency management, generate project scaffolding, run code, start servers, package and publish code, and more. It also has a plugin architecture so you can use any of the <a href="https://github.com/technomancy/leiningen/wiki/Plugins">existing plugins</a> or write your own.</p>
<p>I repeat: Any non-trivial Clojure code should be in a Leiningen project!</p>
<h2><a id="nrepl"></a>nREPL</h2>
<p>At its most basic level, Clojure is a library loaded into the JVM. If you run this library, you get a very basic REPL. Since this REPL isn&#8217;t very good (it lacks command history and cursor movement keyboard shortcuts, for example), people developed better REPL libraries and plugins for different editors.</p>
<p>One of the most commonly used and powerful was SLIME for Emacs. It started a Clojure instance with a server (called Swank) running that would accept and evaluate commands, and a client program (SLIME) in the editor that integrated code with the compiled version in the running instance. It provided lots of goodies, like inline code evaluation, easy inspection of a function&#8217;s documentation or source, finding callers and callees for a function, and access to the state of a running server. It had a variety of implementation problems, mostly because of the differences between SLIME&#8217;s Common Lisp roots and Clojure.</p>
<p>Aside from the issues with SLIME, other editor-based REPLs did not work together well. A project needed to run servers for each editor that was working on it, or developers using different editors wouldn&#8217;t be able to work together. (<a href="https://github.com/clojure/tools.nrepl/wiki/nREPL.Next">more backstory here</a>)</p>
<p>These concerns led to the development of <a href="https://github.com/clojure/tools.nrepl">nREPL</a>, which is intended to be a common platform for communicating with Clojure instances. It recently went through a major redesign and now it&#8217;s solid enough that the maintainers of swank-clojure have deprecated that project in favor of it. (Nothing is wrong or broken with swank-clojure, but it is no longer being developed. If you already have it working and enjoy it, by all means continue).</p>
<p>nREPL was designed to be extensible and composable, so both its transport mechanisms and functionality can be extended. An example of extending the transport mechanism, the <a href="https://github.com/cemerick/drawbridge">drawbridge</a> library lets you communicate with a remote repl over HTTP instead of sockets, which lets you use nREPL in network environments where you would otherwise not be able to. A library like <a href="https://github.com/pallet/ritz/tree/develop/nrepl-middleware">nrepl-middleware</a> lets you add functionality like documentation lookup, fuzzy symbol completion, and more.</p>
<p>In order to take advantage of these features, a client would need to know to call them, but because the clients and servers are decoupled and nREPL aims to be a common server, any client (whether for Emacs, Eclipse, Vim, etc) can use any features, middlewares, or transports that nREPL supports. This also means that different projects will have different nREPL functionality, based on which plugins and versions they are using.</p>
<p>nREPL is a new project so there are not a lot of clients, middlewares, or transports yet. It currently has fewer features than SLIME/swank-clojure, so established developers may not want to switch yet. But it is written and endorsed by some of the most prominent members of the Clojure community and there&#8217;s a very bright future ahead of it, so anyone beginning now should use it.</p>
<h2><a id="nrepl-el"></a>nrepl.el</h2>
<p>Given that most Clojure develors use Emacs, it&#8217;s unsurprising that Emacs would have a solid nREPL clients &#8211; <a href="https://github.com/kingtim/nrepl.el">nrepl.el</a>. It is very similar to SLIME, although lacking some features, most notably the selector and debugger.</p>
<p>In code buffers, it provides lots of conveniences like automatically starting a Clojure instance and nREPL server and connecting to it, evaluating different levels of code, expanding macros, namespace management, file loading, documentation helps, navigating to code, symbol completion, and more. In he REPL it provides has goodies like command history (including search by regex), REPL-specific editing commands, parenthesis management, plus the kitchen sink of editing tools available within Emacs.</p>
<p>Anyone using Emacs+nREPL should use this, as well as anyone looking to have editor compatability with the largest number of Clojure developers.</p>
<h2><a id="helpful-tips"></a>Helpful Tips</h2>
<ul>
<li>People are very friendly and helpful in the community.</li>
<li>Everything goes smoother if you understand the philosophy[##Link above##]</li>
<li>The simplicity principle means there aren&#8217;t big frameworks, and they&#8217;re not likely to develop. Your code will consist of intelligently combining simple pieces.</li>
<li>The core language will grow slowly and wisely and a lot of functionality will come from libraries. You will need to evaluate and choose which one to use for a given need.</li>
<li>Most libraries, including documentation, are hosted on Github. But released versions are published in a way that Leiningen can download, install, and manage for you, so you don&#8217;t need to clone a library to use it.</li>
<li>Lastly, Clojure (the language and the community) expects a lot of you and rewards you handsomely for it.</li>
</ul>
<h2><a id="appendix-links"></a>Appendix &#8211; Links</h2>
<p><a href="http://code.google.com/p/counterclockwise/">Counterclockwise</a> &#8211; An Eclipse plugin for editing Clojure. I&#8217;ve never used it or Eclipse, but I hear good things.<br />
<a href="http://www.vim.org/scripts/script.php?script_id=2501">Vimclojure</a> &#8211; A filetype, syntax and indent plugin for Clojure.<br />
<a href="http://www.lighttable.com/">LightTable</a> &#8211; A new IDE with a focus on real-time feedback and interactivity to improve understanding of code. Currently in Alpha, being developed by prominent Clojure devs who have received investment funding to work on it. I&#8217;ve heard great things about it and it&#8217;s much easier to start with than Emacs.<br />
<a href="https://github.com/pallet/ritz">Ritz</a> &#8211; a collection of libraries and nREPL+Swank servers for development and debugging. The backend debugger features are very powerful, but presenting that information in a Clojure-y way hasn&#8217;t been solved yet.<br />
<a href="http://clojurewerkz.org/">ClojureWerkz</a> &#8211; a set of well written libraries for common problems like currency manipulation, web crawling, URIs, mail, as well as for interfacing with other projects, like MongoDB, Neo4j, Riak, etc.<br />
<a href="http://www.clojure-toolbox.com/">Clojure Toolbox</a> &#8211; A categorised directory of libraries and tools for Clojure<br />
<a href="http://clojure-doc.org/">Clojure Doc</a> &#8211; A community driven site for documentation on the Clojure language and ecosystem</p>
<p>When you&#8217;re done reading and ready to program, use this excellent guide: <a href="http://jrheard.tumblr.com/post/40024238467/getting-started-with-clojure">Getting Started with Clojure</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/clojure-development-ecosystem/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Master the Chrome Developer Tools</title>
		<link>http://pchristensen.com/blog/articles/master-the-chrome-developer-tools/</link>
		<comments>http://pchristensen.com/blog/articles/master-the-chrome-developer-tools/#comments</comments>
		<pubDate>Wed, 22 Aug 2012 22:18:55 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Book Review]]></category>

		<guid isPermaLink="false">http://www.pchristensen.com/blog/?p=527</guid>
		<description><![CDATA[Every few months I get in the mood for intense learning and saw-sharpening. Inspired in part by Cal Newport&#8217;s Textbook Technique, I&#8217;m writing and summarizing things I learn to make them easy to reference later. I decided to start by getting to know the Chrome Developer Tools better. I always like to find a broad [...]]]></description>
				<content:encoded><![CDATA[<p>Every few months I get in the mood for intense learning and saw-sharpening. Inspired in part by Cal Newport&#8217;s <a href="http://calnewport.com/blog/2012/08/10/you-know-what-you-write-the-textbook-method-for-ultra-learning/">Textbook Technique</a>, I&#8217;m writing and summarizing things I learn to make them easy to reference later.</p>
<p>I decided to start by getting to know the Chrome Developer Tools better. I always like to find a broad overview when I study something, and I found a great video by <a href="https://learn.thoughtbot.com/products/5-hidden-secrets-of-the-chrome-developer-tools">Ben Orenstein of Thoughtbot</a>. It&#8217;s a 22 minute video that goes over all the major features and common usage patterns of the Chrome developer tools. It&#8217;s $15 but Ben was kind enough to let me watch it for free in exchange for a review.</p>
<p>As far as tutorial videos go, this is exactly the style I prefer. He started with a summary of what he would cover, kept the sections to no longer than a few minutes, and each section includes a description and an example. He covered all the basic usage, and threw in some cool advance tricks too. And for things he mentions but doesn&#8217;t go into depth about, he shows where to find more documentation.</p>
<p>I&#8217;ll share the three favorite new things I learned. First, clicking on a color in the right-hand CSS pane of the Elements tab gives you a color picker &#8211; no more RGB hunting! Second, the right hand pane of the Elements tab includes an Event Listeners section, so you can see which Javascript events an element responds to. Matching elements to Javascript code is one pain-in-the-rear problem that I&#8217;ll be happy to avoid. And third, the Page Speed add-on gives you a score, prioritized recommendations, and links to documentation for all the parts of your page that affect speed.</p>
<p>At $15 for a 22 minute video, it&#8217;s more expensive per minute than other programming screencasts like WatchMeCode.net, Peepcode, Destroy All Software, and more, but it&#8217;s tight, broad, and well done, making it still a great value. Frankly, I think high quality screencasts are waaaaaay underpriced and this is a step in the right direction. If producers could sell a 1hr screencast for $50 instead of $12, there would be more competition and more, better material. So I support Ben&#8217;s price.</p>
<p>I&#8217;d especially recommend it if you&#8217;re new to web programming or to Chrome &#8211; more experienced developers will already know a lot of the material. It also has me interested in the other screencasts that ThoughtBot has released &#8211; maybe <a href="https://learn.thoughtbot.com/products/4-humans-present-tmux">tmux</a> is next. I use screen all day, every day but people are always saying how tmux is better.</p>
<p>Thanks Ben and please, more Thoughtbot training videos!</p>
<p>More links on Chrome Developer Tools:</p>
<ul>
<li><a href="http://jtaby.com/2012/04/23/modern-web-development-part-1.html">Modern Web Development &#8211; Part 1 &#8211; The Webkit Inspector</a></li>
<li><a href="http://blog.joocode.com/browsers/12-things-about-the-webkit-inspector-i-didnt-know/">Things I Didn&#8217;t Know About the Webkit Inspector</a></li>
<li><a href="http://news.ycombinator.com/item?id=4365934">Hacker News discussion on the above article</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/master-the-chrome-developer-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You owe it to yourself to read The Education of Millionaires</title>
		<link>http://pchristensen.com/blog/articles/education-of-millionaires/</link>
		<comments>http://pchristensen.com/blog/articles/education-of-millionaires/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 22:55:58 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Book Review]]></category>

		<guid isPermaLink="false">http://www.pchristensen.com/blog/?p=494</guid>
		<description><![CDATA[I&#8217;ve been putting off an item on my TODO list for years. Years! I had an insight about a Laws of Physics style Definition of Business that would help technical types understand that building a great product isn&#8217;t enough, and that they also need to engineer their marketing and sales. I never found the right [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been putting off an item on my TODO list for years. Years! I had an insight about a Laws of Physics style Definition of Business that would help technical types understand that building a great product isn&#8217;t enough, and that they also need to <a href="http://blog.businessofsoftware.org/2012/03/patrick-mckenzie-patio11-on-engineering-your-marketing-outcomes.html">engineer their marketing and sales</a>. I never found the right way to phrase it, but it was something like this:</p>
<blockquote><p>&#8220;Business is when a customer is convinced that you can solve their problem for less cost than the pain of the problem, and you can do so profitably.&#8221;</p></blockquote>
<p><a href="http://amazon.com/o/asin/1591844207"><img class="alignright size-full wp-image-498" title="The Education of Millionaires" src="http://www.pchristensen.com/blog/wp-content/uploads/2012/04/The-Education-of-Millionaires-198x300.jpg" alt="" width="198" height="300" /></a><br />
Even though it&#8217;s not perfect, it stuck with me because it was a sentence you could mine for insights:</p>
<ul>
<li>Building a product is not enough, customers have to know the solution exists</li>
<li>Customers being aware of you isn&#8217;t enough, they have to be convinced of your claims</li>
<li>Solving a customer&#8217;s problem is not enough, you have to do it a profit that lets you justify continuing to work</li>
<li>and more.</li>
</ul>
<p>To anyone experienced in business, all of these are &#8220;duh&#8221; insights. To a young, inexperienced, myopic nerd turned slightly outgoing engineer, they were blindingly eye-opening.</p>
<p>I no longer need to to write that blog post, because Michael Ellsberg&#8217;s book <a href="http://amazon.com/o/asin/1591844207">The Education of Millionaires</a> covers these topics oh so much better than I would have.</p>
<p><span id="more-494"></span>The short version is that the author found 20 self made millionaires (and billionaires), most of who did not finish college, and interviewed them about what they felt was important to their success. He then pulled out 7 general skills that every ambitious person should learn, with stories, principles, and homework for developing each skill. (details after my impressions)</p>
<p>It&#8217;s hard for me to overstate how highly I value this book. I&#8217;m years out of college, with a family and comfortable career, and I&#8217;ve been semi-pursuing entrepreneurship for many of those years, but this book transformed the way I view myself, my career, and the skills I want to develop. This book is not just for kids or college students &#8211; it&#8217;s for <strong>anyone</strong> ambitious that wants to set themselves up for decades of opportunities and prosperity.</p>
<p>Even before I finished the book, my personal focus changed and I started implementing one of the lessons from the book, about building a world class network. I&#8217;ve made contact with people I would have been too timid to approach in the past, and I&#8217;m seeking out ways I can help others, rather than just seek out gain for myself. Even my first forays into this have been rewarding &#8211; meeting and helping people is so much more fun than not knowing they exist &#8211; who knew?</p>
<p>I have plans for the next lessons I&#8217;m going to work on, but while it only took a few hours to read the book, I expect to be rereading it every year and working on every skill in the book every year for the rest of my career. It helped me stop thinking so much about tomorrow or next week, and to put more focus on how I can make a better next season, next year, next decade.</p>
<p>Lastly, I don&#8217;t know if I&#8217;ve ever felt so connected to an author. Ellsberg pours out himself into the book &#8211; his struggles with education, identity, self confidence, and money in the past, and the changes in his life and relationships since learning from these prosperous people he interviewed. It&#8217;s like he&#8217;s the first case study for his book. Since I heard his <a href="http://mixergy.com/michael-ellsberg-education-of-millionaires-interview/">interview on Mixergy</a> and reading the book, I have gone back and read all his <a href="http://www.ellsberg.com/blog">entire blog archive</a> and <a href="http://blogs.forbes.com/michaelellsberg/">Forbes columns</a>, watched the all his posted <a href="http://www.pchristensen.com/blog/articles/ellsberg-thiel-fellows-video/">talks</a>, and attended every one of his webinars. Almost every interaction I&#8217;ve had with his work has energized me, and reshaped my perspective.</p>
<p>If I have one complaint, it&#8217;s a thread throughout the book saying how a real-life education is so much better than a college education, and that college is a waste of time and money. For me, college was fruitful personally, financially, and professionally. But I have a Computer Science degree and have solid jobs with rapidly increasing pay since before I even graduated. I also went to an inexpensive college and graduated with under $8,000 of student loan debt. For people that went to a more expensive college, or took a less lucrative major (or both), this antagonistic thread will ring more true. Having said that, I would be so much farther today if I read this book 10 years ago when I was an undergraduate.</p>
<p>If you want more from your education, your career, and your life, you owe it to yourself to buy this book, read it, and put its lessons into action. Thank you Michael for writing this book!</p>
<p>To close, here are section titles of the book, along with some choice quotes, to give you a flavor of what you&#8217;re looking forward to:</p>
<ul>
<li>Introduction &#8211; The Craigslist Value of a BA</li>
<li>How to make your work meaningful and your meaning work</li>
<li>How to find great mentors and teachers, connect with powerful and influential people, and build a world class network</li>
<li>What every successful person needs to know about marketing, and how to teach yourself
<ul>
<li>&#8220;The first part of marketing has nothing to do with the communications or ads or messages. It has to do with the concept of the product or service itself, and how well it is designed to meet needs/solve the problems of a specific target market&#8230; Good marketing is not something you do <em>after</em> you create the product; the fact that most marketing is done this way is why we hate the word &#8220;marketing&#8221; so much&#8230; If you <em>start</em> with marketing &#8211; then that market will be <em>glad</em> to hear about what you&#8217;re offering.&#8221;</li>
</ul>
</li>
<li>What every successful person needs to know about sales, and how to teach yourself
<ul>
<li>&#8220;No matter what you&#8217;re up to in life, you have to sell something, whether it&#8217;s selling an employer on why he should hire you, selling your boss on why she should promote you, selling the members of a corporate meeting on your billiant idea &#8230; Sales is simply persuasive face-to-face communication. It&#8217;s relevant anything you are talking with someone and you want a specific outcome to arise from the conversation.&#8221;</li>
</ul>
</li>
<li>How to invest for success</li>
<li>Build the brand of you
<ul>
<li>&#8220;<em>Your brand is what people think about when they hear your name</em>. If people think &#8220;trustworthy, confident, intelligent, funny, hip, savvy, and up-and-coming&#8221; when they hear your name, then that is your brand. If people think &#8220;wannabe loser&#8221; when they hear your name, then that is your brand. And if people think absolutely nothing when they hear your name, then you have no brand.&#8221;</li>
</ul>
</li>
<li>The Entrepreneurial Mindset vs the Employee mindset
<ul>
<li>&#8220;In this increasingly unpredictable and chaotic world, the wisest choice for thriving and flourishing is to focus your efforts on cultivating skills, habits, and ways of being that will work for you under a wide range of market circumstances and economic realities, and which will allow you to bounce back and adapt to changes, shifts, shocks, crashes, and new opportunities as they arise. This is called cultivating <em>resilience</em>.&#8221;</li>
<li>&#8220;The courses in this book prepare you for success in any job, including jobs we can&#8217;t even imagine because they don&#8217;t exist yet. It is a completely adaptable set of personal and professional skills for life in the real world, applicable under any market conditions, any economic landscape, and personal circumstances.&#8221;</li>
</ul>
</li>
<li>Epilogue &#8211; The Education bubble is about to pop &#8211; are you prepared for the aftermath?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pchristensen.com/blog/articles/education-of-millionaires/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->