<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.5 (http://www.squarespace.com/) on Fri, 03 Sep 2010 08:18:06 GMT--><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"><title>Blog</title><subtitle>Blog</subtitle><id>http://www.masonchang.com/blog/</id><link rel="alternate" type="application/xhtml+xml" href="http://www.masonchang.com/blog/"/><link rel="self" type="application/atom+xml" href="http://www.masonchang.com/blog/atom.xml"/><updated>2010-08-09T18:41:03Z</updated><generator uri="http://www.squarespace.com/" version="Squarespace Site Server v5.11.5 (http://www.squarespace.com/)">Squarespace</generator><entry><title>Sea of Nodes Compilation Approach</title><category term="Better Know a Virtual Machine"/><id>http://www.masonchang.com/blog/2010/8/9/sea-of-nodes-compilation-approach.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/8/9/sea-of-nodes-compilation-approach.html"/><author><name>Mason Chang</name></author><published>2010-08-09T18:36:33Z</published><updated>2010-08-09T18:36:33Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Cliff Click's thesis entitled <span style="text-decoration: underline;">Combining Analysis, Combining Optimizations</span>, represents a program not as a control flow graph, but as a data flow analysis graph. I've been reading it, and have written a summary. If you're interested, <a href="http://www.masonchang.com/storage/pdfs/paper.pdf">download it here</a>. This compilation method is used in the Java Hotspot Server Compiler.</p>
<p>&nbsp;</p>
<p>Thanks to <a href="http://www.christianwimmer.at/">Christian Wimmer</a> for proofreading and feedback.</p>]]></content></entry><entry><title>Good To Great</title><category term="Books"/><id>http://www.masonchang.com/blog/2010/7/18/good-to-great.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/7/18/good-to-great.html"/><author><name>Mason Chang</name></author><published>2010-07-18T17:32:36Z</published><updated>2010-07-18T17:32:36Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><div id="_mcePaste">There are a few management books that keep popping up among the blogosphere. Good to great is one that consistently stands near the top of those lists.</div></p>

<p><div id="_mcePaste"><a href="http://www.amazon.com/Good-Great-Companies-Leap-Others/dp/0066620996">Good to Great</a> analyzes hundreds of companies over decades and looks for the companies that outperform the market by wide margins over the course of at least a decade. After all of their research, they dwindled the list of companies that became "great" down to thirteen. Finally, they looked at these thirteen companies and tried to find the common thread that led them to achieve such stellar results. That common thread is distilled into 200 pages of wisdom.</div></p>
<p>
<div id="_mcePaste">While most of the details and insights are targeted towards those in management, and therefore I am unable to actually verify any of the results, they mostly make sense. In fact, many of the recent "how to run a start up" articles point to or allude to much of the wisdom Collins finds. For example, find the best people first, then worry about where to take them. You constantly hear about "talent talent talent" as the biggest problem for almost any issue, which become non-issues if you have the right people.</div></p>

<p><div id="_mcePaste">While I'm only starting to get into things like interviewing, recruitment, and some management issues at a very small scale, Good to Great gives an excellent starting post on how to run any organization. Highly recommended.</div></p>]]></content></entry><entry><title>YouTube's thoughts on Flash</title><id>http://www.masonchang.com/blog/2010/6/29/youtubes-thoughts-on-flash.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/6/29/youtubes-thoughts-on-flash.html"/><author><name>Mason Chang</name></author><published>2010-06-29T23:08:32Z</published><updated>2010-06-29T23:08:32Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>Checkout what <a href="http://apiblog.youtube.com/2010/06/flash-and-html5-tag.html">YouTube has to say about Video on the web</a>, and what they think of Flash versus HTML 5. I fully support a video tag in HTML, but it's going to take a while.</p>]]></content></entry><entry><title>Red Berry Coffee</title><category term="Coffee"/><id>http://www.masonchang.com/blog/2010/6/23/red-berry-coffee.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/6/23/red-berry-coffee.html"/><author><name>Mason Chang</name></author><published>2010-06-24T05:17:04Z</published><updated>2010-06-24T05:17:04Z</updated><content type="html" xml:lang="en-US"><![CDATA[<div id="_mcePaste">Ever since I started working at Adobe, I've lamented one thing: The lack of really good coffee in downtown San Jose. Thankfully, <a href="http://www.redberrycoffeebar.com/">Red Berry Coffee</a> has solved that problem.</div>

