<?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>go bold &#187; techy</title>
	<atom:link href="http://blog.christineyen.com/?feed=rss2&#038;cat=24" rel="self" type="application/rss+xml" />
	<link>http://blog.christineyen.com</link>
	<description>another day, another blog</description>
	<lastBuildDate>Thu, 03 Jun 2010 01:37:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Learning something new every day</title>
		<link>http://blog.christineyen.com/?p=119</link>
		<comments>http://blog.christineyen.com/?p=119#comments</comments>
		<pubDate>Wed, 02 Dec 2009 07:15:34 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[techy]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=119</guid>
		<description><![CDATA[After staring at a rake task for twenty minutes and manually testing some cases in a console, I&#8217;ve got some interesting larnin&#8217;s about ActiveRecord::Base.find and what it does with an options hash.
Background
There are typically two ways to provide conditions for a database search via ActiveRecord. The first is find, which looks like this most of [...]]]></description>
			<content:encoded><![CDATA[<p>After staring at a rake task for twenty minutes and manually testing some cases in a console, I&#8217;ve got some interesting larnin&#8217;s about ActiveRecord::Base.find and what it does with an options hash.</p>
<p><strong>Background</strong><br />
There are typically two ways to provide conditions for a database search via ActiveRecord. The first is <code>find</code>, which looks like this most of the time: <code>User.find(:all, :conditions =&gt; {:first_name =&gt; 'Bob', :last_name =&gt; 'Smith'}, :limit =&gt; 5)</code>. <code>find</code> takes two arguments: {:all, :first, :last}, and an options hash (more <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002263">here</a>).</p>
<p>Or taking advantage of existing relationships, which basically ORM-magic away a one-to-many foreign-key relationship between tables, e.g. <code>some_user.files</code> would return an array of <code>some_user</code>&#8217;s File objects. So on and so forth.</p>
<p><small>And a third way, which I like and think cleans things up really nicely but is apparently not relevant to this bit of learning, is using named scopes (<a href="http://ryandaigle.com/articles/2008/3/24/what-s-new-in-edge-rails-has-finder-functionality">more</a> <a href="http://ryandaigle.com/articles/2008/8/20/named-scope-it-s-not-just-for-conditions-ya-know">references</a>) &#8211; essentially, a way to wrap up any part of that options hash into what looks like a method on the model itself. An example involving a <code>female</code> named scope on our beloved <code>User</code>model.<br />
<code><br />
class User &lt; ActiveRecord::Base<br />
&nbsp;&nbsp;named_scope :female, :conditions =&gt; {:gender =&gt; 'female'}<br />
end<br />
</code><br />
This allows you to not only get all female <code>User</code>s by calling <code>User.female</code>, but also allows combining of named scopes and the find method to minimize repetition and narrow the scope of a query. For example:<br />
<code>User.female.find(:all, :conditions =&gt; {:first_name =&gt; 'Christine'})</code></small></p>
<p><strong>But wait!</strong><br />
In a script I was working on recently, I needed to loop through an array, and look something up at each step:<br />
<code><br />
args = { :select =&gt; 'some_attr_id', :limit =&gt; 5 }<br />
user_array.each do |user|<br />
&nbsp;&nbsp;if condition<br />
&nbsp;&nbsp;&nbsp;&nbsp;files = user.files.published.find(:all, args)<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;files = user.files.unpublished.find(:all, args)<br />
&nbsp;&nbsp;end<br />
&nbsp;&nbsp;... &lt; do stuff with the files &gt;<br />
end<br />
</code></p>
<p>Interestingly enough, as args passed through the loop each time, it picked up the parameters added by the user-files relationship! Meaning, the first time through the loop with <code>User 1</code>, the args hash looked like this:<br />
<code>{:include=>nil, :readonly=>nil,<br />
<strong>:conditions=>"`files`.user_id = 1"</strong>,<br />
:joins=>nil, :select=>"some_attr_id", :group=>nil,<br />
:offset=>nil, :limit=>5, :having=>nil, :order=>"files.created_at DESC"}</code></p>
<p>&#8230; which makes all sorts of sense, considering a query like <code>user.files.published</code> <em>would</em> just be a search across some <code>files</code> table with <code>user_id</code> and a <code>published</code> conditions, but how irritating that the <code>args</code> hash was 1) mutable at all, and 2) modified by being passed into the ActiveRecord query!, </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=119</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Who doesn&#8217;t love pretty pictures?</title>
		<link>http://blog.christineyen.com/?p=103</link>
		<comments>http://blog.christineyen.com/?p=103#comments</comments>
		<pubDate>Wed, 21 Oct 2009 06:15:02 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[techy]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=103</guid>
		<description><![CDATA[
My &#8216;persona,&#8217; via some crazy Media Lab grad student&#8217;s project &#8211; mostly (it seems) built from some snippet of text a friend wrote about me once, that seems to have since dropped off the internet.
Everyone likes pretty pictures. And most of the nerdy part of &#8220;everyone&#8221; likes graphs. And everyone definitely likes to learn about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.christineyen.com/wp-content/uploads/2009/10/persona-1024x209.png"><img class="aligncenter size-large wp-image-104" title="persona" src="http://blog.christineyen.com/wp-content/uploads/2009/10/persona-1024x209.png" border="0" alt="persona" width="486" height="99" /></a></p>
<p>My &#8216;persona,&#8217; via some crazy Media Lab grad student&#8217;s <a href="http://personas.media.mit.edu/personasWeb.html">project</a> &#8211; mostly (it seems) built from some snippet of text a friend wrote about me once, that seems to have since dropped off the internet.</p>
<p>Everyone likes pretty pictures. And most of the nerdy part of &#8220;everyone&#8221; likes graphs. And everyone definitely likes to learn about themselves &#8211; which is why I have so much fun exploring sites like</p>
<table border="0" cellspacing="10" cellpadding="0">
<tbody>
<tr>
<td><img title="mint" src="http://blog.christineyen.com/wp-content/uploads/2009/10/mint-300x186.png" alt="mint" width="204" height="126" /></td>
<td><img class="alignleft size-medium wp-image-106" title="me-trics" src="http://blog.christineyen.com/wp-content/uploads/2009/10/me-trics-300x194.png" alt="me-trics" width="206" height="133" /></td>
</tr>
</tbody>
</table>
<p><a href="http://mint.com">mint</a> and <a href="http://beta.me-trics.com/">me-trics</a> &#8211; though it seems like other random takes on personal analytics (e.g. <a href="http://your.flowingdata.com">your.flowingdata</a> &#8211; more details <a href="http://flowingdata.com/2009/03/10/yourflowingdata-collect-data-about-yourself-via-twitter/">here</a>) are popping up left and right as well.</p>
<p>All the pain in these applications, though, is the actual collection of the data &#8211; I think it&#8217;d be incredibly interesting (if extraordinarily creepy) if the information was captured <em>for</em> me, and all I had to do was consume it. Mint does a decent job, though it&#8217;s focused on the area of &#8220;personal data&#8221; that leaves the largest paper trail &#8211; so it still can&#8217;t tell me how many snack breaks I take while at my computer, or the average number of times I hit &#8217;snooze&#8217; before I get up on work days.</p>
<p>One of these days. Someone needs to build an accelerometer-equipped-image-recognition-machine-learningy widget to capture this data, and the software to process it :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=103</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Satisfaaaacation.</title>
		<link>http://blog.christineyen.com/?p=99</link>
		<comments>http://blog.christineyen.com/?p=99#comments</comments>
		<pubDate>Fri, 04 Sep 2009 21:49:16 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[techy]]></category>
		<category><![CDATA[ambition]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=99</guid>
		<description><![CDATA[I think I wrote something awhile back about good companies vs. good people &#8211; but what about good companies vs. good work? I just finished up a conversation with a friend who&#8217;s in the situation of being in love with the company he works at, but hates the tedious, somewhat degrading, but admittedly necessary work [...]]]></description>
			<content:encoded><![CDATA[<p>I think I wrote something awhile back about good companies vs. good people &#8211; but what about good companies vs. good work? I just finished up a conversation with a friend who&#8217;s in the situation of being in love with the company he works at, but hates the tedious, somewhat degrading, but admittedly necessary work he actually does there. (Yes, he was an intern &#8211; but what an awful experience to have, and lesson to be taught!)</p>
<p>When should you sacrifice your own happiness / career development / intellectual stimulation for a product you&#8217;re excited about? Can you love the product <em>and</em> love the work? Or does loving the product just blind you to what you&#8217;re doing (and vice versa)?</p>
<p>I suppose it all boils down to how idealistic you are. Is this going to be <em>the</em> game-changer? Is there really nowhere else as, or almost as, exciting &#8211; but where you get to do interesting and challenging work? I usually think so &#8211; he may not. How does loyalty play into this &#8211; when are you obligated to stay with a company when you&#8217;re only being satisfied ideologically and not intellectually? (I say almost never &#8211; or that it&#8217;s only up to you to effect a change so that you <em>are</em> intellectually satisfied. But I&#8217;m only selectively idealistic, and incredibly selfish when it comes to my development.)</p>
<p>(p.s. &#8211; failed a bit with blogging once a week &#8211; but hopefully I can put something up soon about last weekend, which I spent at http://w2sf.startupweekend.org/ , and get back on track.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=99</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>You should be prepared to make this start-up the primary focus of your life.</title>
		<link>http://blog.christineyen.com/?p=90</link>
		<comments>http://blog.christineyen.com/?p=90#comments</comments>
		<pubDate>Fri, 07 Aug 2009 21:03:00 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[techy]]></category>
		<category><![CDATA[companies]]></category>
		<category><![CDATA[growing]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[priorities]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=90</guid>
		<description><![CDATA[I saw this line recently in the middle of a job posting, and I had a strong reaction &#8211; two, actually, in opposite directions. First, one of amusement and being mildly taken aback. Sure, they&#8217;re honest, but that&#8217;s a bit of an aggressive and unrealistic requirement, isn&#8217;t it? I almost wanted to scoff, &#8216;Who are [...]]]></description>
			<content:encoded><![CDATA[<p>I saw this line recently in the middle of a job posting, and I had a strong reaction &#8211; two, actually, in opposite directions. First, one of amusement and being mildly taken aback. Sure, they&#8217;re honest, but that&#8217;s a bit of an aggressive and unrealistic requirement, isn&#8217;t it? I almost wanted to scoff, &#8216;Who are you to demand to rearrange my priorities?&#8217;</p>
<p>But of course, the other side had its say as well &#8211; why, after all, shouldn&#8217;t these founders (who were looking for their third) hold any new teammates to standards as high as those that they themselves adhere? At least they list their expectations out for everyone to see, and hopefully avoid problems further down the road.</p>
<p>I&#8217;m torn &#8211; what is the right way to handle your pet project? I came into this summer wanting a &#8216;real startup experience,&#8217; one with late nights and young techies bonding over their mutual <span style="text-decoration: line-through;">misery</span> labor. I complained about most people in my office heading home by 7, despite the smaller and otherwise generally &#8217;startup-y&#8217; feel. But then, faced with an opportunity to interview with a company that would expect more of me &#8211; expect me to make it the primary (only) focus in my life. And I don&#8217;t know, after all, if that&#8217;s what I want anymore.</p>
<p>I do want to care a lot about my work, be heavily emotionally and professionally invested in my product, and I wouldn&#8217;t mind it if everyone stuck around until 9 or 10 most nights&#8230; but I also appreciate having good friends outside of the company, and coming home to a roommate who cares more about my personal and emotional health than necessarily the health of my professional career.</p>
<p>In any case, I think this is going to be something I&#8217;ll be revisiting over and over again in the coming years, and something that will be heavily dependent on my professional focus. We&#8217;ll see what happens&#8230; and I&#8217;ll leave with a quote from <a href="http://evhead.com/2005/11/ten-rules-for-web-startups.asp">a serial entrepreneur&#8217;s thoughts</a>* on &#8220;Rules for Web Startups&#8221;:</p>
<blockquote><p>#10: Be Balanced</p>
<p>What is a startup without bleary-eyed, junk-food-fueled, balls-to-the-wall days and sleepless, caffeine-fueled, relationship-stressing nights? Answer?: A lot more enjoyable place to work. Yes, high levels of commitment are crucial. And yes, crunch times come and sometimes require an inordinate, painful, apologies-to-the-SO amount of work. But it can&#8217;t be all the time. Nature requires balance for health—as do the bodies and minds who work for you and, without which, your company will be worthless. There is no better way to maintain balance and lower your stress that I&#8217;ve found than David Allen&#8217;s GTD process. Learn it. Live it. Make it a part of your company, and you&#8217;ll have a secret weapon.</p></blockquote>
<p>* I actually hate the term &#8217;serial entrepreneur.&#8217; But I suppose Evan Williams has done pretty damn well for himself, and while I want to resent him for trashing this style of working, some part of me supposes he can&#8217;t be entirely wrong about everything.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=90</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impetus</title>
		<link>http://blog.christineyen.com/?p=85</link>
		<comments>http://blog.christineyen.com/?p=85#comments</comments>
		<pubDate>Wed, 29 Jul 2009 05:40:50 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[techy]]></category>
		<category><![CDATA[ambition]]></category>
		<category><![CDATA[commitment]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[reminders]]></category>
		<category><![CDATA[sanfrancisco]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=85</guid>
		<description><![CDATA[I&#8217;ve been trying to be on my own case this summer. Last summer I was in San Francisco, I was very comfortable &#8211; I took the last shuttle home (at 7pm!) every day, couldn&#8217;t do work at home (no VPN access for interns!), so did a lot of relaxing, watching Alias, and cooking.
I&#8217;d had the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying to be on my own case this summer. Last summer I was in San Francisco, I was very comfortable &#8211; I took the last shuttle home (at 7pm!) every day, couldn&#8217;t do work at home (no VPN access for interns!), so did a lot of relaxing, watching <em>Alias</em>, and cooking.</p>
<p>I&#8217;d had the goal of going out and &#8220;doing the SF tech thing,&#8221; which to me at the time meant going to tech meetups and talks and meeting all sorts of cool people, and learning all sorts of cool things. Clearly, it didn&#8217;t happen.</p>
<p>So this year I&#8217;m trying something different. I&#8217;ve been much more proactive about getting out and talking to people &#8211; an interesting union of MIT friends in and out of the startup world, acquaintances with interesting backgrounds and experiences, and now and then the occasional stranger whose blog I find fascinating. (I hate the term networking. I prefer &#8220;being-enriched-by-the-wisdom-of&#8221;.)</p>
<p>While the first category of dinner partners definitely keeps me from feeling like I&#8217;m becoming a hermit, it&#8217;s the second two categories that are really pushing this summer and myself forward. I walk out of each of these dinners excited about everything I can and want to do, and even more convinced of the importance of constant self-improvement.</p>
<p>So. In the interest of committing myself to a number of things to achieve this goal, here goes the list:</p>
<ul>
<li>Blog at least once a week. I&#8217;m going to set an alarm on my iCal and commit to posting something interesting I learned, or thought, or accomplished.</li>
<li>Read 1 &#8216;improvement&#8217; book for every fun book. I&#8217;m in the middle of reading the LOTR series (for the first time!), and once I finish <em>The Two Towers</em>, until I finish a programming- or startup- or productivity-related book, I won&#8217;t let myself read <em>Return of the King</em>. Sniff.</li>
<li>Keep working a few nights a week on my side project (more later) &#8211; I feel like I need at least one or two non-school- or work-related projects under my belt before I can respect myself as a hacker. Or, as a lower standard, any sort of programmer.</li>
<li>Along that line of thought &#8211; be more disciplined about said project! Don&#8217;t just sit down and start coding. Plan out the project a little more (what do I want it to do? How should it behave?) and use version control / repo management tools as well.</li>
</ul>
<p>(Side note: am still probably far too awkward to be going around meeting people and making these first impressions. Need to work on that, too &#8211; for now, just sadface)</p>
<p>(Last note: tonight&#8217;s conversation was described as &#8220;covering a lot of ground, both philosophically and academically.&#8221; Last week&#8217;s was described as &#8220;spontaneously deep conversation with strangers.&#8221; Good nights, both. :))</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=85</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Readymades</title>
		<link>http://blog.christineyen.com/?p=83</link>
		<comments>http://blog.christineyen.com/?p=83#comments</comments>
		<pubDate>Wed, 15 Jul 2009 07:43:32 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[techy]]></category>
		<category><![CDATA[priorities]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[startups]]></category>
		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=83</guid>
		<description><![CDATA[I was at the SF MoMA this past weekend &#8211; and if you&#8217;ve ever been, you&#8217;ll (hopefully) know that in their standing collection is a set of art from a number of particularly interesting artists, one of whom (Duchamp) is known best for a work photographed here. This is Fountain:
It&#8217;s a urinal. It&#8217;s a run-of-the-mill, [...]]]></description>
			<content:encoded><![CDATA[<p>I was at the SF MoMA this past weekend &#8211; and if you&#8217;ve ever been, you&#8217;ll (hopefully) know that in their standing collection is a set of art from a number of particularly interesting artists, one of whom (Duchamp) is known best for a work photographed here. This is <em>Fountain</em>:</p>
<p><img class="alignleft" style="margin: 0 10px 10px 0;" title="duchamp_fountaine" src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Duchamp_Fountaine.jpg/437px-Duchamp_Fountaine.jpg" alt="" width="210" height="289" />It&#8217;s a urinal. It&#8217;s a run-of-the-mill, yes-he-really-did, urinal. Made into art (and thus deserving of a spot inside the MoMA) simply by declaring it as such.</p>
<p>Of course, some amount of reputation was required to pull that off, and some other, more traditionally respectable work had to be done to acquire said reputation, but in the end &#8211; he&#8217;s able to pull something someone else technically &#8220;made,&#8221; and enhance it for his own purposes.</p>
<p>In the software world, there are <a href="http://www.google.com">those</a> who seem to find it unthinkable to use off-the-shelf products to help with the engineering process in-house. While this attitude has certainly led to plenty of innovation (thank you for <a href="http://code.google.com/p/the-cassandra-project/">Cassandra</a>, <a href="http://labs.google.com/papers/bigtable.html">BigTable</a>, etc), these special cases seem to really only be the extreme of the &#8220;there&#8217;s nothing out there just for us&#8221; attitude. And, I suppose, to play devil&#8217;s advocate, in <a href="http://google.com">their</a> situation, off-the-shelf tools probably <em>aren&#8217;t</em> quite right for their incredibly unique case. (Or maybe they just had too many engineers and not enough game-changing projects?)</p>
<p>In any case. One of the things I&#8217;m getting used to at <a href="http://vark.com">Aardvark</a> &#8211; and starting to really appreciate the wisdom of &#8211; is utilizing existing and established solutions when necessary. We need bug/ticket tracking? There&#8217;re tons of solutions out there &#8211; done! Better log analysis? Found, installed, done. System and cluster monitoring? Perhaps not entirely ideal, but good enough &#8211; done. It lets the team know what we need to know, and gets us free to focus on what we really need to get done &#8211; the core product and infrastructure.</p>
<p>I joined a conversation this past weekend with a couple of people just starting to get their startup off the ground, and they were embroiled in a CouchDB vs MySQL debate &#8211; are relational databases really outdated, or are document-based databases just overhyped? Which is the better to start with for their startup? My answer &#8211; whichever makes your <em>actual</em> job easier. There are lots of cool toys out there, but there&#8217;s a careful risk vs. reward tradeoff you have to make &#8211; and when you&#8217;re focused on startups, can you really afford an awkward risk down the line with your data or architecture?</p>
<p>I suppose this is a long, elaborate rephrasing of &#8220;<a href="http://www.jwz.org/doc/worse-is-better.html">Worse is Better</a>.&#8221; Take shortcuts and the quick, easy, established route to change the world, first &#8211; <em>then</em> figure out how to make it happen better.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=83</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>whoa! tcpdump</title>
		<link>http://blog.christineyen.com/?p=74</link>
		<comments>http://blog.christineyen.com/?p=74#comments</comments>
		<pubDate>Wed, 10 Jun 2009 05:39:41 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[techy]]></category>
		<category><![CDATA[unix commandline links]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=74</guid>
		<description><![CDATA[Interesting UNIX trick of the week:   $ sudo tcpdump -s0 -i en1 -A
(via unixjunkie)
]]></description>
			<content:encoded><![CDATA[<p>Interesting UNIX trick of the week:   <code>$ sudo tcpdump -s0 -i en1 -A</code></p>
<p>(via <a href="http://unixjunkie.blogspot.com/2008/10/comcasts-incompetence-puts-you-at-risk.html">unixjunkie</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=74</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MIT 6.001 and the new curriculum</title>
		<link>http://blog.christineyen.com/?p=62</link>
		<comments>http://blog.christineyen.com/?p=62#comments</comments>
		<pubDate>Mon, 11 May 2009 07:30:03 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[techy]]></category>
		<category><![CDATA[cs]]></category>
		<category><![CDATA[mit]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=62</guid>
		<description><![CDATA[A recent post about the death of 6.001 caught my attention earlier today, and I&#8217;ve been stuck composing this blog post in my head for awhile.
As one of many MIT Course 6 students who took 6.001, I&#8217;m crushed they&#8217;ve been changing the curriculum. When it happened, student speculation ran along the lines of &#8211; enrollment [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://danweinreb.org/blog/why-did-mit-switch-from-scheme-to-python/trackback">A recent post</a> about the death of 6.001 caught my attention earlier today, and I&#8217;ve been stuck composing this blog post in my head for awhile.</p>
<p>As one of many MIT Course 6 students who took 6.001, I&#8217;m crushed they&#8217;ve been changing the curriculum. When it happened, student speculation ran along the lines of &#8211; enrollment in <a href="http://www.eecs.mit.edu">Course 6</a> has been dropping since the introduction of <a href="http://web.mit.edu/be/index.htm">Course 20 (Biological Engineering)</a>. And because 6.001 was so heavily CS-oriented, the department didn&#8217;t want to continue losing the set of students who were turned off by the lack of hands-on appeal &#8211; so they wanted to make the class more accessible and exciting to the largest number of students.</p>
<p>While, from what I&#8217;ve seen and of 6.01, the class lacks not only the pure coolness of Scheme versus Python, but also 1) the ability to even the playing field for students, regardless of their previous programming knowledge, 2) the radically different way of thinking about computer programming that Scheme and SICP provided, and 3) an actual solid grounding in thinking about problems computationally and breaking them down. (One of the upsides I think I would have appreciated, however, is the ability to put an industry-relevant language on my resume. &#8220;Scheme&#8221; got a lot more raised eyebrows than job offers.)</p>
<p>What MIT offers now for those looking for CS grounding is an &#8220;intro intro&#8221; course called 6.00 &#8211; a class required for Course 20 but not for Course 6, and a class designed specifically  to teach students how to think computationally and design software programs. 6.00 covers CS basics from recursion to performance to basic Big-O notation. Part of me wishes this class was included in the required curriculum, and part of me thinks it would be too easy / a waste of time for those who have programmed in the past.</p>
<p>I wonder whether this argument boils down to &#8211; how should students learn? By learning the basics and theory (math, physics, basic CS classes like 6.001 / 6.00), or by exciting students first by offering hands-on classes and lots of options (6.01, removing 8.02, the E&amp;M class, from the General Institute Requirements, etc.). Unfortunately, the latter approach feels like MIT is relaxing its standards for its students &#8211; trying to make things exciting <em>now</em> so that students stick with the program, instead of building a solid foundation for later&#8230; and if that&#8217;s true, it&#8217;s not a trend I&#8217;m comfortable with.</p>
<p>For more discussion &#8211; the original Hacker News thread <a href="http://news.ycombinator.com/item?id=602307">here</a> (which actually links the article at the top of this post. How circular!)</p>
<p><em>Edit: A great point (from a MIT &#8216;08 sitting right in front of me in class, incidentally) <a href="http://news.ycombinator.com/item?id=530659">made in an identical thread</a> a month+ ago &#8211; </em></p>
<blockquote><p><span class="comment"><span style="color: #000000;">I think there&#8217;s something else here, implicit in Sussman&#8217;s comment, that&#8217;s important. MIT was founded on a philosophy of practicality, and everything else is secondary. If you couple that with the belief that fundamental computer science is the most efficient way to enhance practical software engineering, Scheme was a wonderful choice&#8230;<br />
</span></span></p>
<p><span style="color: #000000;">Python (and, frankly, a number of the scripting languages-turned-mainstream) combines this clarity of computer science with a practicality that Scheme never had. If you can convey 95% of the basic ideas in Python, and you can also open the door to learning how to deal with 3rd party code, you&#8217;d be a fool not to. It was never about programming purity anyway, so there&#8217;s no reason to mourn the passing of Scheme. It&#8217;s progress.</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=62</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Product.good -&gt; people.good?</title>
		<link>http://blog.christineyen.com/?p=59</link>
		<comments>http://blog.christineyen.com/?p=59#comments</comments>
		<pubDate>Fri, 08 May 2009 01:31:45 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[techy]]></category>
		<category><![CDATA[ambition]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=59</guid>
		<description><![CDATA[In tech and the startup world, there are tons of options &#8211; new startups spring up every day with &#8220;the next big thing&#8221; &#8211; or &#8220;the ____ killer,&#8221; or &#8220;____ for [insert platform here],&#8221; or &#8220;____ meets ____, AGGREGATED!!&#8221;
So when something really cool comes around &#8211; it seems to make sense to want to jump [...]]]></description>
			<content:encoded><![CDATA[<p>In tech and the startup world, there are tons of options &#8211; new startups spring up every day with &#8220;the next big thing&#8221; &#8211; or &#8220;the ____ killer,&#8221; or &#8220;____ for [insert platform here],&#8221; or &#8220;____ meets ____, AGGREGATED!!&#8221;</p>
<p>So when something really cool comes around &#8211; it seems to make sense to want to jump on board and share in their (or your expectation of their) success. But when you know little about the actual team you&#8217;d be working on, and conventional wisdom seems to put &#8220;the people&#8221; at the top of the list when considering school / workplaces / environments in general, how do things play out?</p>
<p>I like to think that good people want exciting projects. A good developer <em>wants</em> stimulating work, and once put in an environment with that stimulus taken away (either by a boring project or, for example, being bought out by a company which stifles the exciting parts), they&#8217;ll find a new place to play out their cool ideas.</p>
<p>So I think instead of worrying whether product.good &gt; people.good or people.good &gt; product.good&#8230; I&#8217;ll stick with product.good <em>implies</em> people.good (with the converse unfortunately not always being true, without good management / vision / etc). Here&#8217;s to the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ Sanity Check</title>
		<link>http://blog.christineyen.com/?p=23</link>
		<comments>http://blog.christineyen.com/?p=23#comments</comments>
		<pubDate>Wed, 22 Apr 2009 00:21:06 +0000</pubDate>
		<dc:creator>christine</dc:creator>
				<category><![CDATA[techy]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[reminders]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.dontyouevah.com/?p=23</guid>
		<description><![CDATA[Note to self: wondering how an element got added to your std::map that you didn&#8217;t actually put there?
std::map&#60;..&#62;[lid] will add an empty element to your list if the lid doesn&#8217;t currently exist in the table. Awesome.
Also note to self: printing out addresses of objects is done as follows:
obj *my_obj;
printf("address: %p\n", my_obj);
not &#38;my_obj, not printing with [...]]]></description>
			<content:encoded><![CDATA[<p>Note to self: wondering how an element got added to your std::map that you didn&#8217;t actually put there?</p>
<p><code>std::map&lt;..&gt;[lid]</code> will add an empty element to your list if the lid doesn&#8217;t currently exist in the table. Awesome.</p>
<p>Also note to self: printing out addresses of objects is done as follows:</p>
<p><code>obj *my_obj;<br />
printf("address: %p\n", my_obj);</code></p>
<p>not &amp;my_obj, not printing with %u or %s. Just the above.</p>
<p>Note to the rest of you: I&#8217;m going to figure out some way to separate my personal blog and my techy/notes-to-self blog. Apologies for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.christineyen.com/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
