<?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>Armando Fox &#187; Blogroll</title>
	<atom:link href="http://www.armandofox.com/geek/category/blogroll/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.armandofox.com/geek</link>
	<description>A breadth-first traversal of life</description>
	<lastBuildDate>Sun, 05 May 2013 22:09:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>You&#8217;re an idiot if you don&#8217;t think gun laws need to be reformed</title>
		<link>http://www.armandofox.com/geek/2012/12/youre-an-idiot-if-you-dont-think-gun-laws-need-to-be-reformed/</link>
		<comments>http://www.armandofox.com/geek/2012/12/youre-an-idiot-if-you-dont-think-gun-laws-need-to-be-reformed/#comments</comments>
		<pubDate>Sat, 15 Dec 2012 23:24:50 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=591</guid>
		<description><![CDATA[Sorry, but you are.
I&#8217;m astounded by the ideological rigidity that has apparently so immobilized some people—including some I normally think of as perceptive and intelligent—that prevents them from seeing what is obvious to so many of us: the US needs tighter gun control laws.
Disclaimer: Some of the following arguments are so intellectually vacuous that you [...]]]></description>
			<content:encoded><![CDATA[<p>Sorry, but you are.</p>
<p>I&#8217;m astounded by the ideological rigidity that has apparently so immobilized some people—including some I normally think of as perceptive and intelligent—that prevents them from seeing what is obvious to so many of us: the US needs tighter gun control laws.</p>
<p><strong>Disclaimer:</strong> Some of the following arguments are so intellectually vacuous that you might think they are &#8220;straw man&#8221; arguments designed to be shot down, but sadly, every one of them was proposed by someone personally known to me.  (Not all by the same person, though.  That would be tragic indeed.)</p>
<p><strong>“If you ban guns because of mass shooters, you’d have to ban jet planes because of 9/11.” </strong>Don&#8217;t laugh, someone actually made this comparison through what I assume was a fog of ideology.  First, airplanes are primarily designed to transport people and things, but were tragically misused for an evil purpose; killing someone by beating them with a brick doesn&#8217;t mean we should ban bricks.  In contrast, killing someone is <em>the sole purpose</em> for which a gun is designed.  This is even more true of semiautomatic assault weapons, which are optimized to cause the maximum amount of damage with the minimum amount of time, effort and risk to the shooter.  Second, while 9/11 resulted in swift (and sometimes ill-advised) changes in airport security, at least there <em>was</em> a response.  In contrast, despite Columbine, Virginia Tech, Portland, and now Newtown, there&#8217;s been <em><strong>no change whatsoever</strong></em> in gun policy, and indeed there have been public officials whose first reaction is apparently to ensure that such events aren&#8217;t used as a pretext for making any such changes.  There was even legislation that just went into effect in Michigan <a href="http://www.freep.com/article/20121215/NEWS05/312150110/State-s-new-guns-in-school-law-provokes-outcries-and-praise-in-wake-of-Connecticut-rampage">allowing concealed weapons in schools, on the pretext that &#8220;armed teachers could have minimized the damage&#8221;</a> in such a mass shooting.</p>
<p><strong>“If you ban guns because of mass shooters, you’d have to ban cars because of drunk drivers.” </strong> Bzzzt, wrong.  Besides the fact that the same argument applies—drunk drivers are misusing a technology whose primary purpose is generally beneficent and completely unrelated to killing people—the rules for getting and keeping a drivers&#8217; license are actually stricter than the gun laws in most states, including Connecticut, whose gun laws are considered among the toughest.  To operate a motor vehicle, you must take an eye exam, a written test, and a road test, and at least the first two must be repeated every few years.  In contrast, we don&#8217;t even <em>have </em>a national registry of gun ownership because of the patchwork of (largely permissive) state laws that often don&#8217;t require registration.</p>
<p><strong>“You won&#8217;t eliminate guns by banning them.” </strong>True, but you will greatly reduce them.  And as the NIH and others have reported, <a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1447364/">gun homicide rates monotonically track gun ownership</a> across the US already, with people in &#8220;high gun ownership&#8221; states being 2.5 times more likely to be homicide victims than those in &#8220;low gun ownership&#8221; states.  Similarly, tougher DUI laws and safety laws have not eliminated vehicular deaths, but they have <a href="http://www-nrd.nhtsa.dot.gov/Pubs/811346.pdf">reduced them by 90% </a>(per mile driven) since the 1950s when no such laws were in place.</p>
<p><strong>“You shouldn&#8217;t infringe on the right of law-abiding people to own a firearm of their choice.”</strong> Sorry, but yes you should.  Just because I am interested in, say, chemical weapons doesn&#8217;t mean I should be allowed to own them.  The Second Amendment is erroneously interpreted as enshrining all firearms past and future, when in fact it was written when the state-of-the-art firearm took nearly a minute to reload between shots rather than an automated technology designed for rapid and efficient mass slaughter.  And as everyone knows (or should), the Constitution and its Amendments <a href="http://en.wikipedia.org/wiki/Shouting_fire_in_a_crowded_theater">are not absolute but rather subject to specific limitations</a>.</p>
<p><strong>“Guns don’t kill people, people kill people.”</strong> The statement &#8220;guns don&#8217;t kill people, people kill people&#8221; is false on both counts: guns<em> do</em> kill people—in fact that&#8217;s <em>all</em> they are designed to do—and people kill more people with the help of advanced killing technology than without it.</p>
<p><strong>“We need to focus on the root problem of identifying and helping the mentally ill.”</strong> While I&#8217;m all in favor of helping the mentally ill, this statement is usually used as a dressed-up version of the previous tired cliché.  First, while the most horrific mass shootings recently have been committed by such people, these represent an insignificantly tiny fraction of all US gun homicides.  Second, in case we don&#8217;t identify someone&#8217;s mental illness in time or help him or her quickly enough, it should be really, really hard for them to get their hands on technology that amplifies their rage or illness.</p>
<p><strong>“We tried banning alcohol during Prohibition, and it didn’t work.”</strong> Alcohol doesn&#8217;t give me the immediate means to mow down 20 kids in minutes with minimal physical risk to myself.</p>
<p><strong>“If [teachers, citizens, etc.] armed themselves as is their right, they could mitigate the damage caused by [mass shooters, loonies, etc.]”</strong> This is the &#8220;<a href="http://en.wikipedia.org/wiki/Mutual_assured_destruction">mutual assured destruction</a>&#8221; stance: in the limit, everyone is visibly armed to the teeth, so no one dares actually use their firearms for fear of immediate and devastating retaliation.  Setting aside the question of who would actually want to live in such a society, it doesn&#8217;t work: especially in the case of recent mass shootings and many assassinations, the killer frequently takes his own life or is taken down by law enforcement, <em>after</em> the damage has been done.  (The same people who talk about &#8220;helping the mentally ill&#8221; also trot out this argument, apparently not realizing they are barking up two mutually contradictory trees in so doing.  In the recent shootings, the mentally ill shooter didn&#8217;t  exactly give a lot of heads up before opening fire.)</p>
<p><strong>But all of the legalistic arguments pale in comparison to a simple moral truth: <em>automatic weapons designed solely to kill large numbers of people in short amounts of time simply have no fitting role in civilized society.</em></strong> If you don&#8217;t believe that, I&#8217;m afraid you are just on the wrong side of history.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/12/youre-an-idiot-if-you-dont-think-gun-laws-need-to-be-reformed/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>For four years I learned to be a toucan</title>
		<link>http://www.armandofox.com/geek/2012/07/for-four-years-i-learned-to-be-a-toucan/</link>
		<comments>http://www.armandofox.com/geek/2012/07/for-four-years-i-learned-to-be-a-toucan/#comments</comments>
		<pubDate>Tue, 17 Jul 2012 11:01:22 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=561</guid>
		<description><![CDATA[For four years, I got a brief glimpse into the life of a toucan, by learning to be one.
Four years ago Tonia and I acquired Pogo, a not-yet-weaned keel-billed toucan.  We lost her yesterday in a freak accident, and it&#8217;s a bit too close and too painful to include a photo of her here, but [...]]]></description>
			<content:encoded><![CDATA[<p>For four years, I got a brief glimpse into the life of a toucan, by learning to be one.</p>
<p>Four years ago Tonia and I acquired Pogo, a not-yet-weaned keel-billed toucan.  We lost her yesterday in a freak accident, and it&#8217;s a bit too close and too painful to include a photo of her here, but she&#8217;s in my Facebook photo and she&#8217;s the GitHub avatar for the &#8217;saasbook&#8217; organization, so you&#8217;ve probably seen her even if you never met her in person.  (And if you had met her in person, you&#8217;d remember.)</p>
<p>In the four years she lived with us, we quickly learned that in order to steward a toucan you have to learn to be one, since toucans are not domesticated and haven&#8217;t developed the ability to tune in to human behaviors.  (She announced this the first morning we had her at home by pooping in our bed, a remarkable foreshadowing of much pooping to come and that we&#8217;d spend much of our time cleaning up after it.  Later that evening, in the TV room, she got nervous about something and tried to fly around, knocking over a glass of red wine.)</p>
<p>So we became toucans.  Through trial and error, we learned that passing food back and forth is an important social bonding ritual, at least as important as eating.  We learned that you can never turn your back on a toucan: Pogo was &#8220;always on&#8221;, and when she was awake she was constantly getting into everything, looking for trouble.  That&#8217;s the nature of the toucan, we learned: she was inquisitive and curious about everything all the time.  We learned that although she would wake at the crack of dawn and start croaking loudly, that was just her &#8220;contact call&#8221; trying to locate the flock; once we figured that out, we started bringing her into the dark bedroom in the morning to sleep in with us.  She would take a food pellet and hop into bed to perform the all-important exchange ritual to confirm she was with the right flock, then would doze with us for an hour or two or even three before becoming hyperactive again.  We learned that certain footwear sets off aggressive reactions, though we could never fully figure out why or what specific characteristics would trigger it, though it appeared to be related to jealousy.  We learned that by making a gesture with our fingers like a beak opening and closing, we got pecked less often because apparently she interpreted the gesture as an overture to social contact rather than as a threat.  As she learned her way around the house and we became more confident she wouldn&#8217;t do something foolish, we stopped trimming her flight feathers so she could be fully flighted around the house, and she learned many paths through the house and flew around with relish thereafter.</p>
<p>We got used to a repertoire of unusual sounds and behaviors. When we left the house to go to work, or had to put her in her house and got out of view, she would start her &#8220;contact call&#8221; (croak croak croak croak croak) for quite awhile to see if she could locate us.  If we had to intervene to stop an undesirable behavior—move her to a different perch, move her away from food she wasn&#8217;t supposed to be eating, or take something away from her that we were afraid she&#8217;d swallow—she&#8217;d point her beak up in the air and begin a defiant protest (CAW CAW CAW CAW CAW) to express her clear displeasure.  If one of us came home from work after the other of us had already gotten home and let her out, she would hear the front door and quickly hop down the few steps to the upper landing of our staircase, and stand there to see who was coming in.  (hop hop hop hop THUMP)  Sometimes, especially if it was me, her chosen &#8220;mate&#8221;, she would wait for me to sit on the steps, creating a cavity between my body and the wall; she would then gleefully hop down the rest of the stairs, slap her beak against the floor, and then try to wiggle into the cavity, purring excitedly.  (hop hop hop hop slap slap slap RATTLE RATTLE RATTLE)  If we came home after dark and she was already asleep on her perch in her house, she&#8217;d wake up and briefly ruffle her feathers,  often bonking her head on the eave of her house in the process (flap flap flap flap flap BONK flap flap flap) before settling back to sleep, curled up like a football with beak tucked against her back and tail flipped forward over her head.</p>
<p>Once in while, most commonly during the midmorning hours, she&#8217;d keep me company while I worked at home, sitting on the back of my chair and preening her feathers.  These morning constitutionals didn&#8217;t last long and usually devolved into hyperactivity shortly after, but during the hour or two that she was doing her personal grooming, it was fun to have her supervise my work and just sit close by.</p>
<p>And during very special (and rare) moments, when she was in just the right mood, she would allow us to help preen her feathers and rub her beak.  She would respond either enthusiastically with the same excited loud rattling, or sometimes, if she was very relaxed with me, with an almost intimate very low rattling.  On the latter occasions, she would partially or fully close her eyes while being petted, as I alternated between grooming her feathers, rubbing her beak and rubbing her blue feet.  Those episodes were rare but very special, as it was a moment of actual communing with a very different species.  Those moments remind us that however different we look, we all ultimately come from the same genetic stock and our primitive cerebrums share a common set of motivations: we all seek comfort and safety, we occupy social roles, we all want food and warmth and contentment and a sense of fulfillment in our social groups.  Amazingly, as maddeningly difficult as it often was to learn Pogo&#8217;s body language or behavior patterns, it was easy to identify when she felt safe and happy.</p>
<p>We will miss her very much, but her legacy will have been to remind us that although we might never have been ideal toucans, there are things deep in our shared DNA that let us build occasional bridges with the unlikeliest of species.  My wife has always known this, but Pogo was a particularly striking example.</p>
<p>Goodbye, bird love.  We both knew you wouldn&#8217;t last forever but we lost you before your time.  Yes, perhaps it wasn&#8217;t in your nature to be a &#8220;good bird&#8221;, but we know you tried as hard as you could, just as we tried as hard as we could to be effective toucan companions and to indulge &#8220;the essence of the toucan&#8221; whenever possible rather than trying to project our own expectations onto you.  Yes, you were pecky and exasperating at least as often as you were gentle and loving, but you were always amusing and you always found some trouble to get into that we&#8217;d never thought of—sorting the compost, learning to let yourself out of your house, eating things you really shouldn&#8217;t, or requiring us to rethink placement of food and other items in the kitchen to put them out of your reach, lest you attempt to sample them by beaking each one. When we wondered how such a creature could exist—not the fastest flyer, awkward on land, brightly colored, no natural defense mechanisms, impudent and inquisitive to the point of foolhardy—you reminded us that some creatures get to exist simply because there&#8217;s room for them in their ecosystem.</p>
<p>The flock is smaller by one today, but it&#8217;s still a good flock.  We will always remember you and we&#8217;re grateful to have had the opportunity, for a few years at least, to try to be part of your unusual world and to try to rise to the challenge of seeing it through your eyes and understanding your behaviors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/07/for-four-years-i-learned-to-be-a-toucan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should you self-publish? Should anybody?</title>
		<link>http://www.armandofox.com/geek/2012/05/should-you-self-publish-should-anybody/</link>
		<comments>http://www.armandofox.com/geek/2012/05/should-you-self-publish-should-anybody/#comments</comments>
		<pubDate>Thu, 31 May 2012 16:44:07 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Books & E-books]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=548</guid>
		<description><![CDATA[Many colleagues have asked us about the experience of self-publishing our textbook.  In a  I talked about the DIY technology I harnessed to produce the actual artifacts (both the printed book and the ebook).  In this post I&#8217;ll talk about being self-sufficient and doing the other things publishers presumably do for you.
Advice: have a plan [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: normal;">Many colleagues have asked us about the experience of self-publishing our <a href="http://saasbook.info">textbook</a>.  In a <a href="http://www.armandofox.com/geek/2012/02/adventures-in-self-publishing-with-latex-and-ruby/">previous post</a> I talked about the DIY technology I harnessed to produce the actual artifacts (both the printed book and the ebook).  In this post I&#8217;ll talk about being self-sufficient and doing the other things publishers presumably do for you.</span></p>
<p><strong>Advice: have a plan for proofreading and errata. </strong>I&#8217;ve never had a publisher, and I&#8217;m a stickler for writing, so proofreading with a fine tooth comb is something I do anyway. But if it&#8217;s not something you do, you won&#8217;t have a publisher to help with that.  Dozens of minor errata were reported by readers; we used a Google Form (HTML form backed up by a Google Docs spreadsheet) to collect them.  This has been challenging, because Amazon has their own mechanism that allows readers of Kindle books to report errors.  However, the information reported through that mechanism is relayed sporadically and not sanity-checked; factually incorrect &#8220;corrections&#8221; from readers are passed straight through, as are complaints from readers who aren&#8217;t sophisticated enough to operate their ebook reader devices.  However, those people are Amazon&#8217;s customers <em>(and as an author, you are not)</em>, so we just have to learn to deal with this.</p>
<p><strong>Advice: set your expectations for &#8220;service&#8221;.</strong> One thing a publisher normally handles is distribution.  Amazon&#8217;s Kindle Direct Publishing handles that for the Kindle book, but until recently, their service &amp; support for publishers <a href="http://www.armandofox.com/geek/2012/05/does-amazon-kdp-want-to-engage-authors-or-commoditize-them/">was terrible</a>.  (Note that I don&#8217;t call it &#8220;customer service&#8221;.  People who buy books are Amazon&#8217;s customers.  Authors are not.)  Recently, though, because of the highly visible success of our <a href="http://saas-class.org">MOOC</a>, which uses both the Kindle book and Amazon Web Services infrastructure, Amazon has become much more interested in speaking about strategic things with us, and has given us the level of support usually given to real publishers.  We just made our book available on the Nook store and expect to sell it via Google Books starting next month; I&#8217;ll report back on whether they are any more responsive to indie authors.</p>
<p><strong>Advice: tell your purchasers to follow you or otherwise let you notify them of updates. </strong>A key reason we wanted to do an ebook was the ability to get bug fixes and new content into readers&#8217; hands quickly.  Each release of the book has a version number, starting from 0.8.0 in January 2012 up to 0.8.5 in May 2012.  We applied the errata fixes ourselves, using GitHub to track all book content and tagging the releases as we would with code, and every erratum has a corresponding version number.  Amazon initially told us they&#8217;d notify purchasers and allow them to re-download updated versions of the ebook, but <a href="http://www.armandofox.com/geek/2012/05/does-amazon-kdp-want-to-engage-authors-or-commoditize-them/">they waffled</a>.  (This is now fixed, but only by Amazon&#8217;s decision to give us special treatment.)  Without that support, I&#8217;m not sure we&#8217;d be able to get updates into readers&#8217; hands.  Even so, while readers can now re-download updated versions of our book, it&#8217;s up to us (not Amazon) to notify readers when new versions are available.  We can use the MOOC registration email lists to hit many of those people, but others will have to find out for themselves.  We&#8217;re now encouraging readers to follow us on Twitter, and we&#8217;ll put that text into the next release of the book.</p>
<p><strong>Advice: have a plan for spreading the word via professional forums</strong>.  We had already been spreading the word about our course—we had presented posters or talks at CSEET, SIGCSE and ICSE, wrote an <a href="http://cacm.acm.org/magazines/2012/5/148610-crossing-the-software-education-chasm/fulltext">op-ed for CACM</a> espousing the teaching of software engineering using SaaS+Agile, and so on.  We&#8217;d been collecting names of people who might be interested in trying out our ideas, so naturally we told them about the book too, and offered most of them complimentary copies.  (Unlike with a publisher, the cost of the comp copies comes out of pocket for us, though the print-on-demand house we use, <a href="http://createspace.com">CreateSpace</a>, allows authors to purchase author copies at a price lower than list.)</p>
<p><strong>Advice: be prepared to do your own feet-on-the-ground marketing and publicity</strong>.  My marketing experience as a <a href="http://altarena.org">nonprofit theater Board member</a> came in handy.  Following the pattern I&#8217;ve used in that world, we designed a postcard and had it printed and direct-mailed by <a href="http://psprint.com">PSPrint</a> to a mailing list we purchased (~600 software engineering professors). The list was ad hoc and included few top-tier departments; in retrospect I&#8217;m not sure it was worth the roughly $500 we paid. Successful practice in arts marketing is to follow the postcard with an email reminder a week or two later, but the firm that sold  us the list wouldn&#8217;t sell us the corresponding email list, so we paid people to scrape the Web to get them manually (I know, we could&#8217;ve <a href="http://mturk.com">Turked it</a>). Then we found out we couldn&#8217;t import those addresses into an email list manager such as the excellent MailChimp or ConstantContact, since due to CAN-SPAM laws you may only import email addresses of people who have <em>directly opted in via your own website</em>.  (There&#8217;s now an area on our book&#8217;s website where you can express interest in the beta program that uses the book.)  So we sent one-on-one emails to just about all those people (600 or so in all).  We also personally reached out to colleagues in top-25 departments with whom we had good personal relationships.  It wasn&#8217;t a huge amount of work but it was time not spent on writing.</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/05/should-you-self-publish-should-anybody/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>About UC Berkeley CS169 &#8220;Software Engineering&#8221;</title>
		<link>http://www.armandofox.com/geek/2012/05/about-uc-berkeley-cs169-software-engineering/</link>
		<comments>http://www.armandofox.com/geek/2012/05/about-uc-berkeley-cs169-software-engineering/#comments</comments>
		<pubDate>Thu, 10 May 2012 18:20:06 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=521</guid>
		<description><![CDATA[Since I find myself periodically explaining our &#8220;reinvented&#8221; CS169 to my colleagues, and since our SaaS MOOC is based on it, I thought I&#8217;d write up this short description.  (The official link to the Berkeley course homepage is here, but it changes each semester depending who is teaching it.)
Background. CS 169 is Berkeley&#8217;s upper-division (seniors [...]]]></description>
			<content:encoded><![CDATA[<p>Since I find myself periodically explaining our &#8220;reinvented&#8221; CS169 to my colleagues, and since our <a href="http://saas-class.org">SaaS MOOC</a> is based on it, I thought I&#8217;d write up this short description.  (The official link to the Berkeley course homepage is <a href="http://www-inst.eecs.berkeley.edu/~cs169">here</a>, but it changes each semester depending who is teaching it.)</p>
<p><strong>Background. </strong>CS 169 is Berkeley&#8217;s upper-division (seniors and some juniors) software engineering course.  The way it&#8217;s taught varies widely depending on the instructor. This post describes how I teach it, often with the help of Dave Patterson and recently also Koushik Sen.  It&#8217;s not a required class in the major, but rather one of several classes that satisfies specific requirements such as a design project, technical communication, etc.</p>
<p><strong>Prerequisites. </strong>This is the only undergrad course at Berkeley that claims to address the topic of Software Engineering.  As such, it&#8217;s ambitious and fast-paced, with 5 1-week programming assignments, 5 quizzes, and a significant team project with an external customer, all in a single 14-week semester.  Students should be comfortable with at least 1 other language and with basic programming concepts such as object orientation, classes and inheritance, recursion, and higher-order functions.  Prior to this course, Berkeley CS students take <a href="http://www-inst.eecs.berkeley.edu/~cs61a" target="_blank">CS61A Structure &amp; Interpretation of Computer Programs</a>, which introduces the four major programming paradigms (until recently using Abelson &amp; Sussman&#8217;s awesome &#8220;<a href="http://mitpress.mit.edu/sicp/" target="_blank">wizard book</a>&#8220;,now using Python); <a href="http://www-inst.eecs.berkeley.edu/~cs61b">CS61B Data Structures</a> using Java; and (usually)<a href="http://www-inst.eecs.berkeley.edu/~cs61c" target="_blank"> CS61C Great Ideas in Computer Architecture</a> (aka Machine Structures), using C, MIPS assembly, and more Java (for a Hadoop assignment).</p>
<p><strong>History. </strong>While working on the <a href="http://www.armandofox.com/geek/past-projects/rad-lab-machine-learning-meets-datacenter-scale-computing/">RAD Lab project</a> (2006-2011), we needed SaaS apps to show off our machine-learning-based technology for automating various aspects of cloud operations.  Since no Berkeley course taught SaaS, we created an informal seminar course in 2007 to bootstrap a cohort of undergraduates to create showcase apps using Rails.  It was so popular that we offered it again, increasing the focus on TDD and good software practices, when our colleague Paul Hilfinger observed that we were well on the way to teaching the basics of Software Engineering in a format that students were enthusiastic about, so why not go all-out and teach CS 169 this way?  We agreed, and we did a &#8220;dry run&#8221; of the beefed-up course in Fall 2009, debugged it, and offered the &#8220;SaaS version&#8221; of CS 169 for the first time in Fall 2010.  Enrollments have been increasing by nearly 50% per offering.</p>
<table>
<tbody>
<tr>
<td>CS 98/198 Spring &#8216;07</td>
<td>25</td>
</tr>
<tr>
<td>CS 194 Fall &#8216;08</td>
<td>35</td>
</tr>
<tr>
<td>CS 194 Fall &#8216;09</td>
<td>50</td>
</tr>
<tr>
<td>CS 169 Fall &#8216;10</td>
<td>75</td>
</tr>
<tr>
<td>CS 169 Spring &#8216;12</td>
<td>115</td>
</tr>
<tr>
<td>CS 169 Fall &#8216;12</td>
<td>180</td>
</tr>
</tbody>
</table>
<p><strong>Practices taught and course format. </strong>The course teaches software engineering techniques based on the Software Engineering Body of Knowledge (SWEBOK) using SaaS+Agile+cloud as the vehicle and Rails as the framework.  A partial list of what we cover includes test-driven development, behavior-driven/user-centric design, design patterns, legacy code and refactoring, deployment (including “SaaS Performance &amp; Security 101”), and working effectively as part of a small team (using version control with branches, estimating progress toward customer-driven goals, work planning, etc.)  Our recent <a href="http://cacm.acm.org/magazines/2012/5/148610-crossing-the-software-education-chasm/fulltext">CACM article</a> explains why we believe these choices bridge the gap between what academics believe should be covered in software engineering courses and what industry wants to see in graduates of those programs.  (Contrary to what one might expect, leading software companies do<em><strong> not</strong></em> want us to become trade schools teaching specific tools, languages or frameworks; they want skills that transcend these, including dealing with legacy code and working in a team serving a nontechnical customer.)  We chose Rails because it has the best testing and code-grooming tools and its developer community places high value on beautiful code and thorough testing.  There are two lectures and one small-section meeting (~30-40 students) per week, weekly programming assignments, bi-weekly short-answer quizzes, no &#8220;big&#8221; midterm or final exam, and a 6 to 8 week course project.  We are experimenting with pair programming as well.</p>
<p><strong>Course project. </strong>We work with on-campus organizations including <a href="http://theberkeleygroup.org">The Berkeley Group</a> to identify external customers—some nonprofits, some on-campus units, some others—whose needs could be addressed in part by a SaaS prototype.  &#8221;Two-pizza&#8221; teams of 4-6 students bid on the projects they&#8217;re most interested in and we match them up.  During each of four 2-week iterations, students meet with their customer, use lo-fi mockups and user stories to agree on goals, use BDD and TDD to develop new functionality and tests, and deploy to the public cloud on <a href="http://heroku.com">Heroku</a>.  Per-iteration design/progress reviews with course staff (TA&#8217;s) help identify problems and provide technical guidance where needed; we have found no substitute for this critical part of the software craftsmanship apprentice process.  (In Spring 2012, two full-time TA&#8217;s monitored 25 teams; we hope to improve this ratio in Fall 2012.)  Each team&#8217;s progress is publicly tracked and estimated (and visible to customer and course staff) using the free <a href="http://pivotaltracker.com">Pivotal Tracker</a> throughout, and grading is based heavily on (a) demonstrated responsiveness to customer feedback on deployed functionality, (b) demonstrated improvement in ability to estimate how much work will be completed by end of iteration, (c) sound use of agile processes as demonstrated by BDD scenarios (which <a href="http://cukes.info">Cucumber</a> turns into integration tests), good test coverage, and reasonable complexity and beauty metrics (cohesion, lack of code smells, etc.) on code, which is publicly accessible on <a href="http://github.com">GitHub</a> for review by course staff at any time.  At the end of the course, students present their work in a poster/demo session attended by course staff, the external customers, and invited guests such as industry practitioners and VCs.  Many students reported that their customers were so delighted that they were trying to hire the students to continue the work over the summer.  Two projects from Spring&#8217;12 were already deployed in production with real users by the time the poster was presented.</p>
<p>We&#8217;ve started gathering <a href="http://vimeo.com/channels/saasprojects">screencasts and customer interviews</a> highlighting representative projects; more are being added all the time.</p>
<p>(Coming soon: aggregate code statistics for Spring 2012 projects, including test coverage &amp; code cleanliness metrics)</p>
<p><strong>Scalable grading. </strong>Given the growth in popularity of the course and CS courses in general here, we had already been thinking of ways to scale the grading by repurposing testing and code grooming tools such as RSpec, Cucumber, Mechanize, reek, flog/flay, and Webdriver (Selenium) both to assess correctness of student code at a fine grain and give nontrivial feedback on code quality.  When we agreed to offer the first 5 weeks of the course as a <a href="http://saas-class.org">massive open online course</a> in Feb/Mar 2012, it forced the issue and made us sit down and write the autograders.  Of course, these are no substitute for actual interaction with an instructor; indeed, the autograders have freed up our teaching staff to focus on creating additional review material and holding design meetings.  (If you&#8217;re an instructor interested in participating in our <a href="http://2012.saasbook.info">in-classroom beta program</a>, we&#8217;ll even run the autograders for you.)</p>
<p><strong>Teaching assistant duties &amp; prereqs. </strong>(Thanks to head TA Richard Xia for this info.)  The course is approximately split into two halves, with homeworks and quizzes dominating the first half and the project dominating the second half. During the first half, each TA runs a discussion sections of ~30 students (1-2 hours/week + 2-4 hours to prep and review material), holds office hours (2 hours/week), monitors the online question forums on Piazza (4-6 hours), and miscellaneous tasks such as individual emails and handling regrade requests (4 hours).  In addition, for the first offering of the course the content creation included not only homeworks, quizzes, and section material, but the grading rubrics for the autograders for each type of evaluation.   For the second half of the course, we converted most of the discussion sections into project meetings with the students in which we met with each group for about 10 minutes each week, so less time was spent preparing homework/quiz material and the section-prep time was replaced by evaluating project checkpoints.  A few additional hours per week were spent managing the online course, but as we fine-tune the material and autograder logistics, we expect that the online course can be managed by a single 10-hour-per-week TA, leaving the CS169 TAs free for for direct interactions with the students, especially during the project.</p>
<p><strong><a href="http://beta.saasbook.info"><img class="alignright size-medium wp-image-546" title="kindle-internal-cover" src="http://www.armandofox.com/geek/wp-content/uploads/kindle-internal-cover-225x300.jpg" alt="" width="225" height="300" /></a></strong></p>
<p><strong>Book.</strong> Modern software touches many subsystems of different types, each of which has historically been the focus of some CS subspecialty.  For example, SaaS encompasses datacenter computing, databases, OO programming, network security and performance, and user-centric design, plus nontechnical topics such as how to work with nontechnical customers and deliver a user-centric design. While there are many great (and not-so-great) books and online resources on each of these topics, a reading list cobbled together from them is impractical, lacks a “through-narrative”, and is very hard to get students to take seriously.  We finally decided in early 2011 to create our own book that would introduce enough of each topic to function as a SaaS engineer and weave them together in a way that both made sense for a one-semester (or shorter) course. Our division of topics into largely-standalone subgroups allows instructors with less time or a less-sophisticated audience to select subsets of material appropriate for their needs.  We decided very early to <a href="http://www.armandofox.com/geek/2012/02/adventures-in-self-publishing-with-latex-and-ruby/">self-publish</a> to keep the price low (currently $10 ebook/$20 print book).  <em><a href="http://saasbook.info">Engineering Long-Lasting Software: An Agile Approach Using SaaS &amp; Cloud Computing</a></em> is now in its beta draft, and we expect the First Edition to be ready by Spring 2013.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/05/about-uc-berkeley-cs169-software-engineering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Needed: ebook authoring tools</title>
		<link>http://www.armandofox.com/geek/2012/04/needed-ebook-authoring-tools/</link>
		<comments>http://www.armandofox.com/geek/2012/04/needed-ebook-authoring-tools/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 21:50:14 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Books & E-books]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=506</guid>
		<description><![CDATA[I&#8217;ve been writing a self-published textbook that is sold in hardcopy, Kindle format, and an iOS app.  I firmly believe that ebooks are the future of textbooks, though unfortunately today&#8217;s e-textbooks are inferior versions of their print counterparts.  To that end, my co-author Dave Patterson and I took many steps to make the ebook version the preferred version of [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">I&#8217;ve been writing a self-published <a href="http://beta.saasbook.info">textbook</a> that is sold in hardcopy, Kindle format, and an iOS app.  I firmly believe that ebooks are the future of textbooks, though unfortunately today&#8217;s e-textbooks are inferior versions of their print counterparts.  To that end, my co-author Dave Patterson and I took many steps to make the ebook version the preferred version of our book—not by crippling the print version, but by exploiting ebook features that you can&#8217;t do in print.</div>
<div>Our original vision was to make the richest version an iOS/Android version, in which we could use extensive CSS and JavaScript to make the book experience interactive in ways that the Kindle ebook format doesn&#8217;t support.  We originally tried using PhoneGap for this work, but it wasn&#8217;t stable because apparently it wasn&#8217;t designed to deal with such large assets (hundreds of KB per HTML &#8220;page&#8221;, plus many MB of images, plus GB of embedded screencast videos).  When Apple released iBooks Author, we realized we&#8217;d have to switch to that, since doing a &#8220;native&#8221; Android or iOS app was beyond our resources.  We ended up with much of what we wanted—better navigation both within and across chapters, embedded screencasts, and even interactive &#8220;check your understanding&#8221; question widgets that don&#8217;t reveal the answer until you try to answer the question.  But it came at great cost and pain: as we describe below, iBooks Author doesn&#8217;t import any useful markup format, even though it generates ePub.</div>
<div>Our experience with doing our own layout and publishing for the print and Kindle editions suggests that the majority of self-publishers and ebook authors may well want to work with a publisher.  The self-publishing process even even for simple hardcopy books is not trivial, but a process that can produce multiple formats with radically different output requirements from a single set of source files is definitely not for the faint of heart.  I described ina n earlier post how we generally did it for our book, concluding that  LaTeX is the worst way to prepare an ebook, except for all the others.</div>
<div>So what do we need?  A better unified authoring environment is a must.  What would my ideal authoring environment support?</div>
<div>
<ul>
<li>Device-independent table specification: LaTeX&#8217;s table support is painful, but the real problem is that the aesthetics of table layout vary greatly per-platform.  A better platform-independent way of specifying table layout constraints is needed.</li>
<li>Tie-in to online resources:  we used Pastebin for code examples and Vimeo for screencasts to augment the content.  The RESTful APIs of these services allow high automation in cross-referencing the content—for example, since we agreed to put each code excerpt into its own file, I made a script that posts each code excerpt to Pastebin, notes the Pastebin URI, and modifies the book source (.tex files) in place to include the link.  I did the same with screencasts.  This could be automated in an authoring environment.</li>
<li>It seems likely most ebooks will use an XML-based format of some kind; exporting <em><strong>and importing</strong></em> such a format is essential.  Please, please, please don&#8217;t make me use a WYSIWYG editor.  When writing, I want to focus on the <em><strong>logical</strong></em> structure of the book and arrange the input the way it makes sense to me.  LaTeX is great for this. In fact, modulo table support, LaTeX isn&#8217;t a bad choice as a language, especially since it lets you use macros to define your own book elements, as we did with sidebars, chapter heads, sidebar graphics, pitfalls/fallacies, and soon.  (Though the way it interprets markup is highly user-unfriendly when an error occurs.)  It&#8217;d be great, of course, to have WYSIWYG <em>previewers</em> for the various output targets, and some people might even like a GUI front-end, but don&#8217;t make that the only way to edit!</li>
</ul>
</div>
<div id="_mcePaste">If you&#8217;re thinking of self-publishing, be aware that you&#8217;ll have to take care of a lot of &#8220;little&#8221; typographic things that the publisher usually does, including but not limited to: getting &#8220;straight quotes&#8221; and “smart quotes”&#8217; right; getting em-dashes and en-dashes rather than &#8217;&#8212;&#8217; and &#8216;&#8211;&#8217;; inserting © and ™ rather than typing &#8216;(C)&#8217; or &#8216;(tm)&#8217;; dealing with ligatures (TeX does this for you, but most word processors don&#8217;t).  But the biggest one is going to be the hardest for Word users: getting accustomed to automating everything using macros so that changes are easy to make.  If you are used to manually styling your text (changing font size, applying indentation, etc.) rather than rigorously using styles, you&#8217;re sunk before you start, and so is your publisher (well, they&#8217;re not sunk; they&#8217;ll just charge you a lot of money for doing a labor-intensive manual job).</div>
<div id="_mcePaste">Here&#8217;s a list of our original &#8220;blue sky&#8221; desiderata for a software engineering ebook, and how we did on each one.</div>
<div id="_mcePaste">
<ul>
<li>social networking for group annotations: not done, and we should wait to see how reader platforms&#8217; feature wars about this feature shake out.</li>
<li>Code should be &#8220;live&#8221; &#8212; clicking it has effect of (eg) starting the app and dropping into a debugger on this function.  This is hard to do in general, since no current ebook platforms have the programmability to also act as a developer sandbox.  But our code snippets are all linked to Pastebin, allowing 1-click copy and paste into a terminal window or editor if you&#8217;re reading the ebook on a computer, and can even be pasted into and run on an Amazon EC2 instance.</li>
<li>Markup for code examples should be obvious.  Both the PDF and ebook outputs treat code specially.  The ebook version links each excerpt to 1-click-copyable source code on Pastebin, which has nice  syntax highlighting.</li>
<li>Figures should be  animatable (short movies): we currently have no animated figures, but we do have several screencasts sprinkled throughout; they&#8217;re hosted on Vimeo and ebook links are live, and in the iBooks Edition the content is bundled so they&#8217;re just embedded directly in the book.</li>
<li>&#8220;Where am I&#8221; (Web-style nav indentation) along side column or bottom of page:  iBooks Author does a nice job of this; Kindle doesn&#8217;t, even though we create the .ncx file that lists the names and location numbers of all the interesting &#8220;navigation points&#8221; in the book.</li>
<li>Margin notes (sidebars) in print  book are popups/hidden until tapped in ebook: Kindle format doesn&#8217;t support this, at least not yet.</li>
<li>&#8220;Pinning&#8221; figures or popups so they don&#8217;t go away while you flip  text underneath: Not done yet, but on the drawing board</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/04/needed-ebook-authoring-tools/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ready&#8230;set&#8230;d&#8217;oh</title>
		<link>http://www.armandofox.com/geek/2012/02/ready-set-doh/</link>
		<comments>http://www.armandofox.com/geek/2012/02/ready-set-doh/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 22:10:42 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Books & E-books]]></category>
		<category><![CDATA[Teaching]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=457</guid>
		<description><![CDATA[The online version of our SaaS course officially starts this coming Monday, 20-Feb-2012, although we &#8220;soft launched&#8221; this week and are putting up some of the introductory videos now.
We&#8217;ve been busily debugging the homeworks, autograder and other technology at Berkeley, hoping it won&#8217;t melt down when lots more students take it.
But surprisingly, those aren&#8217;t the [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://saas-class.org">online version of our SaaS course</a> officially starts this coming Monday, 20-Feb-2012, although we &#8220;soft launched&#8221; this week and are putting up some of the introductory videos now.</p>
<p>We&#8217;ve been busily debugging the homeworks, autograder and other technology at Berkeley, hoping it won&#8217;t melt down when lots more students take it.</p>
<p>But surprisingly, those aren&#8217;t the things that made my heart skip a few beats the last couple of weeks.</p>
<p>It turns out that when you have 60,000 people enrolled, if 0.1% of them experience a problem, you&#8217;ll immediately get 60 identical emails.  And these people are resourceful: they simply Googled the names of the instructors and sent email to our personal email accounts at Berkeley.  Here are some problems those people had in the last couple of weeks.</p>
<h2>Fun event #1: Kindle ebook disappears from Amazon.com</h2>
<p>About 2 weeks ago, the Kindle ebook mysteriously disappeared from the Kindle store, showing &#8220;currently unavailable&#8221; if you visited <a href="http://www.amazon.com/dp/B006WU5G4C">its page</a>.</p>
<ul>
<li>We received no email warning before this happened.</li>
<li>No further explanation was provided on the Author/Publisher dashboard as to why it occurred.  In fact, according to the dashboard, our ebook was &#8220;live&#8221; and available for sale.</li>
<li>There was no way to appeal except by sending email via the Amazon KDP &#8220;author support&#8221; form; we had done this in the past and it takes 3-4 days to get a response to such requests.  No phone number is provided for author support.  (In contrast, <a href="http://createspace.com">CreateSpace</a>, the print-on-demand company handling the print version that ironically is owned by Amazon now, has excellent telephone support.)</li>
<li>Desperate, we used our academic connections to the highest levels of Amazon to get this looked at.</li>
<li>We learned that there was a formatting issue with our ebook, and apparently when enough customers complain about that, the ebook is pulled.  Amazon&#8217;s system was supposed to have sent us an email notification of the problem to give us a chance to fix it, but due to a bug on their end, that email never got sent.</li>
<li>Once the escalation occurred, everything was resolved within a day; but if we hadn&#8217;t had higher-up contacts at Amazon, we would have been screwed.</li>
</ul>
<h2>Fun event #2: saasbook.info mysteriously shut down for &#8220;terms of service violations&#8221;</h2>
<p>Last week the <a href="http://saasbook.info">book&#8217;s website</a>, hosted on Google Sites, was mysteriously shut off by Google &#8220;for terms of service violations&#8221;.  This was puzzling and panicking, since we had just announced to 57,000 students that they could start perusing the book, and this site was where they were directed to go to get it.  Plus, having the students see &#8220;This site has been taken down for TOS violations&#8221; made it sound like we were fronting pornography or running a link redirector or something equally questionable.</p>
<p>The scenario was eerily similar to the Amazon problem:</p>
<ul>
<li>We received no email warning before this happened.</li>
<li>No further explanation was provided on our Google Sites dashboard as to why it occurred.</li>
<li>There was no way to appeal (except to click a single button that said &#8220;Appeal&#8221; with no other explanation).</li>
<li>Desperate, we used our academic connections to the highest levels of Google to get this looked at.</li>
<li>We learned that our site had been mistakenly manually misclassified as spam—which was puzzling for any number of reasons).</li>
<li>Once the escalation occurred, everything was resolved within a day; but if we hadn&#8217;t had higher-up contacts at Google, we would have been screwed.</li>
</ul>
<h2>Fun event #3: courseware VM can&#8217;t be downloaded or uploaded</h2>
<p>We had numerous complaints from people unable to download the courseware VM via our <a href="http://saasbook.appspot.com">AppEngine front end</a>, and our TA&#8217;s were having trouble uploading the image file. Apparently, there were two problems.  One is that Google&#8217;s blobstore sometimes sporadically throws an error that doesn&#8217;t occur till the end of the upload, i.e. after spending 10 minutes uploading a 1.7GB file.  The error occurs inside one of the wrappers for the BlobStore API, and doesn&#8217;t get logged or rescued, so even though we have tech support at Google for this, there&#8217;s no way to show them what error occurred.  We ultimately transmitted the VM image file to a colleague at Google who was able to upload it via Google&#8217;s intranet.  If we hadn&#8217;t had this higher-up contact at Google, we would have been screwed.  (See a pattern yet?)</p>
<p>The other problem seems to occur for people whose Internet service is anemic.  The downloads get throttled and take so long that their ISP&#8217;s time out their TCP connection. We&#8217;re going to recommend to these folks that they use a download manager; one of the users discovered by accident that deeplinking to the AppEngine app works just fine.</p>
<p>We&#8217;re also going to torrent the file, and we&#8217;ve  <a href="http://saasbook.info/bookware-vm-instructions">provided an alternative</a> to downloading a VM image—we created an Amazon Machine Image that can be used on EC2.  (A shout out to <a href="http://www.google.com/url?sa=t&amp;rct=j&amp;q=yarko%20tymciurak&amp;source=web&amp;cd=2&amp;ved=0CCoQFjAB&amp;url=https%3A%2F%2Fplus.google.com%2F112974129603800923888&amp;ei=Eiw8T6zeEamgiQKukKihAQ&amp;usg=AFQjCNHlJ1AQIVnOnDN6ZewEFibMS9n1uQ">Yarko Tymciurak</a> in the Chicago area who got us started on this!)  However, for students who don&#8217;t want to pay for EC2 usage, the <a href="http://aws.amazon.com/free">free &#8220;micro&#8221; tier</a> is just barely adequate to do this work—the CPU pins right away when running tests or builds.</p>
<h2>Fun event #4: Kindle ebook updating doesn&#8217;t quite work the way we were told</h2>
<p>An early and influential factor in our decision to focus heavily on an ebook was that we were assured that if we made significant changes to the ebook, we&#8217;d be able to quickly push them out to students by notifying Kindle author support, which would then notify purchasers of the ebook that they had the option of re-downloading a newer version.</p>
<p>This is partly true.  We tried this process last week, since we did in fact fix a bunch of typos and formatting issues reported during the first 4 weeks of the Berkeley course.  It took 3 days for us to get a response from Kindle author support.  The response was that we should submit detailed information about what changes were made, and &#8220;within 2 weeks&#8221; they&#8217;d make a decision of how and whether to handle our request to push the update.  So much for instant update.  They seemed to imply, though, that there was a way they could enable students to request a re-download if we notified students that one was available, so we&#8217;re going to try to go that route.  I hope this works, since we expect at least one more rev of the ebook by the end of the online course and then another before the planned summer offering of the online course.</p>
<h2>Fun event #5: our Kindle book price is apparently just a suggested price</h2>
<p>We had various ebook purchasers complain that although our own Web site says the ebook costs US$9.99, Amazon was displaying a higher price for them, as much as 27% higher in some cases.</p>
<p>It turns out that Amazon can, at their discretion, charge more for your ebook in certain territories &#8220;where their operating costs are higher&#8221;.  So it was with chagrin that we read these emails, given that we had agonized over the price a fair amount and ultimately decided to keep it below $10.</p>
<p>It also turns out that Amazon can, at their discretion, charge <em>less</em> for your ebook if they&#8217;re doing it to price-match a competitor or for other promotional purposes.</p>
<h2>But things are rolling along anyway</h2>
<p>But the news isn&#8217;t all bad.  Kindle ebooks are outselling print books by more than 4 to 1.  We&#8217;ve even gotten complaints that people in Indonesia can&#8217;t buy the ebook (which is unfortunate, but it&#8217;s humbling that we have followers that far away).</p>
<p>We can&#8217;t tell how many people are buying both the print book and ebook, since we haven&#8217;t been able to work out bundling. (Though we are working on it.)  We also can&#8217;t tell how many additional people, if any, have downloaded the free Kindle sample (which roughly corresponds to the first chapter of the book, therefore the first week of class) and may be considering buying the full version later.</p>
<p>We have a very  nice iBooks version about to come out with interactive self-assessment questions and screencasts built right in, and we will probably do a Nook/ePub version for people with non-Kindle ebook devices (though that&#8217;s a lower priority).</p>
<p>Overall, it&#8217;s been a major learning experience so far trying to reach this many people.  Next week comes the real test&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2012/02/ready-set-doh/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Telling a story, singing, &amp; laughing</title>
		<link>http://www.armandofox.com/geek/2011/08/telling-a-story-singing-laughing/</link>
		<comments>http://www.armandofox.com/geek/2011/08/telling-a-story-singing-laughing/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 04:46:03 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=391</guid>
		<description><![CDATA[On my way home tonight I happened to stop at the library (it&#8217;s usually closed by the time I get home) and I plucked Yellow Brick Road off of the &#8220;recent arrivals&#8221; of the nonfiction-DVDs section.  It’s a documentary about a New York-area arts program for mentally-challenged and learning-disabled adults (Down’s, fetal alcohol syndrome, epilepsy, [...]]]></description>
			<content:encoded><![CDATA[<p>On my way home tonight I happened to stop at the <a href="http://sfpl.org/index.php?pg=0100000701">library</a> (it&#8217;s usually closed by the time I get home) and I plucked <em><a href="http://www.imdb.com/title/tt0482641/">Yellow Brick Road</a></em> off of the &#8220;recent arrivals&#8221; of the nonfiction-DVDs section.  It’s a documentary about a New York-area arts program for mentally-challenged and learning-disabled adults (Down’s, fetal alcohol syndrome, epilepsy, severe CP, autism&#8230;) that decides to stage a performance of <em>The Wizard of Oz</em>.</p>
<p>Besides being one of the most poignant documentaries I’ve seen in some time, it drove home to me how ingrained is our instinct as a species to tell a story.  Here’s a group of people who, in general, have serious trouble driving a car, playing an instrument, writing poetry, doing athletics&#8230; yet they relish the opportunity to tell a story, and they rise to the challenge.</p>
<p>Tonia pointed out that two other behaviors we saw in the rehearsals—singing and laughing—also cut across levels of mental ability.</p>
<p>So there it is.  Telling a story, singing, and laughing—the universal constants.  I knew there was a reason I did this theater thing.</p>
<p>And if you harbor even the least bit of idealism about how theater can affect people, watching <em>Yellow Brick Road</em> will be an hour well spent.</p>
<p><em>“&#8230; and your little dog, too!”</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2011/08/telling-a-story-singing-laughing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Things I still find charming about the original &#8220;Star Trek&#8221;T</title>
		<link>http://www.armandofox.com/geek/2010/01/things-i-still-find-charming-about-the-original-star-trekt/</link>
		<comments>http://www.armandofox.com/geek/2010/01/things-i-still-find-charming-about-the-original-star-trekt/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 06:57:04 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://www.armandofox.com/geek/?p=270</guid>
		<description><![CDATA[In a mood of indulgence doubtless fueled by pizza and wine and small-batch bourbon, I used AppleTV&#8217;s unimpeachable user interface tonight to download and watch a couple of episodes of the original Star Trek.  (Sure, it&#8217;s $1.99 per episode for something that is still broadcast on my cheap analog cable, but they&#8217;re delivered in digitally-remastered [...]]]></description>
			<content:encoded><![CDATA[<p>In a mood of indulgence doubtless fueled by pizza and wine and small-batch bourbon, I used AppleTV&#8217;s unimpeachable user interface tonight to download and watch a couple of episodes of the original Star Trek.  (Sure, it&#8217;s $1.99 per episode for something that is still broadcast on my cheap analog cable, but they&#8217;re delivered in digitally-remastered form, the sound is awesome, and I can start watching in about a minute—all unlike <a href="http://www.armandofox.com/geek/2009/06/tivos-video-on-demand-ui-was-designed-by-vandals-in-the-80s/">TiVo/Amazon wretched, indefensibly bad video-on-demand</a> from TiVo DVR2&#8217;s).</p>
<p>The old Star Trek episodes are wonderful morality tales. And hey, it&#8217;s not their fault that special effects in the late 60&#8217;s weren&#8217;t very advanced, and the effects budget per episode was apparently about $50.</p>
<p>I smile at the cheesy effects and appreciate the storyline, but I can&#8217;t help but enumerate a few effects things that particularly tickle me as a computer scientist.  I&#8217;m blogging these so that someone blogging in 2020 can smile at my comments, and all while giving the original Star Trek the largest possible credit for couching great stories in something that the 60&#8217;s thought the future would look like (remember, the final Star Trek episodes were taped a full 2 years before the moon landing):</p>
<ol>
<li>The analog dials on the ship&#8217;s computers</li>
<li>Computers with AI-complete speech recognition, but synthesized voices that sound terrible</li>
<li>Computers that actually emit smoke when they fail</li>
<li>Audio communications that fail as analog radio would (analog static and high-Q artifacts, not digital dropouts)</li>
<li>Video that fails by getting snow or loss of analog sync (I <em>still</em> can&#8217;t believe people used to do all this with analog signals.  That is some <em>studly</em> engineering.)</li>
<li>&#8220;Video&#8221; displays that are clearly posters</li>
<li>Mechanical switches for controlling solid-state devices, including the transporter and the &#8220;computer&#8221;</li>
<li>Printers that make mechanical noise when they print (like dot matrix and band printers)</li>
<li>The presence of physical books <a href="http://www.armandofox.com/geek/2008/09/two-weeks-with-kindlesurvey-says-thumbs-up/">rather than ebooks</a>at various official proceedings</li>
<li>Avionics that fail by bursting into flame, yet are apparently repairable at the board or component level</li>
</ol>
<p>Note that a great many of these effects were actually accurate when viewed from the standpoint of the first computers in spaceflight—see <em><a href="http://history.nasa.gov/computers/Compspace.html">Computers In Spaceflight: The NASA Experience</a></em> for a most excellent overview and retrospective.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2010/01/things-i-still-find-charming-about-the-original-star-trekt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why I still don&#8217;t have an eBook reader</title>
		<link>http://www.armandofox.com/geek/2008/07/why-i-still-dont-have-an-ebook-reader/</link>
		<comments>http://www.armandofox.com/geek/2008/07/why-i-still-dont-have-an-ebook-reader/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 05:30:24 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://radlab.cs.berkeley.edu/people/fox/wp/2008/07/05/why-i-still-dont-have-an-ebook-reader/</guid>
		<description><![CDATA[My typical packing list for a beach vacation: bathing suit, t-shirt, shades, and 30 pounds of books, plus geek manuscripts in PDF format. You&#8217;d think I&#8217;d be the perfect eBook candidate, being an early adopter and all. But they all suck one way or another. Never mind usability; never mind the ~$400 price tag. The [...]]]></description>
			<content:encoded><![CDATA[<p>My typical packing list for a beach vacation: bathing suit, t-shirt, shades, and 30 pounds of books, plus geek manuscripts in PDF format. You&#8217;d think I&#8217;d be the perfect eBook candidate, being an early adopter and all. But they all suck one way or another. Never mind usability; never mind the ~$400 price tag. The dealbreaker is that the content situation is laughable, to wit:</p>
<p>Amazon&#8217;s <a href="http://www.amazon.com/kindle">Kindle</a> has a pretty good selection, and they&#8217;re at least priced intelligently (~50% of print edition), but you can&#8217;t view PDF documents on it. Yes, I know about the &#8220;converter&#8221;. It doesn&#8217;t process tables or figures, making it useless for any technical PDF&#8217;s, which for me is most PDF&#8217;s. The  <a href="http://bookeen.com">CyBook</a> uses the Mobipocket DRM format, which is sold by dozens of half-assed retailers whose selection and reputation aren&#8217;t even a fraction of Amazon&#8217;s and whose pricing is stupid—the ebook costs the same as the print edition, and I can&#8217;t even donate it to my library when I&#8217;m done with it. But the CyBook does render PDF, so I could at least use it for geek books, technical articles, <a href="http://www.gutenberg.org">Gutenberg</a> downloads, etc.</p>
<p>Some libraries have started <a href="http://wiki.mobileread.com/wiki/EBook_Lending_Libraries">ebook lending</a>.  But the NY Public Library, whose print collection exceeds 50 million volumes, has exactly 945 Fiction titles available in ebook form, most available as only one or the other of Mobipocket or Adobe eBook. Given that Adobe manages to crap on the user experience of every product they put out, and that Adobe Reader still holds my grand prize for crashing Firefox &amp; Safari, I don&#8217;t even want to go near Adobe&#8217;s ebook format, which they popularized in part by distributing DRM&#8217;d versions of Gutenberg etexts—evil.</p>
<p>The book industry seems to be doing its very best to imitate the visionary RIAA and MPAA. I imagine at some point the book industry&#8217;s proctologist will call them to tell them that he&#8217;s found their head. Until then I&#8217;ll keep lugging dead trees around.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2008/07/why-i-still-dont-have-an-ebook-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe software shamefully, frustratingly incompetent</title>
		<link>http://www.armandofox.com/geek/2008/07/adobe-software-shamefully-frustratingly-incompetent/</link>
		<comments>http://www.armandofox.com/geek/2008/07/adobe-software-shamefully-frustratingly-incompetent/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 08:09:29 +0000</pubDate>
		<dc:creator>fox</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://radlab.cs.berkeley.edu/people/fox/wp/2008/07/02/adobe-software-shamefully-frustratingly-incompetent/</guid>
		<description><![CDATA[I&#8217;ve long known that Adobe software is among the most unstable and sports the ugliest, least intuitive, inconsistent UI&#8217;s of any Mac software I&#8217;ve ever had. I just went through the experience of dowloading the &#8220;free trial&#8221; (30 days) of Adobe Flash CS3 Pro, just because I want to develop some apps for my new [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve long known that Adobe software is among the most unstable and sports the ugliest, least intuitive, inconsistent UI&#8217;s of any Mac software I&#8217;ve ever had. I just went through the experience of dowloading the &#8220;free trial&#8221; (30 days) of Adobe Flash CS3 Pro, just because I want to develop some apps for my new <a href="http://www.chumby.com">Chumby</a>.</p>
<p>Download the free trial version: 750 MB.</p>
<p>The downloaded disk image contained a non-folder icon called &#8220;Adobe CS3&#8243;.  So I did what Mac users always do—I tried dragging it to my Applications folder. The Finder popped up a dialog that eventually stabilized at &#8220;Preparing to copy 109,775 items.&#8221;</p>
<p>Well, that&#8217;s going to take awhile. I stopped the copy and poked around and finally realized the non-folder icon <em>is actually a folder—</em>nice job, Adobe—inside of which I  found a Setup program.  Aha, I thought, the Setup installer should be faster than actually trying to copy 109,775 separate files.</p>
<p><em>Wrong. The installer took</em> <strong>45 minutes</strong> on a 1.5 GHz PowerPC G4 Mac.</p>
<p>Then I had to download a 58 MB software update to get the Flash Lite 3 functionality recommended for Chumby developers. <em>Not including download time, </em>the updater took  <strong>1 hour and 45 minutes to apply a 58MB &#8220;patch&#8221;.</strong></p>
<p>During this time, you&#8217;re not allowed to open any Web browsers, as the updater insists on updating various  browser plug-ins. (But it doesn&#8217;t tell you when during the 1 hour and 45 minutes this occurs, so you have to forgo Web browsing the whole time.)</p>
<p>This &#8220;free trial&#8221; download experience does not encourage me to shell out the <strong><em>$995 </em></strong>Adobe wants for the product. (Hell, at my consulting rate, it&#8217;s already cost 2/3 of that to install the damn product.)</p>
<p>Maybe Adobe is used to Windows users accepting this level of user insult. Their PDF reader plugins for Web browsers are spectacularly unstable (Mac Preview is far superior), and even after CS3 was installed, it takes 30 seconds just to start up.  Their Flash plugin for Safari and Firefox on Mac seems to be the most frequent cause of those programs crashing (according to the stack trace, anyway, the crash occurs inside the Flash plugin).</p>
<p>So it&#8217;s finally happened: I&#8217;ve found other desktop software that makes Microsoft Office a dream by comparison.  How sad from the company that basically invented PC imaging and multimedia. If I can find an open-source toolchain for Chumby development, I&#8217;ll use it even if I can get an Adobe academic license for free. This product deserves to LOSE.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armandofox.com/geek/2008/07/adobe-software-shamefully-frustratingly-incompetent/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