<p>
<div id="_mcePaste">Red Berry Coffee is different than most coffee shops in that they have great baristas, but brew imported coffee. They brew from three different roasters: Barefoot Coffee, Ritual Roasters, and Ecco coffee. The fact that they don't roast on site is just fine because all three coffee roasters are local and have fantastic espresso blends.</div></p>
<p>
<div>I ordered my usual Cappuccino paired with Ecco coffee since they were the only roaster I have yet to try. Ecco is a very subtle coffee. It's somewhat plain up front, but has an excellent bittersweet finish. I'd say one of the smoothest espressos I've ever had.</div></p>
<div style="padding-left: 150px;"><span class="thumbnail-image-block ssNonEditable"><span><a href="javascript:showFullImage('/display/ShowImage?imageUrl=%2Fstorage%2FredBerryCoffee.jpg%3F__SQUARESPACE_CACHEVERSION%3D1277357038045',431,720);"><img src="http://www.masonchang.com/storage/thumbnails/4755787-7460848-thumbnail.jpg?__SQUARESPACE_CACHEVERSION=1277357038046" alt="" /></a></span></span></div>
<div></div>
<div></div>
<p>&nbsp;</p>
<p>Either way, all three coffee's are top notch. If you go early enough, the pastries are brought in fresh daily, and on weekends, Red Berry makes amazing waffles. What more could I want within walking distance from Adobe. If you're craving great coffee in downtown San Jose, checkout Red Berry Coffee.</p>]]></content></entry><entry><title>New Essay on Crafting a Vision</title><id>http://www.masonchang.com/blog/2010/6/4/new-essay-on-crafting-a-vision.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/6/4/new-essay-on-crafting-a-vision.html"/><author><name>Mason Chang</name></author><published>2010-06-04T07:23:39Z</published><updated>2010-06-04T07:23:39Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>What's a vision, what does it entail, and how do you spread it? <a href="http://www.masonchang.com/essays/2010/6/4/crafting-a-vision.html">Read it here</a>.</p>]]></content></entry><entry><title>On the Issue of Job Hopping</title><id>http://www.masonchang.com/blog/2010/4/26/on-the-issue-of-job-hopping.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/4/26/on-the-issue-of-job-hopping.html"/><author><name>Mason Chang</name></author><published>2010-04-26T17:17:43Z</published><updated>2010-04-26T17:17:43Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/lf9DUK_4fbg&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/lf9DUK_4fbg&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<div>Skip to 1:34.&nbsp;</div>
<div></div>
<div>Some context. A Mahalo employee quits, and the <a href="http://techcrunch.com/2010/04/24/how-not-to-handle-a-resignation-gracefully/">resignation email exchange isn't that professional</a>. Mark Suster says to <a href="http://www.bothsidesofthetable.com/2010/04/22/never-hire-job-hoppers-never-they-make-terrible-employees/">never hire job hoppers as they make terrible employees</a>. Video above is some discussion about job hopping.</div>]]></content></entry><entry><title>Talent is Overrated: What Separates World Class Performers</title><category term="Books"/><id>http://www.masonchang.com/blog/2010/4/6/talent-is-overrated-what-separates-world-class-performers.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/4/6/talent-is-overrated-what-separates-world-class-performers.html"/><author><name>Mason Chang</name></author><published>2010-04-06T19:54:32Z</published><updated>2010-04-06T19:54:32Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p><a href="http://www.amazon.com/Talent-Overrated-Separates-World-Class-Performers/dp/1591842247">Talent is Overrated</a> argues that in the endless nature versus nurture debate, at least when it comes to traditional definitions of success, is over. Nurture wins.</p>
<p>The book claims that to reach the great heights, to do the game changing work, talent doesn't really matter. Intelligence doesn't matter. Hard work matters. You need about 10,000 hours (or roughly 10 years) of dedicated, deliberate practice before you can even begin to start doing great work. Talent only helps you in the very beginning. In the end, it's all about hard work. Across all fields, across time, no one who ever did great work ever achieved it without at least ten years of practice.</p>
<p>Even though Mozart started composing music at an early age, all of his most famous pieces were created after he turned 19. He only started learning music at an age of three because his father was a musician, not because of some innate skill. He had to work 16 years before anything great was accomplished.</p>
<p>It also doesn't matter if you just work hard. You have to do deliberate practice, specific practice to improve a small portion of the overall picture. Tiger Woods spent hundreds of hours hitting balls in sand, even though it rarely occurs in real games. Benjamin Franklin learned prose by taking an idea, expressing the idea in his own sentence, then comparing that sentence with the same idea expressed in the classics. This is targeted work to practice one small specific skill.</p>
<p>While anyone can do the necessary hard preparation work to do great work, few have the resources to do it. The passion to put in the hours has to be put into someone, usually the parents. The roadmap to start targeted practice has to be developed by a mentor. The support network to actually push someone, to give them the necessarymotivation, has to be built over years before someone can actually start managing themselves.</p>
<p>This notion actually made me start to wonder. When hiring, instead of looking at people in their current state, we should simply look for one attribute: Do they constantly improve themselves? Perhaps if they are constantly getting better, and can articulate what they have done to specifically improve some skill, that person may be able to contribute leaps and bounds more than someone who may currently know more but has stopped improving. This is especially important as hiring is probably the one of the most important things an organization needs to do.</p>
<p>Overall, Talent is Overrated presents an interesting premise, one that invigorates you to start working towards great work.</p>]]></content></entry><entry><title>Have tracing JIT compilers won - notes</title><category term="Better Know a Virtual Machine"/><id>http://www.masonchang.com/blog/2010/3/12/have-tracing-jit-compilers-won-notes.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/3/12/have-tracing-jit-compilers-won-notes.html"/><author><name>Mason Chang</name></author><published>2010-03-12T18:42:54Z</published><updated>2010-03-12T18:42:54Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>There is a really <a href="http://lambda-the-ultimate.org/node/3851">awesome discussion on whether or not trace compilers have "won"</a>&nbsp;at Lambda the Ultimate. It's pretty dense so here's some background information and synopsis to help follow.</p>
<p>All the comments center on how to pair trace compilation with other execution techniques (e.g. method at a time compilation, interpretation). There's a bit of tracing background required to fully understand everything. The basic problem with tracing is that it fails when you have really branchy code. If you try to "stay on a trace" (stay in JIT compiled code instead of switching to a different execution technique), you'll lose overall because you'll be spending time compiling code instead of making forward progress on the actual application. You'll also explode your code cache and there will be a ton of useless traces laying in memory.</p>
<p><a href="http://lambda-the-ultimate.org/node/3851#comment-57639">Thomas Lord's analysis</a>&nbsp;is spot on. His basic premise is that tracing is great in specific cases. However, a VM needs multiple compilation strategies. Also, it's really difficult to create the "best" code. There are lots of ways to profile the running code and trying to find out some algorithm that can detect what the most optimal code is, but it's hard. I agree with him when he says that it will be very difficult to find the most optimal code. There is a pretty <a href="http://itkovian.net/base/files/papers/cgo2010-hoste-preprint.pdf">cool paper at CGO 2010 about solving this problem</a>.</p>
<p><a href="http://compilers.cs.ucla.edu/titzer/">Ben Titzer</a> and <a href="http://andreasgal.wordpress.com/">Andreas Gal</a> discuss <a href="http://lambda-the-ultimate.org/node/3851#comment-57746">traditional compilation vs trace compilation</a> as a whole, and in what situations a trace compiler will be relevant. <a href="http://weblogs.mozillazine.org/roadmap/">Brendan Eich</a> backs up the idea that trace compilation is a <a href="http://lambda-the-ultimate.org/node/3851#comment-57649">viable compilation strategy</a>. Android uses trace trees which unlike dynamo, connects multiple traces together at a singe point. The bottom line is when traces work, they work really well.&nbsp;</p>
<p>That's when Mike Pall, the creator of <a href="http://luajit.org/">LuaJIT</a>, <a href="http://lambda-the-ultimate.org/node/3851#comment-57643">chimes in</a>. Generally, LuaJIT is considered to be one of the fastest, if not the fastest, dynamic language VM. The links in that specific post are very interesting and relevant. LuaJIT has a really fast interpreter with a trace compiler on top. The resulting subthread is the most interesting.&nbsp;</p>
<p>Peter proposes tracing native code. Mike says that instead of tracing native code, you should just make a really fast interpreter and add a tracing JIT on top. Mike thinks that having three execution engines (interpreter, method JIT, and a tracing JIT) is too complicated. Brendan agrees and says all you really need is a generic method JIT and a tracing JIT on top. Also, PICs are <a href="http://en.wikipedia.org/wiki/Inline_caching#Polymorphic_inline_caching">polymorphic inline caches</a>&nbsp;and are pretty much used by everyone. At this point, the subthread moves onto having a method + tracing JIT and how can you trace the generic method JIT code. In my opinion, a generic method JIT + tracing JIT on top is the way to go. LuaJIT takes the approach of the <a href="http://lambda-the-ultimate.org/node/3851#comment-57761">fast interpreter + trace compiler route</a>.&nbsp;</p>
<p>Another interesting note Brendan brings up is to <a href="http://lambda-the-ultimate.org/node/3851#comment-57671">get a simpler language</a>. Brendan's main argument about LuaJIT is that it traces a lot less code than TraceMonkey does because Lua is simpler. This is where a fundamental issue with tracing comes up. What kind of heuristics do you need to decide when you should trace something versus staying in generic slower code? If you keep jumping out of traces you lose. Brendan seems to be taking the position that you should try to trace more code.&nbsp;</p>
<p>Mike Pall thinks it's better to have a really fast baseline and <a href="http://lambda-the-ultimate.org/node/3851#comment-57679">trace when you can guarantee a performance improvement</a>. He thinks trace trees are too complicated without any real performance gain. LuaJIT takes a bunch of traces and sticks them together wherever they appear. Trace trees must be linked at the same program location. Mike argues that trace trees only win if you recompile all the traces together to optimize them together. However, in the context of the web, the delay of recompiling everything is too severe and so nobody does it. I really like his idea of cross-trace register coalescing - putting values into registers that are known across traces. This makes switching between traces a lot faster and solves a real fundamental issue UC Irvine had with traces. Trace nesting is having a trace tree as part of another trace tree (inner loops). Brendan seems to agree that sticking traces together <a href="http://lambda-the-ultimate.org/node/3851#comment-57693">whenever they connect is the way to go</a>, but trace trees are useful somtimes. This is also where Brendan comments <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=411630#c2">about the complexity of JavaScript compared to Lua comes in</a>.&nbsp;</p>
<p>As a random tangent, <a href="http://lambda-the-ultimate.org/node/3851#comment-57700">Lius Gonzalez talks about PyPy</a>. <a href="http://codespeak.net/pypy/dist/pypy/doc/">PyPy tries to be a VM for all languages</a>. It has an interpreter that executes a target application programming language. They then <a href="http://codespeak.net/svn/pypy/extradoc/talk/icooolps2009/bolz-tracing-jit-final.pdf">trace the internal PyPy interpreter loop</a> to optimize the application programming language. This is a lot like Scott Peterson's (from Adobe) work. Alexander Yermolovich interned with Scott in 2008 and wrote a paper on it (<a href="http://portal.acm.org/citation.cfm?id=1640134.1640147">Optimization of dynamic languages using hierarchical layering of virtual machines</a>). They took the Lua VM (not LuaJIT I think), ran it through <a href="http://labs.adobe.com/technologies/alchemy/">Alchemy</a>, and then ran it on top of Tamarin-Tracing.&nbsp;</p>
<p>Mike Pall responds&nbsp;<a href="http://lambda-the-ultimate.org/node/3851#comment-57701">saying that the layers add up</a>. The most interesting is point #3, where PyPy loses all the high level information, limiting their ability to optimize the application code. I think this is generally true. ABC and LIR in NanoJIT suffer from the same problem.&nbsp;</p>
<p>Some of the small notes come with <a href="http://lambda-the-ultimate.org/node/3851#comment-57656">tracing through the browser</a>. I think Andreas Gal was talking about this a while ago. Large swaths of Firefox's UI is written in JavaScript so it's actually a very important issue for them. I can't quite follow the whole Membranes discussion.&nbsp;</p>
<p>Another thought is whether or not it's possible to write a <a href="http://lambda-the-ultimate.org/node/3851#comment-57658">metacircular tracing JIT</a>. <a href="http://michael.bebenita.com/">Michael Bebenita</a> is doing it with <a href="http://research.sun.com/projects/maxine/">Maxine</a>. He's hitting the same problem as everyone else which is what you should trace instead of doing another compilation technique. The basic premise is that when you have a method JIT, you really have to restrict your traces because you're going to win a lot less often than you would if you only have an interpreter. In fact if you trace too much, you're going to lose really fast.&nbsp;</p>
<p>Finally, a few random notes that date back to Tamarin-Tracing. When I first interned at Adobe, Edwin Smith actually tasked me to trace native code. At the time I didn't know it, but I implemented a call threaded interpreter. What we found out was that switching from one machine code frame to another is really expensive. I'm sure we could've solved the problem, but Tamarin-Tracing was already canceled. At the moment, my mind is blown realizing that a lot of the problems with Tamarin-Tracing are coming back up on this thread.&nbsp;</p>
<p>The bottom line is that everyone agrees you need some other kind of execution mechanism and a trace compiler on top. The unsettled questions are:</p>
<div></div>
<div>1) Should you pair a trace compiler with a really fast interpreter or a generic method at a time JIT.&nbsp;</div>
<div id="_mcePaste">2) What and how much should you trace.&nbsp;</div>
<p>&nbsp;</p>
<p>Whew, I hope that helped. There are lots of interesting tangents, but I tried to focus on the tracing aspects of the post. Feel free to ask more questions if something is unclear.&nbsp;</p>
<p>&nbsp;</p>
<div>Mason</div>
<div></div>
<div style="font-size: 80%;"><em>* I'll post updates as the thread progresses.</em></div>
<div></div>
<div></div>]]></content></entry><entry><title>Where is Flash going?</title><id>http://www.masonchang.com/blog/2010/2/4/where-is-flash-going.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/2/4/where-is-flash-going.html"/><author><name>Mason Chang</name></author><published>2010-02-04T18:09:45Z</published><updated>2010-02-04T18:09:45Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>When you roam the online forums and look at the reaction of the iPad not having Flash, you can see two distinct camps. People are either angry because they can't use Flash or happy to see Flash not installed. Now with the iPad and the iPhone dominating the mobile market, more than ever, people are predicting that Flash will die.<br /><br />In some cases, the concerns are absolutely correct. The example everyone is using is video - and I personally agree that Flash should not be the dominant video player. Video should be an open standard because it's so integral to the web. It is in the HTML5 spec so that any browser implementor can play video. You're going to want to use HTML5 for video, for if not ALL video, at least most. Same with a few animations. Flash should die as the de facto video player. But the death of one application does not mean the death of a whole platform.<br /><br />If you look at Flash as a ubiquitous video player only, it really is all downhill. The real problem is that the platform almost hit 100% ubiquity. What's so sad is that once you hit 100%, you can only go down and that's what's overlooked. So yes, Flash will probably decline, but death? If Flash remains on 80% of all browsers, that's still a very impressive and quite alive platform. What Flash really needs to do then, is move away from playing video and displaying annoying ads, to becoming a platform to build applications.<br /><br />This brings up the question of whether or not there is room for Rich Internet Applications and extra plugins in general (Flash, SilverLight, Java FX, and Google Native Client). I don't pretend to be able to accurately predict the future, but history tells us developers are going to want to do something that HTML/AJAX/CSS can't do. That's why plugins were invented in the first place. All Adobe can do is make something awesome and try to court developers. So who will want to use Flash to build applications?<br /><br />Most web developers don't seem to care. One argument for Flash is that it streamlines the whole web application development workflow from start to finish. You don't need to mess with HTML, JavaScript, CSS, PHP, SQL, etc. However, this has been the case for a while and you still don't see that many developers jumping onto Flash, SilverLight, or Java FX. The pain of so many web technologies, of dealing with all the browser incompatabilities, isn't painful enough for people to jump aboard any of these plugin systems. The quality of developer tools don't seem compelling enough either. SilverLight's whole ecosystem is lightyears ahead of Flash's, yet few people jump to SilverLight. As a whole, web developers just don't want to deal with plugins unless they absolutely have to and only then they use Flash because it's installed everywhere. While the use of plugins in general will decline, the first choice will still be Flash.<br /><br />What about the big mobile web growth? There are mobile versions of web applications and there are native apps. There is a clear want for native applications on phones. The big elephant is the iPhone and it's descendants (iPod touch, iPad). While it doesn't support Flash, there is a hack around in Creative Suite 5 to have Flash applications on the iPhone. Every other phone will have native Flash. Near ubiquity on mobile platforms is a compelling case. Unlike the web where you have three main rendering engines (IE, Gecko, WebKit) that are all trying to implement some standard (IE 6 doesn't count), all the cell phones are completely different. Writing an application for a BlackBerry is completely different from an Android device. The "write once, run anywhere" may be worthwhile on mobile and that's also where growth is. I can see many developers saying it's nice that I only have to write three types of applications instead of a billion: A normal web app with PHP, HTML, etc, an iPhone app, and an <a href="http://arstechnica.com/gadgets/news/2009/10/flash-101-coming-to-just-about-every-platform-but-iphone.ars">everyone else application</a> in Flash. At least it stops at three.<br /><br />Lastly, the market Adobe targets are the designers and content creators. Adobe's products let content creators focus on making content, not coding. Designers should not have to know anything at all about code period. Only the more advanced users, who want to do something that can't be done in the regular toolset should have to look at code. Then they should have the ability to tinker with it. As long as Adobe focuses on letting content creators create, Adobe wins. Adobe makes money off tools with no clear competitors. There is nothing out there that says Adobe can't have two buttons on all the designer tools: publish to HTML5 if thats all they need. If they want to do something HTML doesn't support, have a "Publish to Flash" button. I actually see this being an amazing selling point.<br /><br />When you look at Flash as a pure video player and if the world revolves around the iPhone, it does look like Flash is starting the slow spiral to irrelevance. Realistically Flash is probably not going to remain the dominant video player, but it is going to be on everything but the iPhone - quite a big difference than death. The real question then, is what new areas will Flash be used in, and will it be awesome enough to attract anyone? As a partial Flash VM developer, I find it quite interesting. It frees me to start looking at markets that Flash may never have been used in before. Server Flash? Can it compete with PHP or ASP.NET? Can I install it on my TV and play some games? If Flash isn't constrained to annoying ads and a video player, where could it go? How does Flash give content creators awesome ways to display their great work in a fluid manner? That's a much more interesting question than asking "how can we save Flash?".</p>
<p>Other Opinions:</p>
<ul>
<li>Daring Fireball <a href="http://daringfireball.net/2010/01/apple_adobe_flash">here</a>, <a href="http://daringfireball.net/2010/01/blue_boxes">here</a>, and <a href="http://daringfireball.net/2009/12/html5_video_unusable">here</a></li>
<li><a href="http://www.cinchcast.com/scobleizer/20299">Rober Scoblet and Luke Kilpatrick</a></li>
<li><a href="http://blogs.adobe.com/conversations/2010/02/open_access_to_content_and_app.html">Adobe CTO Kevin Lynch</a> and <a href="http://www.techcrunch.com/2010/02/02/adobe-cto-kevin-lynch-defends-flash/">TechCrunch's response</a></li>
<li><a href="http://blogs.adobe.com/jnack/2010/01/sympathy_for_the_devil.html">John Nack on Adobe</a></li>
</ul>
<p>Random Notes:</p>
<ul>
<li>Tamarin is the virtual machine inside Flash. <a href="https://developer.mozilla.org/en/Tamarin">The VM is all open source</a>.</li>
<li>Most of the Tamarin team develops on the mac. I'm the weird one who uses Windows.</li>
</ul>
<p>Disclaimer: I am a part time intern in Adobe's research lab (not product! I have no idea what product is doing.) working on the Tamarin VM. I'm also a student which lets me do things that may not be practical from a business perspective. All thoughts expressed are mine and mine alone (I'm sure there is some bias here). They do not represent Adobe or Adobe's position on anything. I don't have any insider knowledge nor influence as to what Flash is going to be doing. And no I was not asked nor paid to write this post by anyone at Adobe.</p>]]></content></entry><entry><title>The Real Value of an Internship</title><id>http://www.masonchang.com/blog/2010/2/1/the-real-value-of-an-internship.html</id><link rel="alternate" type="text/html" href="http://www.masonchang.com/blog/2010/2/1/the-real-value-of-an-internship.html"/><author><name>Mason Chang</name></author><published>2010-02-02T06:25:22Z</published><updated>2010-02-02T06:25:22Z</updated><content type="html" xml:lang="en-US"><![CDATA[<p>New Essay up on what an internship is really for.</p>
<blockquote>
<p>Most people assume that the most valuable thing you get out of an internship is a full time job once you graduate. While I'd be silly not to assume that a full time job is extremely valuable, especially with 10% unemployment, there is a second more valuable aspect: The ability to explore.</p>
</blockquote>
<p>Check it out <a href="http://www.masonchang.com/essays/2010/2/1/the-real-value-of-an-internship.html">here</a>.</p>]]></content></entry></feed>