<?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/"
	>

<channel>
	<title>Dan Weinreb's blog</title>
	<atom:link href="http://danweinreb.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://danweinreb.org/blog</link>
	<description>Software and Innovation</description>
	<pubDate>Sat, 03 Jan 2009 21:14:36 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>AgentSheets: Learning Programming, for middle-schoolers</title>
		<link>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers</link>
		<comments>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers#comments</comments>
		<pubDate>Sat, 03 Jan 2009 15:36:14 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Education]]></category>

		<category><![CDATA[Free Software]]></category>

		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=81</guid>
		<description><![CDATA[The Scalable Game Design project is aimed at getting computer science into middle schools, to get kids interested in information technology through their natural interest in games.  A principal software tool of the project is AgentSheets, which lets you make your own simulation games without learning the syntax of a programming language.
If you know [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Main_Page">Scalable Game Design</a> project is aimed at getting computer science into middle schools, to get kids interested in information technology through their natural interest in games.  A principal software tool of the project is AgentSheets, which lets you make your own simulation games without learning the syntax of a programming language.</p>
<p>If you know a kid in middle school who wants to make his or her own game, or just learn about programming, I recommend that you take a look at this!</p>
<p>The general concept is a bit like some systems you may have seen before, such as the visual programming languages provided with Lego Mindstorms.  However, this requires no special hardware, and the specifics look a lot more interesting and flexible to me than anything I&#8217;ve seen along these lines.</p>
<p>An example of what you can do is the classic arcade game <a href="http://en.wikipedia.org/wiki/Frogger">Frogger</a> (developed by Konami for Sega/Gremlin in 1981).  <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Frogger_Design">This tutorial</a> shows how to do it in AgentSheets.</p>
<p>There is a <a href="http://drop.io/dlweinreb/asset/the-3rd-hour">three-minute movie</a> showing kids using AgentSheets. It gives a good sense of the kind of game and the level of complexity that AgentSheets is suitable for (although it doesn&#8217;t demonstrate programming itself).</p>
<p>You can also read <a href="http://scalablegamedesign.cs.colorado.edu/wiki/Publications">research papers about the project</a>.</p>
<p>To try it out, you can <a href="http://www.agentsheets.com/products/trial/index.html">download a free trial version</a> with a ten-day license, for MacOS X or Windows.  It costs $120 in single units, less for educators or if you get ten licenses.</p>
<p>As it happens, it&#8217;s written in Common Lisp, which is how I came to hear about it.  But that doesn&#8217;t matter as far as using it is concerned.</p>
<p>The principal investigator is <a href="http://www.cs.colorado.edu/~ralex/">Prof. Alexander Repenning</a> of the University of Colorado.  He has worked at <a href="http://www.parc.xerox.com/">Xerox PARC</a> and <a href="http://www.hp.com">HP</a>, and he has collaborated with researchers at the <a href="http://el.www.media.mit.edu/groups/el/">Epistemology and Learning Group</a> of the MIT Media Lab, LOGO, and <a href="http://www.sri.com">SRI</a> to explore <a href="http://www.cs.colorado.edu/~l3d/systems/legosheets/">programmable LOGO toys</a>.  He has been involved in <a href="http://www.cs.colorado.edu/~ralex/Portfolio.pdf">many other projects</a> as well.</p>
<p>Thanks for telling me about this, Alex!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/agentsheets-learning-programming-for-middle-schoolers/feed</wfw:commentRss>
		</item>
		<item>
		<title>Jeannine Mosely&#8217;s Business-Card Origami Model of Union Station</title>
		<link>http://danweinreb.org/blog/jeannine</link>
		<comments>http://danweinreb.org/blog/jeannine#comments</comments>
		<pubDate>Fri, 02 Jan 2009 00:31:33 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Friends]]></category>

		<category><![CDATA[Origami]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=77</guid>
		<description><![CDATA[Jeannine Mosely has created the world&#8217;s largest business-card origami structure ever: a model of Worcester&#8217;s Union Station.  It has even more cards in it than her order-3 Menger&#8217;s Sponge.
The basic work of making modules was done by many kids in many public school classes in Worcester, who had a lot of fun doing it, [...]]]></description>
			<content:encoded><![CDATA[<p>Jeannine Mosely has created the world&#8217;s largest business-card origami structure ever: a model of Worcester&#8217;s Union Station.  It has even more cards in it than her order-3 Menger&#8217;s Sponge.</p>
<p>The basic work of making modules was done by many kids in many public school classes in Worcester, who had a lot of fun doing it, under Jeannine&#8217;s supervision.  Many people helped her with the final assembly.</p>
<p>There&#8217;s a very nice <a href="http://www.youcubed.org">web site</a> about the project.  My family braved the wind and snow yesterday to drive out to the Worcester Art Museum and see it.  Up to the last day, Jeannine was worried that it wouldn&#8217;t be finished in time for the First Night (New Year&#8217;s Eve) celebration, but she got it all done.  (Technically, there&#8217;s a bit more to do but it certainly looks finished.)  It was a huge amount of work!</p>
<p><a href="http://picasaweb.google.com/dlweinreb1/JeannineSOrigamiUnionStation#">Here are the photos I took.</a></p>
<p>To help the builders remember how to do all the steps, Jeannine and I made two videos: <a href="http://www.youtube.com/watch?v=RxMgiqIhiz0">Part 1</a> and <a href="http://www.youtube.com/watch?v=eRCOt4J2tew">Part 2</a>.</p>
<p>Congratulations, Jenny!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/jeannine/feed</wfw:commentRss>
		</item>
		<item>
		<title>Software Technologies that I MUST Learn</title>
		<link>http://danweinreb.org/blog/software-technologies-that-i-must-learn</link>
		<comments>http://danweinreb.org/blog/software-technologies-that-i-must-learn#comments</comments>
		<pubDate>Mon, 13 Oct 2008 15:22:46 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Software Engineering]]></category>

		<category><![CDATA[Useful Stuff]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=69</guid>
		<description><![CDATA[Helpful friends and acquaintences often let me know about exciting new software technologies that I absolutely must know about.  I like learning about exciting new technologies.  Unfortunately, the software world is generating them faster than I can learn them.  Here&#8217;s my list of things I really must learn.
Programming languges
Dylan: A Lisp-family language developed by my [...]]]></description>
			<content:encoded><![CDATA[<p>Helpful friends and acquaintences often let me know about exciting new software technologies that I absolutely must know about.  I like learning about exciting new technologies.  Unfortunately, the software world is generating them faster than I can learn them.  Here&#8217;s my list of things I really must learn.</p>
<p><strong>Programming languges</strong></p>
<p>Dylan: A Lisp-family language developed by my friends.</p>
<p>ML: How can I be a &#8220;Lisp expert&#8221; and not know ML??</p>
<p>Haskell: Functional programming.  Alan Bawden says this is fundamentally different and I must know it.</p>
<p>Ruby: Up-and-coming popular language.</p>
<p>Subtext: Programming in trees instead of text.  (By Jonathan Edwards, MIT CSAIL.)</p>
<p>Hygenic Macros: A languages feature for doing macros (in the Lisp sense) cleanly.</p>
<p>Groovy: A dynamic language for the Java Virtual Machine.</p>
<p>Ron Garret&#8217;s paper on a module system for Lisp.</p>
<p>F#: Microsoft&#8217;s new function programming language.</p>
<p>LSharp:</p>
<p>Rlisp: A Lisp embedded in Ruby.</p>
<p><strong>Programming tools and libraries</strong></p>
<p>OProfile: The profiling tool for the Lisp implementation that I use.</p>
<p>Krugle:</p>
<p>LispBuilder: Access to SDL from Lisp for game development.</p>
<p>clbuild: An alternative to Lisp&#8217;s asdf-install: helps with download, compilation, and invocation of Lisp apps.</p>
<p><strong><br />
Networking</strong></p>
<p>TRILL: New network protocol designed to solve the problems of the spanning tree.</p>
<p><strong><br />
Databases and Caches</strong></p>
<p>Freebase: &#8220;Open, shared database of the world&#8217;s knowledge.&#8221;  From Metaweb, my old friend Danny Hillis.</p>
<p>CouchDB: Highly scalable document-oriented free DBMS written in Erlang.</p>
<p>Chubby: Google&#8217;s distributed lock system.</p>
<p>Google Sites: Web page design tool</p>
<p>Kompozer: Web page design tool</p>
<p>GORM:  Grails&#8217;s object-relatinal mapping tool, using Hibernate 3.</p>
<p>Terracotta: Clustering/caching tool for Java, making many JVM&#8217;s look like one.</p>
<p>Drizzle: Stripped-down MySQL, useful for caching too.</p>
<p>Whirlycache: A very fast cache</p>
<p>cl-prevalance:</p>
<p>Mongo: A grid-aware object-oriented DBMS from 10gen</p>
<p><strong><br />
Cloud computing</strong></p>
<p>RightSize</p>
<p>Elastra</p>
<p>10gen</p>
<p><strong>Web tools</strong></p>
<p>Rails: (Ruby on Rails) Very popular, highly recommended by many people.</p>
<p>Grails: Rails for Groovy.  Built on GORM and Spring.</p>
<p>Google AppEngine:</p>
<p><strong><br />
Other</strong></p>
<p>VMWare: Can I run Linux on my Windows box?</p>
<p>Software repositories: CPAN, http://planet.plt-scheme.org/, etc.</p>
<p>Jango: A Pandora alternative</p>
<p><em>I&#8217;ll get to them, really, I promise&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/software-technologies-that-i-must-learn/feed</wfw:commentRss>
		</item>
		<item>
		<title>MassTLC Entrepreneur UnConference</title>
		<link>http://danweinreb.org/blog/masstlc-entrepreneur-unconference</link>
		<comments>http://danweinreb.org/blog/masstlc-entrepreneur-unconference#comments</comments>
		<pubDate>Sat, 04 Oct 2008 20:15:00 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Conference]]></category>

		<category><![CDATA[MassTLC]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=63</guid>
		<description><![CDATA[So many people have written about the MassTLC Innovation Unconference that I&#8217;ll just record my personal impressions.  My own blog comments are in [square brackets].
I was one of the so-called &#8220;experts&#8221;.  I originally attended in my Common Angels role.  But then Jeremy Wertheimer, CEO of ITA Software, Inc. and my boss&#8217;s boss, also attended as [...]]]></description>
			<content:encoded><![CDATA[<p>So many people have written about the <a href="http://www.masstlc.org/eve/innovation.aspx" target="_blank">MassTLC Innovation Unconference</a> that I&#8217;ll just record my personal impressions.  My own blog comments are in [square brackets].</p>
<p>I was one of the so-called &#8220;experts&#8221;.  I originally attended in my <a href="www.commonangels.com" target="_blank">Common Angels</a> role.  But then <a href="http://www.itasoftware.com/about_us/management.html?catid=49#120" target="_blank">Jeremy Wertheimer</a>, CEO of <a href="http://www.itasoftware.com" target="_blank">ITA Software, Inc.</a> and my boss&#8217;s boss, also attended as an expert.  So I introduced myself in both roles.  James Geschwiler, executive director of Common Angels, was one of the main organizers of the Unconference, and I counted eight members of Common Angels in attendance, although all but James and I came under some other affiliation.</p>
<p>For more info, see the coverage in <a href="http://www.innoeco.com/2008/10/my-notes-from-todays-innovation.html#links" target="_blank">Scott Kirsner&#8217;s Innovation Economy</a>, <a href="http://www.masshightech.com/stories/2008/09/29/daily56-MassTLC-bridges-generations-with-crowded-UnConference.html" target="_blank">Mass High Tech</a>, and <a href="http://www.boston.com/business/technology/articles/2008/10/03/high_tech_wrestles_with_credit_crisis/" target="_blank">The Boston Globe</a>.  (There&#8217;s a mistake in the Globe article:  Jeremy, did not say &#8220;It&#8217;s greed on the way up, and it&#8217;s greed on the way down&#8221;; the second half was &#8220;it&#8217;s fear on the way down&#8221;!</p>
<p>Whenever I have the chance to talk to a college freshman, I advise them to find out which professors are the best lecturers, and take whatever courses they are teaching, rather than browsing the catalog and choosing based on topic.  I followed my own advice and picked sessions based on the speaker.</p>
<p>Bootstrapping, by <a href="http://www.polarisventures.com/WhoWeAre/TeamDetail.asp?ContactID={63AFEF6B-E12B-4497-A603-C77DFB4B7D55} " target="_blank">Sim Simeonov</a> of Polaris Ventures, and Joe Caruso of Bantam Group and Common Angels, was about how to start a business without venture or angel capital, and then if or when to seek out such capital. Sim helps start and work with new companies at Polaris; Joe is on the board of Common Angels.  They both know a tremendous amount about startups.  Sim and Joe mainly let the audience tell their stories and give their opinions, and then they added comments, often of the form &#8220;but on the other hand&#8221;, to clarify tradeoffs.</p>
<p>Here are some of the most salient points.  First learn what the customer wants, and then think up the product.  Having too much capital can lead to over-hiring and over-spending; if you have the money, you&#8217;ll spend it, whether that&#8217;s optimal or not.  You should have a very good idea of how you&#8217;re going to spend the money!</p>
<p>When you have investors, you&#8217;ve taken on business partners; some people feel that they are working for the investors, when they really wanted to be their own bosses.  The reply was that investors do not want to run companies.  Often a CEO is so busy and nose-to-the-grindstone that she can&#8217;t see the big picture and think about long-term strategy; a good board of directors can help.</p>
<p>It&#8217;s very important to know yourself and understand your personal goals.  Some people don&#8217;t want to run a fast-growing business of the kind the attracts venture and angel capital.  Do you want 2% of $1B, or 20% of $1M?  Would you be satisfied with enough money to be financially independent, or do you want more?  Or would you really rather be doing engineering?  There are 10M small businesses in the USA; every year, 3K get VC funding.  For many people, simply getting a good income is just fine.</p>
<p>Everything has an opportunity cost, and you must take that into account as part of your tradeoffs.  Start with your exit plan in mind (how you&#8217;re going to cash out, e.g. an acquisition or an IPO); these days, $60-70M is an average exit.  But typical venture capital firms can&#8217;t deal with that, because it&#8217;s too small for them to devoted attention to, as they have very big pools of money to invest.  If you&#8217;re going to deal with venture or angel capitalists, understand their business model.</p>
<p>One way to bootstrap is by sales to customers; in fact that&#8217;s probably the best way.  You can&#8217;t do that with a high-capital business such as starting a car company.  If you have a track record, you can try raising money from former business associates, as my friend <a href="www.dailygrommet.com" target="_blank">Jules Pieri</a> is doing.  Finally, there&#8217;s the traditional way: &#8220;friends and family&#8221;.</p>
<p>You can start small, conserve money fanatically (except salaries for non-founders), and not accept capital.  That works best if there is no competition and you can take your time.</p>
<p>Sometimes the time to accept capital is when your business is running, but you can see that now your market is growing and there&#8217;s an opportunity.  But you need to hire more engineers, marketing and sales people, and so on.  [This is what we call the "go to market" stage, and is typically where Common Angels would invest.]</p>
<p>One attendee recommended reading <a href="http://www.paulgraham.com/" target="_blank">Paul Graham</a> of Y-Combinator.  [I know Paul through the Lisp world, which Paul is designing a new language called <a href="http://paulgraham.com/arc.html" target="_blank">Arc</a> .]  Paul is a great writer, and there&#8217;s a lot of <a href="http://www.youtube.com/watch?v=MInOApCkA98" target="_blank">good advice</a> in his collection of essays.</p>
<p>If you accept capital, and your company grows enough, your board of directors might want to replace you as CEO with someone who has experience dealing with a company of the new size.  Joe pointed out that while you may not like this idea, it might be a very good move.  Two of us recommended the work of <a href="http://drfd.hbs.edu/fit/public/facultyInfo.do?facInfo=bio&amp;facEmId=nwasserman" target="_blank">Prof. Norm Wasserman</a> of Harvard Business School, on the subject of &#8220;Rich or King?&#8221;, the tradeoff between retaining control of your company versus making the most amount of money.  Prof. Wasserman gave a great talk about this at the <a href="http://www.businessofsoftware.org/" target="_blank">Business of Software conference</a>, and you can read his <a href="http://www.people.hbs.edu/nwasserman/Rich_vs_King-Proceedings_with_abstract.pdf" target="_blank">paper</a>.  See also his blog, <a href="http://founderresearch.blogspot.com/" target="_blank">Founder Frustrations</a>.</p>
<p>The most important factor for success is to have customers who love your product.</p>
<p>Mobile Technology was discussed by <a href="http://www.youtube.com/watch?v=e_6K9B490EA" target="_blank">Rich Miner</a>, who started <a href="www.android.com" target="_blank">Android </a>and sold it to Google.  He&#8217;s now the head of Google&#8217;s Android project, which is creating an open and portable platform for mobile devices.  <a href="http://tns-www.lcs.mit.edu/~vanu/home.html" target="_blank">Vanu Bose </a>of MIT explained about the various forms of wireless technology, such as CDMA, GSM, EVDO, UMTS, WiMax, and many others.  This session was more of a lecture with questions.</p>
<p>I know relatively little about mobile technology, and I learned a lot.  Here are some of the high points, at lesat for me.  This is an exciting, &#8220;tipping point&#8221; time that has been anticipated for years by those in the mobile industry.  Finally there are mobile platforms with big screens, touch input, simultaneous voice and data, and good network performance.  Carriers are offering unlimited data plans.</p>
<p>This allows a wide variety of useful applications to be written.  Obviously there is now the iPhone and its highly successful App Store, and soon there will be Android phones with the same kind of abilities and store.  Miner pointed out that there were 1.27B (!) mobile phones sold this year, but there are only 10M iPhones, which is a very small fraction.  [But is he counting all mobile phones, including the vast majority that don't have the big screens and cannot run these apps?]</p>
<p>Nokia has bought <a href="http://www.symbian.com/" target="_blank">Symbian</a>, and <a href="http://www.engadget.com/2008/06/24/nokia-buys-symbian/" target="_blank">will </a>turn over their IP to the Symbian Foundation, a non-profit whose purpose is to advance the Symbian platform. Miner stressed that having only one platform, owned by one company, is highly undesirable.  [Gee, I wonder <a href="www.microsoft.com" target="_blank">whom </a>he was tacitly referring to?]</p>
<p>It was commented that any country with four or more dominant carriers get many benefits from the competition between the carriers, who are highly motivated to respond to customer demands, and innovate.  The USA has only three dominant carriers now, but two more are coming (one from <a href="http://en.wikipedia.org/wiki/Craig_McCaw" target="_blank">Craig McCaw</a> ) [I did not get all of this].  There&#8217;s something new being tested in Baltimore that&#8217;s very promising and working well [was this about <a href="http://www.bridge.skyline.net/" target="_self">Believe Wireless </a>or <a href="http://www.washingtontimes.com/news/2008/sep/30/sprint-opens-new-wimax-network-in-baltimore/" target="_blank">Sprint's WiMax</a>?  Sorry, Miner was talking quickly and I am not well-versed in all this.]</p>
<p>Vanu Bose explained that the most successful carriers were the ones who used lower frequencies, since they have a higher range and therefore need fewer cell towers.  AT&amp;T and Verizon control the 700MHz and 800MHz [that's considered "low"], forming a duopoloy [which means little competition].  These frequencies are particularly valuable in large cities, because they go through skyscrapers, rather than being blocked by them.  There is always a tradeoff between megabytes [data rate], capacity, and coverage.  [In the context of mobile phones, the word "bandwidth" refers to an amount of space in the electromagnetic spectrum, not to data rates.]</p>
<p>UMTS theoretically can do data rates of 3M downstream and 1M upstream, but it&#8217;s relatively new, whereas GSM has been optimized for years, and tests show that UMTS is actually far slower, like 200K.</p>
<p>The reason that wired networks operate according to one standard is that they are carrying so much data so fast that there is no room for improvement; they are very close to the Shannon limit.  Wireless isn&#8217;t there yet, so there&#8217;s competition to do better by using new proprietary techniques.  We can&#8217;t expect better standardization until that process reaches its culmination.  LTE, for all practical purposes, does not exist.  WiMax really is being built out.  [There was a lot more of this kind of thing.]</p>
<p>But application writers need not study and master all this.  What matters to them is the software platform.</p>
<p>For voice communication, research shows that users care more about latency than data rate.  [That was a surprise to me; I rarely hear about latency figures!]</p>
<p>Android lets you download apps from any old web link, not just from their store, although of course you have to first discover the web link.  YouTube is so successful because it&#8217;s the only place you go for videos, which makes it easy to discover them, and the Android App Store will be analogous.</p>
<p>I asked how you get your apps into the Apple iPhone App Store, and what you pay for this.  Miner said that first you have to apply to be a developer, but very likely you won&#8217;t have any problem.  Then you submit your application, and &#8220;the App Store gods cogitate for a few weeks; nobody knows what criteria they use.&#8221;  Finally, if you are charging money for the app, they take a 30% cut of all revenue. [Also, they have just announced that they're removing their non-disclosure ageement requirement for developers.]</p>
<p>I know that 30% is the cut they take for music bought through iTunes.  It seemed to me like a large amount, but everybody pigpiled on me saying, no, it was very reasonable.  Distribution costs for software are usually high.  And book authors only get 10%.  I was not convinced by those arguments.  Who cares about any of that?  The point is that it&#8217;s very cheap to distribute software to a mobile device, and what value is the store really adding?  If I were able to set up my own, competing store, I could easily charge less than 30% and still make a tidy profit.  The answer to that is: you can&#8217;t, because Apple makes it technically impossible (for unhacked iPhones).  Well, doesn&#8217;t that mean that Apple is charging a <a href="http://en.wikipedia.org/wiki/Coercive_monopoly rent" target="_blank">monopoly </a>&#8220;rent&#8221;?  With Android, would it be possible to set up a competing app store?  By this time the conversation had moved on, so I didn&#8217;t get an answer.  If so, that might be a business model for a startup, although I suppose Google would just lower their price to match.  That would be good for everyone, except the startup!</p>
<p>Will you be able to do advertising-supported apps?  Miner thinks it&#8217;s possible but points out that it&#8217;s hard.  There isn&#8217;t much screen space.  The ads really must be ads that the user genuinely wants to see, because they&#8217;re relevant and useful.</p>
<p>Does Google make money from Android?  No [by which I take it he means, not directly].  It is strategic for Google, to avoid someone from owning the platform as a monopoly.  It keeps the playing field level.  Google can offer non-free applications, but you can compete with Google on a fair footing.  Chrome (the new Google browser) exists for the same reason.  The Android browser is as good as the iPhone one; they&#8217;re both based on the <a href="http://" target="_self">WebKit </a>technology. Local applications will have some important advantages over browser [Software as a Service] apps.  Android will not have Flash support initially, but he thinks he&#8217;s heard that Adobe is working on it.  There will be far more web-capable mobile devices than home computers, and we&#8217;re already seeing companies maintain two different web sites, one aimed at each.  In the long run, the web (at least some of it) may be more addressed to mobile devices than to home computers.  There will be opportunities for companies to be publishers, a la Broderbund and Electronic Arts.  There will be so many apps that you&#8217;ll learn about them through major marketing campaigns.  [It sounds to me analogous to "labels" in the music industry, which have <a href="http://www.wired.com/entertainment/music/magazine/16-01/ff_byrne?currentPage=all" target="_blank">pros and cons</a>.)</p>
<p>Selling was a lecture by <a href="http://www.polarisventures.com/WhoWeAre/TeamDetail.asp?ContactID={39A5E147-8B9D-4A59-B2F5-D5FC35C310F0}" target="_blank">Bob </a><a href="http://en.wikipedia.org/wiki/Robert_Metcalfe" target="_self">Metcalfe</a>, famous co-inventor of the Ethernet, and <a href="http://www.3com.com/" target="_blank">CEO of 3Com</a>, and now a general partner at <a href="http://www.polarisventures.com" target="_blank">Polaris Venture Partners</a>.  He drew a large crowd.</p>
<p>Much of what he said comes from his 1992 Technology Review article, <a href="http://vcmike.files.wordpress.com/2008/03/zenofselling.pdf" target="_blank">Zen and the Art of Selling</a>, so I won't repeat all of that.  Much of his talk was oriented around direct sales, i.e. when you have real live salespeople going out to specific customers.  [Of course, there are many other models.  My impression is that direct sales is most appropriate when each sale tends to be for a very large amount of money.  Salespeople are very expensive, so direct sales must only be used where it's highly appropriate.]</p>
<p>Engineers must learn to have respect for salespeople; many do not.  The two cultures are very, very different, and being a great salesperson requires a great deal of expertise.  [I first saw these cultural differences at my first company job, at Symbolics.  My friend <a href="http://www.linkedin.com/in/wmyork" target="_blank">Bill York </a>went over to the sales side and then came back and explained it to all of us software developers.  The book <a href="http://www.amazon.com/Corporate-Cultures-Terry-Deal/dp/0738203300/ref=pd_bbs_sr_2?ie=UTF8&amp;s=books&amp;qid=1223131285&amp;sr=1-2" target="_blank">Corporate Cultures </a>hits the nail right on the head; it's well worth reading.]</p>
<p>When you&#8217;re a startup, try approaching a potential customer by saying, very politely: &#8220;I&#8217;m developing a new XXX.  I&#8217;d like to talk to you about what you&#8217;re doing, so that you can give me feedback.&#8221;  This means that you are not going to make a sales pitch to them, so don&#8217;t.  (At least not at this stage.)  Many potential customers are honored by this, and would enjoy talking to you.  The information get is priceless, and it&#8217;s also the start of a relationship that might eventually lead to a sale.</p>
<p>When talking to venture capitalists, if you want money, ask for advice.  And if you want advice, ask for money.</p>
<p>Marketing is not sales.  Marketing has many roles, including creating tools that help salespeople (brochures, ads, all kinds of things), generating leads (whom to call on), setting prices, and determining appropriate quotas for each salesperson&#8217;s territory.  [I didn't know that quota-setting is (sometimes) done by Marketing; I had assumed that sales management did it.  I suppose these things vary.]</p>
<p>Bringing along an engineer can be good.  The engineer can answer detailed technical questions, and talk to the techies if there are any around.  However, they often feel that they must talk about every feature in the product: &#8220;Oh, one other things, I&#8217;ve got to tell you about our great &#8230;&#8221;.  After all, the engineers worked hard on that and are proud of it.  But a good salesperson focuses on the benefits relevant to the customer, and doesn&#8217;t waste time on anything else.</p>
<p>Often you must talk to and cultivate more than one person at the account (the potential customer).  You need to learn how the customer&#8217;s company is organized, who makes which decisions, and who has which agendas.  [A good example I recently heard: the IT department might not like buying a SaaS product that will make IT less important in the company.]</p>
<p>Eventually, you must ask for the offer.  This can be emotionally difficult, since it&#8217;s only natural to be afraid of hearing &#8220;no&#8221;.  But a good salesperson thinks of &#8220;no&#8221; as a starting point!  You say, &#8220;why not?&#8221;, and proceed from there.  One way to ask for the order is &#8220;So, would you like this delivered next week or the week after?&#8221;</p>
<p>Sales training courses really are good!  If you want to sell better, find a good one and take it.</p>
<p>Credibility matters more than anything else.  The customer is very unlikely to buy without trust.  First you must establish credibility for yourself, then for your company, and then for the product.  A good way to establish personal credibility is to make little promises and keep them.  By little, he means &#8220;I&#8217;ll meet you at such and such time&#8221;: do not be late!  Or &#8220;I&#8217;ll mail you that tomorrow&#8221;: do it!  Even these little things are very effective.</p>
<p>It&#8217;s great to get to the customers before your competitor does.  Metcalfe was snookered by an Interlan salesperson who would always get there first, and leave them with five challenging technical questions to ask when Metcalfe showed up!</p>
<p>That was the end of the lecture, and then participants spoke.  People recommended <a href="http://sethgodin.typepad.com/" target="_blank">Seth Godin&#8217;</a>s book <a href="http://www.sethgodin.com/sg/books.asp" target="_blank">Permission Marketing</a>, and <a href="http://hubspot.com" target="_blank">HubSpot.com</a> for their concept of Inbound Marketing.  [I liked Seth Godin's talk at the Business of Software conference and learned that he's highly respected and has written lots of books that people think well of.  HubSpot's CTO, <a href="http://onstartups.com/" target="_blank">Dharmesh Shah</a>, also gave a great talk at Business of Software.]</p>
<p>James Geschwiler asked Metcalfe about sales force compensation.  Some of the advice: if there are channel conflicts (i.e. it&#8217;s not clear which salesperson, under the rules of engagement, is supposed to get the commission), pay everyone fully.  You want to pay the salespeople very promptly; their culture is based on quick turnaround and instant gratification is important.  But what if the customer never ends up paying?  You could delay paying the commission until you actually get the cash, but that takes too long; don&#8217;t do that.  Your CFO must make sure that customers are creditworthy, so that if the sale is booked, you aren&#8217;t worried about the receivable turning into cash.  Then you can pay the commission when the product is booked, or, sometimes, when customer acceptance happens.</p>
<p>James: What about sales compensation for SaaS (Software as a Service)?  Metcalfe: I don&#8217;t know about that.  James: what proportion of the salesperson&#8217;s compensation should be a base salary and what from commissions?  Metcalfe: 60/40 is common, but 40/60 can work if you have &#8220;swashbuckling egomaniacs&#8221;.  Never put a cap (maximum) on commissions; in fact, raise the commission rate after the salesperson reaches the quota.</p>
<p>Metcalfe added that when you hire a salesperson, see whom they have sold to in the past.  They&#8217;re bringing all those relationships and contacts with them.  That&#8217;s a salesperson&#8217;s long-term value: he or she cares more about them than your company, since salespeople often switch companies (they have the highest turnover of any category of employees). [I've seen that; when it looks like the company is heading toward trouble, most of the engineers stay to try to fix it, but the most of the sales force takes off for greener pastures.]</p>
<p>James: What do you think about non-compete agreements?  Metcalfe: For a long time, I was in California, where they are prohibited.  Now I&#8217;m a venture capitalists in Massachusetts, and I think they&#8217;re great.  [When my brother was at Harvard Law, I asked him about these, since I had been asked to sign one.  He found a law professor who had just done a study about non-competes in Massachusetts, and found that the only cases in which they have successfully been used against an ex-employee was against direct salespeople who were taking away accounts.]</p>
<p>What if your product breaks?  Remember, customers expect this to happen.  What matters is what you do next: you should be all over it!  Do whatever it takes to make it right.  If you rise to the occasion, and fix it fast, they&#8217;ll love you.</p>
<p><a href="www.unfoldandenjoy.com" target="_blank">Hannah Burr</a> had a small group of us discuss &#8220;what do you to to keep your life from turning into chaos?&#8221;  The group shared hints and techniques.  Now I know some good books to read, website to check out, and tools to use.  I&#8217;ll add all of these to my things-to-do list, which is so long that my life is turning into chaos.  Check out <a href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1223137267&amp;sr=1-1" target="_blank">Getting Things Done</a>, <a href="http://unclutter.com/" target="_blank">Unclutter</a>, <a href="http://www.43folders.com/" target="_blank">43Folders</a>, <a href="http://lifehacker.com/" target="_blank">Lifehacker</a>, <a href="http://www.rememberthemilk.com/" target="_blank">remember the milk</a>, <a href="http://www.omnigroup.com/applications/omnifocus/" target="_blank">OmniFocus </a>if you use a Mac.</p>
<p>There were lots of little ideas.  One interesting one: Have an outsider look over your to-do list and help you consider how to manage it.</p>
<p>During lunch, entrepreneurs got together in small groups with the experts to talk about whatever they wanted.  I told stories and passed on what useful facts I could think of.  I spent the second half of lunch talking to Kimberly Patch of <a href="http://www.redstartsystems.com/" target="_blank">Redstart Systems</a>, a startup using voice-recognition technology to make it very easy and efficient to use computers by voice command.  This is particularly useful for people with disabilities, such as carpal-tunnel syndrome.  I&#8217;ve had several friends who were forced to take leaves of absence or even give up their careers entirely because of repetitive stress injuries; this is just what they needed.  With this system, you can even do some things faster than with a keyboard and mouse!  Again, I offered what useful advice I had, and discussed funding opportunities.</p>
<p>Bill Warner, with James Geschwiler, designed the event.  Tom Hopcroft and Heather Johnson of MassTLC did a lot of the work and deserve most of the credit.  Their organizer, Kaliya Hammond, also did a superb job.  Congratulations!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/masstlc-entrepreneur-unconference/feed</wfw:commentRss>
		</item>
		<item>
		<title>The Failure of Lisp?  A Reply To Brandon Werner</title>
		<link>http://danweinreb.org/blog/the-failure-of-lisp-a-reply-to-brandon-werner</link>
		<comments>http://danweinreb.org/blog/the-failure-of-lisp-a-reply-to-brandon-werner#comments</comments>
		<pubDate>Thu, 18 Sep 2008 14:05:01 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[ITA Software]]></category>

		<category><![CDATA[Lisp]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=57</guid>
		<description><![CDATA[Brandon Werner has written an excellent, thought-provoking post on his blog entitled &#8220;The Rise Of Functional Programming: F#/Scala/Haskell and the failing of Lisp&#8221;.
He currently works for Microsoft, but I think it&#8217;s clear that this posting reflects his own opinions rather than being the corporate voice of Microsoft.  He clearly has lot of real experience with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.brandonwerner.com/" target="_blank">Brandon Werner</a> has written an excellent, thought-provoking post on his blog entitled <a href="http://blogs.msdn.com/brandonwerner/archive/2008/09/16/the-rise-of-functional-programming-f-scala-haskell-and-the-failing-of-lisp.aspx" target="_blank">&#8220;The Rise Of Functional Programming: F#/Scala/Haskell and the failing of Lisp&#8221;.</a></p>
<p>He currently works for Microsoft, but I think it&#8217;s clear that this posting reflects his own opinions rather than being the corporate voice of Microsoft.  He clearly has lot of real experience with Common Lisp and knows whereof he speaks, and I take him very seriously.  I started to write a comment for the blog, but it got too big for that.  So, here&#8217;s my open reply to Brandon:</p>
<p>Hi.  I am one of those 50 year old men.  (Well, I&#8217;ll be 50 in January, and I don&#8217;t use IRC.)  I was one of the designers of Common Lisp and one of the co-founders of Symbolics.  I wrote the second Emacs ever, in Lisp, following along as RMS developed the first Emacs (in TECO), when I was a teenager.</p>
<p>I currently work at ITA Software, a.k.a &#8220;the 800-pound gorilla of Common Lisp&#8221;.  If you use Orbitz and ask &#8220;how do I get from Boston to Chicago on 10/4/2000 at 2pm &#8230;&#8221;, we provide an excellent set of choices of the cheapest routes and fares for which seats are available.  This program, known as QPX, is written in Common Lisp.</p>
<p>I am working on our new product, an airline reservation system.  It&#8217;s an online transaction-processing system that must be up 99.99% of the time, maintaining maximum response time (e.g. on www.aircanada.com).  It&#8217;s a very, very complicated system.  The presentation layer is written in Java using conventional techniques.  The business rule layer is written in Common Lisp; about 500,000 lines of code (plus another 100,000 or so of open source libraries).  The database layer is Oracle RAC.  We operate our own data centers, some here in Massachusetts and a disaster-recovery site in Canada (separate power grid).</p>
<p>There are currently a total of eleven implementations of Common Lisp being actively maintained; see my <a href="http://common-lisp.net/~dlw/LispSurvey.html" target="_blank">survey</a>.  I see you are clearly much more interested in the seven free ones than the four for-money ones.  At ITA Software, QPX uses <a href="http://www.sbcl.org/" target="_blank">SBCL</a>, and the airline reservation system uses <a href="http://www.clozure.com/index.html" target="_blank">Clozure Common Lisp</a> (formerly known as OpenMCL).  There are a bunch of reasons we use different dialects, including historical and business ones that don&#8217;t apply to anyone but us.  They&#8217;re both great.  SBCL takes longer to compile but generates better code, which is more important for QPX (totally compute-bound) than for the airline reservation system (TP).  Personally, I&#8217;d recommend these two, but reasonable people differ.</p>
<p>I am distressed and sad to hear that the community is judgmental and unfriendly to newcomers and thorny and un-inspiring.  I have heard this same criticism from other people than you, and at this point I assume it must really be true.  My own point of view is, of course, entirely different from that of newcomers, so it&#8217;s probably harder for me to see that this is going on.  Indeed, to me it seems that people do get answers on comp.lang.lisp and <a href="http://www.lispforum.com/" target="_blank">LispForum</a>, and the tone doesn&#8217;t seem so nasty to me, usually.  Maybe I&#8217;m just not &#8220;getting it&#8221;.</p>
<p>I would truly appreciate if you could let me know more specifically what kind of incidents you have encountered.  (Was this mainly on IRC?)  Putting people off like that is, in my opinion, rude, unethical, and obviously very bad for Lisp.</p>
<p>Please send me side mail about ASDF being incompatible in the two implementations.  It&#8217;s certainly not supposed to be, and I&#8217;m not getting this from your installation writeup.  Thank you. I agree that installation could be made more friendly and beginner-oriented for all these implementations.  It should be much more &#8220;Batteries Included&#8221;.  There has been at least one serious attempt to deal with this: Google for &#8220;Lisp in a Box&#8221; (and Peter Siebel has plans to improve it even more) .  But your general point is still right; we need much more of what &#8220;Lisp in a Box&#8221; is doing.  The fact that too little effort has been put into this is part of a greater issue about the attitude of the community; more below.</p>
<p>You say &#8220;.. Common Lisp showed its failure as a community by sitting out this enthusiasm &#8230;&#8221; and I agree completely.  In my opinion, this is part of the same issue about the attitude of the community.</p>
<p>Here&#8217;s another one you didn&#8217;t mention.  Look at <a href="http://www.python.org" target="_blank">www.python.org</a> and <a href="http://www.ruby-lang.org" target="_blank">www.ruby-lang.com</a>.  They immediately tell you what the language is and what&#8217;s good about it (and they&#8217;re attractive).  Now look at <a href="http://www.lisp.org" target="_blank">www.lisp.org</a>.  This will be vastly improved shortly, but the point is that it is yet another reflection of the same attitude issue.</p>
<p>The problems are that there is hardly any organized &#8220;Lisp community&#8221; at all, and that few people have been putting serious effort into trying to publicize and promote Lisp, and get new people involved.</p>
<p>The only companies with a direct financial interest, as far as I know, are the four for-money Lisp vendors.  Franz has made some serious efforts, but what I understand now is that they&#8217;ve had so much trouble making money from selling Lisp that they&#8217;re spending less effort on that, and more effort on developing new products (many built on Lisp underneath).  The other companies are basically too small to be effective.</p>
<p>Open source communities, like those around Python and Ruby, have been very effective.  Those of us who&#8217;d like to see Lisp promoted need to understand more about how new languages have been so successful at this, and then rouse people to undertake the work of making it all happen.  Certainly part of that is to provide a friendly community who can help and encourage new users.</p>
<p>I hope we can address these issues and get some real work going at the next <a href="http://ilc09.org" target="_blank">International Lisp Conference</a>.  It&#8217;s at MIT, Mar 22-25; I&#8217;m general chair.  (There&#8217;s not much info at the web site yet, but it&#8217;s coming soon.)</p>
<p>Thank you very much!</p>
<p>&#8211; Dan</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/the-failure-of-lisp-a-reply-to-brandon-werner/feed</wfw:commentRss>
		</item>
		<item>
		<title>My Summer Vacation in Ecuador</title>
		<link>http://danweinreb.org/blog/my-summer-vacation-in-ecuador</link>
		<comments>http://danweinreb.org/blog/my-summer-vacation-in-ecuador#comments</comments>
		<pubDate>Mon, 01 Sep 2008 22:47:42 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Travel]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=51</guid>
		<description><![CDATA[I just returned from a two-week vacation in Ecuador, visiting the rain forest and the Galapagos.  There&#8217;s a lot you can read on the web about visiting Ecuador, so I won&#8217;t repeat any of that.  Here are some of my own experiences and hints.
The trip was booked by REI and they did a great job.  [...]]]></description>
			<content:encoded><![CDATA[<p>I just returned from a two-week vacation in Ecuador, visiting the rain forest and the Galapagos.  There&#8217;s a lot you can read on the web about visiting Ecuador, so I won&#8217;t repeat any of that.  Here are some of my own experiences and hints.</p>
<p>The trip was booked by <a href="http://www.rei.com" target="_blank">REI</a> and they did a great job.  They were very helpful and informative, and all of their recommendations were good.</p>
<p>In Quito (the capital of Ecuador, where we spent a few days), we stayed at a hotel called <a href="http://www.hostalrabida.com/" target="_blank">Hotel de la Rabida</a>.  We loved it.  It&#8217;s small and has pleasant, cozy public spaces.  The rooms are very clean and functional, the food is good, the people are helpful, and the owners are very friendly. In the USA, we often are faced with the choice between a cheap chain motel, and a super-expensive business hotel; this is the kind of place we&#8217;re always looking for.</p>
<p>We spent several days at <a href="http://www.laselvajunglelodge.com/" target="_blank">La Selva Jungle Lodge</a> in the rain forest.  It&#8217;s as advertised: great!  Our guide has a degree in Ecotourism and has been doing it for nine years.  He was very friendly and helpful.  He spotted all kinds of animals and birds, and explained a lot about all the life in the jungle.  Our best sighting was of an armadillo, which was very exciting.  They&#8217;re rarely seen, particularly since they&#8217;re usually nocturnal.  We also visited a site where parrots and parakeets come to eat clay (scientists aren&#8217;t totally certain why they do that), and it was amazing to see hundreds (perhaps a thousand) of them warily and very gradually come down from the trees to where the clay is.</p>
<p>The rainforest is hot and very, very humid.  (We were there during the dry season.)  I had trouble sleeping.  I also had some sickness that I attribute to a reaction to Malarone, an anti-malaria medicine.  (Although my wife and son did fine on both scores.)  When I was there, I was told that there haven&#8217;t been any malaria cases in many years, so the Malarone wasn&#8217;t really needed.</p>
<p>Despite the economic problems in Ecuador of the past decade, the capital city of Quito looked to me as if it&#8217;s in very good shape.  It&#8217;s very clean, the roads are in excellent repair, there&#8217;s all kinds of business, and some very nice public sculpture, indicating a good amount of municipal care. We found the Ecuadoran people &#8212; not just the tourist-industry people but even those we just ran into &#8212; to be pleasant, and forgiving about our ignorance of Spanish. The only troublesome thing was that there were a lot of police and security guards around, with guns and bullet-proof vests. The area we were in didn&#8217;t look dangerous, but we were told not to talk around after dark.</p>
<p>Before I left, I heard varying reports about the water temperature around the Galapagos islands, and whether wetsuits were needed for snorkeling.  Most of us turned out to need full wetsuits.  The cruise boat I was on provided these, so it was no problem.  Once a sea lion decided to play with me, swimming straight at me and veering off at the last moment (twice), which was very cool.  A giant sea turtle swam below me, only about a foot down!  We also saw small sharks and, of course, lots of very pretty tropical fish.</p>
<p>We were very happy to see that The Galapagos National Park is being quite careful about taking care of the islands. These days there are a lot of visitors, and it&#8217;s important to make sure that they don&#8217;t disturb or harm things.  There are lots and lots of good rules: no food, no touching the animals, and so on. Visitors are always in small groups led by official natuarlists, who make sure that the rules are followed. Explicit paths are everywhere, to make sure you don&#8217;t trample nests and such.  The Ecuadorans are working hard to be good stewards, eradicate introduced species (every one of which damages the ecology), and do good science to understand the plants and animals better.  (Obviously they have a strong economic motivation here, as tourism is one of their major industries, but thery&#8217;re doing well by doing good.)</p>
<p>The cruise operation was run by <a href="http://www.ecoventura.com" target="_blank">Ecovertura</a> (also see the very accurate <a href="http://travel.nytimes.com/travel/guides/central-and-south-america/ecuador/galapagos-islands/attraction-detail.html?vid=1154654622219" target="_blank">review</a> in the New York Times), and the guides were very helpful, friendly, and experienced.</p>
<p>The only really annoying part of the trip was going home.  Our flight had six legs (takeoff and landings)!  (This is mainly because the international part and the national part are set up separately.)  I&#8217;m not able to sleep on redeyes, and at the moment I have been awake for over 36 hours.  But it was worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/my-summer-vacation-in-ecuador/feed</wfw:commentRss>
		</item>
		<item>
		<title>These Are a Few of my Favorite Sites and Applications</title>
		<link>http://danweinreb.org/blog/these-are-a-few-of-my-favorite-sites-and-applications</link>
		<comments>http://danweinreb.org/blog/these-are-a-few-of-my-favorite-sites-and-applications#comments</comments>
		<pubDate>Mon, 11 Aug 2008 11:55:49 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Free Software]]></category>

		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://danweinreb.org/blog/?p=41</guid>
		<description><![CDATA[The Web abounds with valuable free services.  Here are some of my favorites, entirely free unless otherwise noted.
Jott.com: You call their toll-free number.  A voice says &#8220;Who do you want to Jott?&#8221;  You say &#8220;myself&#8221;, or a name that you have registed on their web site.  The voice says &#8220;Jott yourself&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>The Web abounds with valuable free services.  Here are some of my favorites, entirely free unless otherwise noted.</p>
<p><a href="http://www.jott.com" target="_blank">Jott.com</a>: You call their toll-free number.  A voice says &#8220;Who do you want to Jott?&#8221;  You say &#8220;myself&#8221;, or a name that you have registed on their web site.  The voice says &#8220;Jott yourself&#8221; or the name of the recipient.  You speak a message.  That&#8217;s it.  Jott sends email to the recipient, containing a transcript of what you said, plus a link to the audio recording in case the transcription isn&#8217;t good enough.  My car has a voice-activated feature to make phone calls &#8212; it talks Bluetooth to my cell phone.  So when I&#8217;m listening to the radio on my commute, and I hear something intersting that I want to follow up on, I just press the &#8220;speak&#8221; button on my steering wheel, say &#8220;Dial Jott&#8221;, and talk to Jott.  It sure beats trying to scribble notes during red lights.</p>
<p><a href=" https://addons.mozilla.org/en-US/firefox/addon/10" target="_blank">AdBlock</a>: The AdBlock Plus extension for Firefox really works.  I block ads because they take too long to download (making my effective browser response time much worse), and the animated ones are much too distracting.  It&#8217;s easy to turn ad blocking off selectively.</p>
<p><a href="http://www.google.com/tools/firefox/toolbar/FT3/intl/en/index.html" target="_blank">Google Toolbar for Firefox</a>: This Firefox extension has a command called AutoFill, that can fill in my name and address and such in most web pages that ask for it.  It saves a lot of tedium.</p>
<p><a href=" http://www.google.com/calendar" target="_blank">Google Calendar</a>: I use this to track all my meetings and appointments.  I can get at it from work and from home.  Sometimes it seems to be somewhat &#8220;down&#8221;, not allowing new entries to be made, but this is rare enough to be acceptable.  The Ajax UI is done very well.  (I used to use the Lightning plugin for Thunderbird, but sharing over the web is important to me.)</p>
<p><a href="http://www.pandora.com" target="_blank">Pandora</a>: You tell it what music you like, and it provides a &#8220;radio station&#8221; that plays the sort of music you like.  It&#8217;s amazingly good at choosing what to play; I would never have believed it.  It has found new artists that I like a lot and otherwise would never have heard of.  I almost always have this on when I&#8217;m working at home.</p>
<p><a href="http://www.xconomy.com" target="_blank">Xconomy</a>: A news magazine covering hi-tech in the Boston (and now Seattle) area, with very high quality reporting.  I read it every day to keep up with what&#8217;s going on around here.  (Full disclosure: Xconomy is a Common Angels company.)</p>
<p><a href="http://www.linkedin.com">LinkedIn</a>: This is the only &#8220;social network&#8221; that I value.  I use it to keep track of where all my old friends and co-workers are, what they&#8217;re doing professionally, and what their latest email address is.  And when I hear about someone in hi-tech, I often look them up to learn more about them.</p>
<p><a href="http://www.timebridge.com" target="_blank">TimeBridge</a>: A free service that helps you set up meetings between many people, finding times that are available for everyone.  It&#8217;s very easy to use.</p>
<p><a href="http://www.carbonite.com">Carbonite</a>: Automatic backup over the web.  It&#8217;s very, very easy to use.  (Full disclosure: Xconomy is a Common Angels company.  The best competitor is Mozy, which my friends say is also very good.)  It&#8217;s not free, but it&#8217;s well worth it.</p>
<p><a href="http://www.axantum.com/AxCrypt/" target="_blank">AxCrypt</a>: Simple file encryption and decryption.  I mainly use this to send encrypted email to a friend with whom I share a passphrase.  One of these days I&#8217;ll learn how to use the OpenPGP facility provided by the Enigmail Thunderbird add-on, if I find anyone else who is using it and with whom I have secrets to discuss.</p>
<p><a href="http://www.squared5.com/" target="_blank">MPEG Streamclip</a> from Squared 5: This one is a free utility for MacOS X.  I use my Mac to edit video (with Final Cut) into DVD&#8217;s, for the <a href="http://www.familyopera.org">North Cambridge Family Opera Company</a>. MPEG Streamclip can &#8220;rip&#8221; video off (unencrypted) DVD&#8217;s and produce virtually any format, including the one that YouTube likes.</p>
<p><a href="http://www.collegedegrees.com/blog/2008/06/17/hack-your-kindle-100-tips-resources-and-tutorials-to-get-more-out-of-the-amazon-kindle" target="_blank">Kindle tips</a>: There are lots of source of free books (legal) and other resources for the Amazon Kindle on this page.  My family is about to leave for a vacation trip in which we can only bring a limited amout of luggage.  We usually bring big piles of books on vacations, but it&#8217;s impossible this time.  So we got a Kindle.  In fact, we got two (his and hers).</p>
<p><a href="http://www.xkcd.com" target="_blank">xkcd.com</a>: My favorite web comic, and the only one I follow.  &#8220;A webcomic of romance, sarcasm, math, and language.&#8221;  Computer hacking, too.  Randall has more profound or funhy things to say about the intersection of science/math/technology and romance/relationships than anyone else.  There&#8217;s an archive of all the past comics.  He has three comics about Lisp, all hilarious.  Buy stuff from his store: that&#8217;s his only source of income (no ads!).</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/these-are-a-few-of-my-favorite-sites-and-applications/feed</wfw:commentRss>
		</item>
		<item>
		<title>Advice About Sending Email</title>
		<link>http://danweinreb.org/blog/advice-about-sending-email</link>
		<comments>http://danweinreb.org/blog/advice-about-sending-email#comments</comments>
		<pubDate>Fri, 11 Jul 2008 12:22:52 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Email]]></category>

		<guid isPermaLink="false">http://dlweinreb.wordpress.com/?p=36</guid>
		<description><![CDATA[I&#8217;ve been using email on the Internet (and its predecessor, the ARPAnet) for 32 year.  Here&#8217;s some advice from my experience.
The Prime Directive: Never send email when you&#8217;re angry.  Never, ever.  It always backfires and you always regret it. Trust me on this.
The rest of these recommendations apply primarily when you&#8217;re sending mail to anyone [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using email on the Internet (and its predecessor, the ARPAnet) for 32 year.  Here&#8217;s some advice from my experience.</p>
<p>The Prime Directive: Never send email when you&#8217;re angry.  Never, ever.  It always backfires and you always regret it. Trust me on this.</p>
<p>The rest of these recommendations apply primarily when you&#8217;re sending mail to anyone who isn&#8217;t a close friend.</p>
<p>Do not use sarcasm on mailing lists.  Remember your tone of voice is not available to indicate that what you&#8217;re saying is sarcasm.  Inevitably, a few people on the list will take what you say literally, and then you&#8217;ll have to underke the boring job of correcting everyone&#8217;s misimpression.</p>
<p>Be very polite.  You almost can&#8217;t be too polite.  Because your facial expressions and tone of voice are not present, it&#8217;s easy to write something that will seem demanding or commanding.</p>
<p>Know the difference between &#8220;Reply&#8221; and &#8220;Reply All&#8221;, and be careful to always use the appropriate one.</p>
<p>Be careful to address your mail to the right person!  The automatic name-completion feature in many of the good mail clients can sometimes complete to a name that&#8217;s not what you expected.</p>
<p>Some people have separate home and company email addresses.  Send personal mail to the home address.</p>
<p>Be careful about giving out someone else&#8217;s personal email address.  Some people do not like to have their email addresses be well-known.  So treat anyone else&#8217;s email address as if it were confidential information, until you get permission to distribute it.</p>
<p>When sending mail to many individuals, address the mail to yourself, and BCC it to everyone else.  This way, the recipients cannot see the email addresses of the other recipients, thus protecting their privacy.</p>
<p>Make your subject lines descriptive and clear.  If you&#8217;re replying, keep the same subject line (don&#8217;t worry about the &#8220;Re:&#8221;) so that mail readers can see which mail is grouped with which.  If you&#8217;re communicating with friends, clever subject lines can be quite an art form and source of innocent merriment.</p>
<p>Save away all of your interesting email.  It&#8217;s very handy to be able to refer to it when you subsequently communicate with the same person, or company.</p>
<p>Keep your email on your own computer.  Leaving it on a net server is too much of a risk to your privacy.  Even if you like Google (which I do) and trust them (which I pretty much do), you never know if conditions will change in the future, and by then it&#8217;s too late.</p>
<p>For very sensitive email, encryption is a good idea.  Sadly, there isn&#8217;t an easy-to-use standard.  I use the free version of AxCrypt from <a href="http://www.axantum.com" target="_blank">Axantum</a> ; it&#8217;s only for Windows, unfortunately.  There are plenty of others.  Of course, the person to whom you are sending mail must also install the software, and you must have a shared passphrase.  As long as you&#8217;re going to the trouble to encrypt, use a long passphrase for better security.</p>
<p>Please feel free to use the Comments below to add other <a href="http://www.mp3lyrics.org/a/allan-sherman/good-advice/" target="_blank">good advice</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/advice-about-sending-email/feed</wfw:commentRss>
		</item>
		<item>
		<title>Perst, An Embedded Object-Oriented Database Management System</title>
		<link>http://danweinreb.org/blog/perst-an-embedded-object-oriented-database-management-system</link>
		<comments>http://danweinreb.org/blog/perst-an-embedded-object-oriented-database-management-system#comments</comments>
		<pubDate>Sun, 08 Jun 2008 16:10:16 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[ObjectStore]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dlweinreb.wordpress.com/?p=32</guid>
		<description><![CDATA[I just learned of Perst, which is described as an open-source embedded object-oriented Java database (meaning database management system, of course) which claims ease of working with Java objects, &#8220;exceptional transparent persistence&#8221;, and suitability for aspect-oriented programming with tools such as AspectJ and JAssist.  It&#8217;s available under a dual license, with the free non-commercial [...]]]></description>
			<content:encoded><![CDATA[<p>I just learned of <a href="http://www.mcobject.com/perst/">Perst</a>, which is described as an open-source embedded object-oriented Java database (meaning database management system, of course) which claims ease of working with Java objects, &#8220;exceptional transparent persistence&#8221;, and suitability for aspect-oriented programming with tools such as AspectJ and JAssist.  It&#8217;s available under a dual license, with the free non-commercial version under the GPL.  (There is a .NET version aimed at C# as well, but I&#8217;ll stick to what I know; presumably the important aspects are closely analogous.)</p>
<p>I have some familiarity with <a href="http://www.progress.com/objectstore/pse_pro/index.ssp">PSE Pro for Java</a>, from what is now the <a href="http://www.objectstore.com">ObjectStore division of Progress. </a>Its official name is now Progress ObjectStore PSE Pro.  I&#8217;ll refer to it as PP4J, for brevity. I was one of its original implementors, but it was substantially enhanced after I left.  I also have a bit of familiarity with <a href="http://www.oracle.com/database/berkeley-db/je/index.html">Berkeley Database Java Edition</a>, a more recently developed embedded DBMS, which I&#8217;ll refer to as BDBJE.</p>
<p>PP4J provides excellent transparency, in the sense that you &#8220;just program in Java and everything works.&#8221;  It does this by using a class-file postprocessor.  However, Perst claims to provide the same benefit without such a preprocessor.  It also claims to be &#8220;very fast, as much as four times faster than alternative commercial Java OODBMS.&#8221;  Of course, &#8220;as much as&#8221; usually means that they found one such micro-benchmark; still, it would be uninteresting had they not even claimed good performance.  And it has ACID transactions with &#8220;very fast&#8221; recovery.</p>
<p>Those are very impressive claims.  In the rest of this post, I&#8217;ll examine them.</p>
<p><strong>Who Created Perst?</strong></p>
<p>I always like to glance at the background of the company.  In particular, I like to know who the lead technical people are and where they worked before.  Unfortunately, the company&#8217;s management page only lists the CEO, COO, and Director of Marketing, which is rather unusual.  They&#8217;re in Issaquah, WA; could the technical people be ex-Microsoft?  It&#8217;s important to note that McObject&#8217;s main product line, called eXtremeDB(tm), is technically unrelated to Perst.</p>
<p>But I found a clue.  The Java package names start with org.garret.  It&#8217;s usually hard to retroactively change Java package names, so they&#8217;re often leftovers from an earlier naming scheme.  By doing some searches on &#8220;garret&#8221;, I found <a href="http://www.garret.ru/~knizhnik">Konstantin Khizhnik</a>, a 36-year old software engineer from Moscow with 16 or so years experience, who has written and is distributing an object-oriented database system called &#8220;GOODS&#8221; (the &#8220;G&#8221; stands for &#8220;Generic&#8221;).  His most recent release was March 2, 2007.  He has a <a href="http://www.garret.ru/~knizhnik/databases.html">table</a> that compares the features of GOODS with those of other systems, including Perst.  At the bottom it says: &#8220;I have three products GigaBASE, PERST and DyBASE build on the same core.&#8221;  He also has an essay named <a href="http://www.garret.ru/~knizhnik/eoodbms.html"><em>Overview of Embedded Object Oriented Databases for Java and C# </em></a>which includes an extensive section on the architecture of Perst.  This page also has some micro-benchmark comparisons including Perst, PP4J, BDBJE, and db40, but not GOODS.  Perst comes out looking very good.</p>
<p>He even has a <a href="http://www.garret.ru/~knizhnik/news.html">table</a> of different releases of several DBMS&#8217;s, including GOODS and Perst, saying what changes were made in each minor release! But at no point does he say that he was involved in creating the Perst technology.</p>
<p>He mentions the web site perst.org.  There&#8217;s nothing relevant there now, but <a href="http://www.archive.org/index.php">Brewster&#8217;s Wayback machine</a> shows that there used to be, starting in October, 2004.  It&#8217;s quite clearly the same Perst.  And the &#8220;Back to my home page&#8221; link is to Knizhnik&#8217;s home page.  Aha, the smoking gun!  By December, 2005, the site now mentions the dual license, and directs you to McObject LLC for a non-GPL commercial license.  In 2006, the site changes to the McObject web site.  McObject has several other embedded database products and was founded in 2001.  This strongly suggests that McObject bought Perst from Knizhnik in 2006.</p>
<p>I joined the Yahoo &#8220;oodbms&#8221; group, and there&#8217;s Knizhnik, who is apparently maintaining FastDB, GigaBASE, and GOODS.  He also wrote Dybase, based on the same kernel as GigaBASE.  He announced Perst Lite in October, 2006.  Postings on this group are sparse, mainly consisting of announcements of new minor releases of those three DBMS&#8217;s</p>
<p><strong>The Tutorial</strong><br />
The documentation starts with a tutorial.  Here are the high points, with my own comments in square brackets.  My comparisons are mainly with PP4J, which likewise provides transparent Java objects.  BDBJE works at a lower level of abstraction.  [Update: BDBJE now has a transparent Java object feature, called DPL.] I don&#8217;t know enough about the low-level organization of BDBJE or of the current PP4J to make well-informed qualitative comparisons.</p>
<p>Perst claims to efficiently manages much more data than can fit in main memory.  It has slightly different libraries for Java 1.1, 1.4, and 1.5, and J2ME.  There is a base class called Persistent that you have to use for all persistent classes. [This is a drawback, due to Java's lack of multiple inheritance of implementation.  PP4J does not have this restriction.]  They explain a workaround in which you can copy some of the code of their Persistent.java class.  [That sounds somewhat questionable from a modularity point of view, and doesn't help you for third-party libraries unless you want to mess with their sources.]</p>
<p>Files that hold databases can be stored compressed, encrypted, or as several physical files, in no file at all for in-memory use, and there&#8217;s an interface allowing you to add your own low level representation.  Each database has a root object in the usual way.  They use persistence-by-reachability [like PP4J].  There is a garbage collector for persistent objects.  However, there is also explicit deletion; they correctly point out that this can lead to dangling pointers.  [The fact that they have it at all suggests that the garbage collector is not always good enough.]</p>
<p>There are six ways to model relationships between objects.  To their credit, they have a &#8220;(!)&#8221; after the word &#8220;six&#8221;.  You can use arrays, but they explain the drawbacks to this.  The Relation class is like a persistent ArrayList.  The Link class is like Relation but it&#8217;s embedded instead of being its own object [huh?].  The IPersistentList interface has implementing classes that store a collection as a B-tree, which is good for large collections but has high overhead for small ones.  Similarly, there is IPersistentSet.  And finally there is a collection that automatically mutates from Link to a B-tree as the size gets larger. [PP4J, I believe, offers equivalents of the array, the list, and the set, and the list and set do the automatic mutation.]</p>
<p>How can they do transparent loading of objects, i.e. following pointers?  They give you two choices, which can be set as a mode for each object: load everything reachable from the object, or make the programmer explicitly call the &#8220;load&#8221; method.  They claim that this is usually sufficient, since your Java data structures usually consist of clusters of Java objects that are reachable from one head object, with no references between such clusters.</p>
<p>They assume that you always want to read in the whole cluster when you touch the head object [often true, but not always].  Also, when you modify an object, you must explicitly call the &#8220;modify&#8221; method, unless this is one of Perst&#8217;s library classes, whose methods call &#8220;modify&#8221; on themselves when needed.  They say &#8220;Failure to invoke the modifymethod can result in unpredictable application behavior.&#8221;</p>
<p>[This is not what I would call "transparent"!  PP4J is truly transparent, in that there is neither a "load" nor a "modify".  PP4J always does these automatically.  The Perst tutorial does not say what happens if you forget to call "load" when you were supposed to.  Not all Java data follows their cluster model.  PP4J depends for its transparency on the class postprocessor.  As I recall, the postprocessor runs quickly enough that it doesn't seriously impact the total compile time.  The only problem I had with it, as a user, was that it doesn't fit with the model assumed by the interactive development environments such as IntelliJ, requiring some inelegance in setting up your project.]</p>
<p>Perst has collections with indexes implemented as B-trees and allowing exact, range, and prefix searches.  The programmer must explicitly insert and delete objects from indexes; if you make a change to some object that might affect any indexes, you have to remove the object from the index and re-insert it. [So you need to know in advance which things might ever be indexed, or pessimistically assume that they all are, and so remove and re-insert whenever the object is changed in any way.  [I am pretty sure that PP4J does this automatically.]  You can index on fields directly, or you can create your own index values (since you&#8217;re inserting explicitly) that could be any function of the indexed object. [That's very useful, and I cannot remember whether PP4J provides this.]  Keys can be compound (several fields).  They  provide R-tree indexes and KD-tree indexes, useful for 2-D operations such as finding a point within certain constraints.  They also provide Patricia Tries, bit indexes, and more. [Wow, how do they fit all that into such a small footprint?]</p>
<p>Transaction recovery is done with a shadow-object mechanism and can only do one transaction at a time. (So ACID really means AD.) [Like PP4J, at least in its first version.]  The interaction of transaction semantics with threads, always a sticky issue, can be done in several ways, too extensive to go into here.  [This looks very good.]  Locks are multiple-reader single-writer.  Locking is not transparent in basic Perst [Bad!], but there&#8217;s a package called &#8220;Continuous&#8221; which does provide transparency, although it&#8217;s not described in the tutorial.  [So beginning users also have to remember to do explicit locking?]  Two processes can access a single database by locking the whole database at the file system level; it works to have many readers.</p>
<p>There is a class called &#8220;Database&#8221; that provides semantics more like a conventional DBMS.  It maintaints extents of classes. [Note: that means instances of the class can never be deallocated.]  It can created indexes automatically based on Java annotations, but you still must do manual updates when the indexed object changes.  It uses table-level locking.  It has a query lanauge called JSQL, but it&#8217;s unlike SQL in that it returns objects rather than tuples, and does not support joins, nested selects, grouping, nor aggregate functions.  You can &#8220;prepare&#8221; (pre-parse) JSQL queries, to improve performance if you use them many times, just as with most relational DBMS&#8217;s.  A JSQL query is like a SQL &#8220;where&#8221; clause, and it uses whatever existing indexes are appropriate.</p>
<p>Schema evolution is automatic, and done per-object as the object is modified.  It can&#8217;t handle renaming classes and fields, moving fields to a descendant or ancestor class, changing the class hierarchy, nor changing types of fields that aren&#8217;t convertible in the Java language.  There&#8217;s an export/import facility that you&#8217;d use for those changes.  You can physically compact the database files.  Backup and restore are just like files [you have to back up the whole thing, not just changes, which is probably true of PP4J as well.]  You can export to XML.</p>
<p>Perst supports automatic database replication.  There&#8217;s one master, where all writes are performed, and any number of slaves, where reads can be performed.  This lets you load-balance reads.  It&#8217;s done at page granularity.  You can specify whether it&#8217;s synchronous or asynchronous.  You can add new slaves dynamically.  For high-availability, it&#8217;s your responsibility to detect node failure and choose a new master node. [PP4J did not have this, the last time I looked.]</p>
<p><strong>Recent Press Releases from McObject</strong></p>
<p>Version 3.0 has new features.  There is a full-text search, much smaller in footprint than Lucene and geared specifically to persistent classes.  The .NET version supports LINQ.  They list CA&#8217;s Wily Technology as a successful reference customer, for a real-time Java application.</p>
<p>Perst is used in <a href="http://jtcfrost.sourceforge.net/">Frost</a>, which is a client for <a href="http://freenetproject.org/">Freenet</a>.  &#8220;Frost is a newsgroup reader-like client application used to share encrypted messages, files and other information over Freenet without fear of censorship.&#8221;  They switched from &#8220;the previous used SQL database&#8221; [it turns out to be something called <a href="http://mckoi.com/database/">McKoi</a>] because its recovery was unreliable (leaving corrupt databases), Perst&#8217;s schema evolution is easier to use, the databases are smaller (because Perst can store strings in UTF-8 encoding), and because they could get better performance from Perst as the database size grew.</p>
<p>Perst has been verified as compatible with Google&#8217;s Android.  They provide a benchmark program comparing performance of Perst against Android&#8217;s bundled SQLList.  It&#8217;s a simple program that makes objects with one int field and one String field, and an index on each field.  It inserts, looks up, etc.  [It would be easy to recode it for PP4J or for B2B4J.]<br />
<strong><br />
The Download<br />
</strong><br />
The basic jar file is 530KB.  &#8220;continuous&#8221; (see above) is another 57KB.</p>
<p>There&#8217;s more documentation, which goes into great detail about the internal implementation of how objects are represented and how atomic commit works.  [It's extremely similar to PP4J. (The original version, anyway; it might have changed since.)]</p>
<p>There are other features, for which I could not find documentation.  For intsance, each persistent class can have a &#8220;custom&#8221; allocator that you supply.  You could use this to represent very large objects (BLOB/CLOB) by putting them in a separate file.  In the database, you&#8217;d store the name of this file, and perhaps an offset or whatever.  Also, there is an implementation of the Resource Description Framework (RDF, used by the Semantic Web to represent metadata).</p>
<p>There are lots of parameters that you can set from environment variables.  I was not able to find documentation for these. The one that interests me most lets you control the behavior of the object cache.  The default is a weak hash table with LRU behavior.  Other possibilities are a weak table without the LRU, a strong hash table (if you don&#8217;t want to limit the object cache size), and a SoftHashTable which uses a Java &#8220;soft&#8221; hash table.</p>
<p>The code is clearly written except that it&#8217;s extremely short on comments.</p>
<p><strong>Overall Evaluation</strong></p>
<p>Perst is a lot like PP4J.  To my mind, the most important difference is the degree of transparency.  I greatly prefer PP4J&#8217;s approach of providing complete transparency, i.e. not requiring the use of methods such as load and modify.  This has two advantages.  First, your code is clearer and simpler if isn&#8217;t interrupted by all those calls to load and modify.  Second, without transparency, it&#8217;s far too easy to forget to call load or modify, which would cause a bug, in some cases a bug that&#8217;s hard to find.  Another problem is that the reference documentation is clearly incomplete and needs work. The tutorial, though, is quite clear and professionally-written, and very honest about the tradeoffs, pros, and cons of the product design. Personally, if you want to my respect, that&#8217;s how to do it!</p>
<p>However, it has a bunch of features and package that PP4J doesn&#8217;t (as far as I know).</p>
<p>I don&#8217;t know anything about the pricing of either product.</p>
<p>On the whole, for what it&#8217;s aiming for, Perst appears to be a very good, and a real competitor in this space.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/perst-an-embedded-object-oriented-database-management-system/feed</wfw:commentRss>
		</item>
		<item>
		<title>This Is Your Brain On Music</title>
		<link>http://danweinreb.org/blog/this-is-your-brain-on-music</link>
		<comments>http://danweinreb.org/blog/this-is-your-brain-on-music#comments</comments>
		<pubDate>Wed, 30 Apr 2008 12:49:06 +0000</pubDate>
		<dc:creator>Dan Weinreb</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dlweinreb.wordpress.com/?p=31</guid>
		<description><![CDATA[This Is Your Brain On Music, by Daniel J. Levitin, is the most exciting science book that I&#8217;ve read in a long time.  It&#8217;s all about music: what is music, how do we perceive music, why do we care about music, and, primarily, what do we know about how the mind and brain react, [...]]]></description>
			<content:encoded><![CDATA[<p><em>This Is Your Brain On Music</em>, by Daniel J. Levitin, is the most exciting science book that I&#8217;ve read in a long time.  It&#8217;s all about music: what is music, how do we perceive music, why do we care about music, and, primarily, what do we know about how the mind and brain react, process, and create music.</p>
<p>Some facts that I learned:</p>
<p>If I put electrodes in your visual cortext, and then I showed you a red tomato, there is no group of neurons and will cause my electrodes to turn red.  But if I put electrodes in your auditory cortext and play a pure tone in your ears at 440 Hz, there are neurons in your auditory cortex that will fire at exactly that frequency, causing the electrode to emit electrical activity at 440 Hz &#8212; for pitch, what goes into the ear comes out of the brain!  I find this amazing.</p>
<p>If you&#8217;re familiar with the phenomenon of restoration of the missing fundamental, in which you perceive the fundamental pitch if you are played only overtones of the pitch: it turns out that you can put in an electrode, play music with the fundamentals missing, and the electrode actually shows energy at the fundamental frequency!  The very fact that we can know things like this is exciting.</p>
<p>Ordinary people, when asked to sing a song (of which there is one well-known canonical recording, such as most pop songs), will sing back the song at almost the exactly correct tempo!  (They are accurate within 4%, which is as good as most people can perceive anyway.)  They also often get the key right, even though few people have &#8220;perfect pitch&#8221; per se.  I would never have guessed this.</p>
<p>The brain stem and the dorsal cochlear nucleus &#8212; structures so primitive that all vertebrates have them &#8212; can distinguish between [musical] consonance and dissonance; this distinction happens before the higher level, human brain region &#8212; the cortex &#8212; gets involved.</p>
<p>The book is extremely readable and fun.  It teaches you all the music theory you need to know.  In fact, his basic music theory section is the best quick introduction to music theory I&#8217;ve ever read.  The author has been a professional producer, so he knows a lot about how modern music recordings are made.  He currently runs the Laboratory for Musical Perception, Cognition, and Expertise at McGill Unversity, and has published a lot in serious scientific journals.  That&#8217;s a combination of expertise that may be unique.  He knows several well-known musicians and quotes from them; what Stevie Wonder and Joni Mitchell have to say is quite interesting.  The book is available in trade paperback for only $15 US.</p>
]]></content:encoded>
			<wfw:commentRss>http://danweinreb.org/blog/this-is-your-brain-on-music/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
