tag:blogger.com,1999:blog-58042799505648689272024-03-13T14:58:58.827-07:00BaliguUnknownnoreply@blogger.comBlogger22125tag:blogger.com,1999:blog-5804279950564868927.post-19544865137181657312022-10-06T08:59:00.002-07:002022-10-06T08:59:07.740-07:00Two Flexbox Basics<p>Flexbox lets you lay out page elements similar to the boxes & springs approach used by other frameworks.</p><p>To turn it on set <span style="font-family: courier;">style="display:flex;"</span><span style="font-family: inherit;">wherever you'd like to use it. This can be the entire </span><span style="font-family: courier;"><body></span><span style="font-family: inherit;"> or just a </span><span style="font-family: courier;"><div></span><span style="font-family: inherit;">. Flex layout will now apply to any elements within this element. You can think of these child elements like the boxes from boxes & springs.</span></p><p><span style="font-family: inherit;">To add springs use justify-content. It puts springs in the places you'll most likely want them with the values space-evenly, space-between, and space-around.</span></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-68357460227345895262019-06-13T20:13:00.003-07:002019-06-13T20:13:12.269-07:00Unix/Linux LineageI created a diagram to better understand Unix/Linux lineage. Posting incase it's useful to others. The other ones out there were way too complicated for my purpose.<br />
<br />
<a href="http://1.bp.blogspot.com/-VeC4Zo9yPrQ/XQMQrCXnZfI/AAAAAAAAEDU/KjhhLgqR0SAW2SPEH-jUq8UKj2j1q63_ACK4BGAYYCw/s1600/unix-lineage.png" imageanchor="1"><img border="0" height="480" src="https://1.bp.blogspot.com/-VeC4Zo9yPrQ/XQMQrCXnZfI/AAAAAAAAEDU/KjhhLgqR0SAW2SPEH-jUq8UKj2j1q63_ACK4BGAYYCw/s640/unix-lineage.png" width="640" /></a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-90652872297009954962017-10-10T22:39:00.003-07:002017-10-10T22:39:42.978-07:00<a href="http://www.pitivi.org/manual/codecscontainers.html">Understanding codecs and containers</a><br />
<br />
This is a useful article for understanding video formats.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-37847975020611464212017-07-11T03:22:00.003-07:002023-03-17T15:41:41.781-07:00In Search of the World's Greatest Beach<div>This has been moved to:</div><div><a href="https://www.baligu.com/beaches.html">https://www.baligu.com/beaches.html</a></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-68055013569930067522016-01-22T18:44:00.001-08:002016-01-24T09:54:49.290-08:00The Best Javascript Autocomplete Libraries Analysis and RoundupI run a timezone conversion <a href="http://www.thetimezoneconverter.com/">website</a> that has text fields for selecting the locations that you want to convert times between. There's a list of hundreds of common cities for people to choose. I created the site over 5 years ago and made a "Show HN" out of it (this was before there was Product Hunt, and even before there was "Show HN". Back then we called it a "weekend project").<br />
<div>
<br /></div>
<div>
The location text fields use an autocomplete library I chose in the beginning and haven't updated since. These fields aren't working well in Android Chrome and I've been getting a steady stream of emails from users complaining simply that the site "didn't work". An aside, if only everyone knew that when you report a web problem please say your browser, OS, and then both expected and actual behavior.</div>
<div>
<br /></div>
<div>
I decided to do some research on the top Javascript autocomplete libraries. There's <a href="http://techslides.com/list-of-autocomplete-plugins-and-libraries">tons</a> so I tried to focus on the major ones. Here are my rough notes.</div>
<div>
<br />
My top two criteria were that the library be:<br />
<ul>
<li>Actively maintained or generally popular</li>
<li>Have desktop and mobile browser support</li>
</ul>
</div>
<div>
<b><a href="https://select2.github.io/">Select2</a> (active since 2012 / browser: all modern browsers)</b><br />
Although mobile browser support isn't specifically mentioned in the docs, I tested this on iPhone and Android and found they work just fine. This one handles tags. It's got a long history (up to version 4 and started in 2012).<br />
<br />
Because of these positives I went ahead and tried using it within my site. I quickly learned two things. First, it's difficult to customize the styling. Although it doesn't list Bootstrap as a dependency, you realistically need to include it to get things to look right. And then figuring out which classes you need to override to further tweak the appearance is not easy.<br />
<br />
The second is questionably performance. All of the examples on their site use the 50 US States, but I tried throwing 1500 options at it and although things seemed ok on my 5 year old laptop and iPhone, a weaker Android tablet took 1-2 seconds between a tap on the control and displaying the dropdown.<br />
<br />
<div>
<b><a href="http://selectize.github.io/selectize.js/">Selectize.js</a> (active since 2012 / browsers: ?)</b><br />
Selectize has a large number of forks on GitHub. It has touch (mobile browser) support and goes back to IE8 with a shim. It was developed by Brian Reavis. It's pretty full feature with a specialization in tags (the blue rounded rectangles frequently found in autocomplete fields). It goes back to 2012 and has been actively maintained since.<br />
<br /></div>
<div>
</div>
<b>Typeahead.js (last active April 2015 / mobile browsers untested)</b></div>
<div>
It ranks highly in Google searches, so that must mean something. The demo on their homepage is impressive. It's got a nice UI, handles boundary cases well like typing meta keys during a search, and originally came from Twitter. All good signs. The bad news. Releases seem to have slowed down with the most recent being April 2015, before hitting 1.0. It's not tested in mobile browsers, although worked in my casual Mobile Safari test.</div>
<div>
<br />
<b><a href="https://github.com/devbridge/jQuery-Autocomplete">Ajax Autocomplete for jQuery</a> (recent maintenance / browsers: ?)</b></div>
<div>
Written by Tomas Kirda this is different than the autocomplete widget that is included in jQuery UI. It has lots of initialization options. The most recent commit was November 2015.<br />
<br />
<a href="http://jqueryui.com/autocomplete/">jQuery UI Autocomplete Widget</a> (active maintenance / browser: only desktop)<br />
This is the official widget included with jQuery UI (jQuery UI is a curated set of UI widgets built on top of plain old jQuery). It's autocomplete functionality is pretty basic. The library is actively maintained but it's browser support only seems to imply desktop browsers and not mobile.<br />
<br />
<b><a href="http://harvesthq.github.io/chosen/">Chosen</a> (active / browser: explicitly no mobile)</b><br />
This one seemed great until the lack of mobile browser support.<br />
<br />
Inactive libraries I didn't spend much time looking at: <a href="http://aehlke.github.io/tag-it/">Tag-it</a>, <b>Completely</b><br />
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-47645572110816316912015-07-28T00:00:00.002-07:002015-07-28T00:00:55.798-07:00Minimal Bootstrap "Hello World"I hadn't checked out Bootstrap in a while, but came back to it this weekend while working on a side project. I re-read its <a href="http://getbootstrap.com/getting-started/">getting started guide</a> and found that their "hello world" was still too complex for my taste. It included cruft for IE8 support and required uploading extra files to my server.<br />
<br />
So I present my own, further slimmed down, version of a Bootstrap hello world example. Bootstrap tells us that all of these lines are necessary:<br />
<pre style="background: rgb(255, 255, 255);"><span style="color: #004a43;"></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">html</span><span style="color: #274796;"> </span><span style="color: #074726;">lang</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"en"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">head</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">meta</span><span style="color: #274796;"> </span><span style="color: #074726;">charset</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"utf-8"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">meta</span><span style="color: #274796;"> </span><span style="color: #074726;">http-equiv</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"X-UA-Compatible"</span><span style="color: #274796;"> </span><span style="color: #074726;">content</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"IE=edge"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">meta</span><span style="color: #274796;"> </span><span style="color: #074726;">name</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"viewport"</span><span style="color: #274796;"> </span><span style="color: #074726;">content</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"width=device-width, initial-scale=1"</span><span style="color: #a65700;">></span></pre>
<div class="p1">
<br /></div>
<div class="p1">
We then need to include the minified Bootstrap CSS file and a default theme.</div>
<pre style="background: rgb(255, 255, 255);"><span style="color: dimgrey;"> <!-- Bootstrap --></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">link</span><span style="color: #274796;"> </span><span style="color: #074726;">rel</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"stylesheet"</span><span style="color: #274796;"> </span><span style="color: #074726;">href</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"><</span><span style="color: maroon; font-weight: bold;">link</span><span style="color: #274796;"> </span><span style="color: #074726;">rel</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"stylesheet"</span><span style="color: #274796;"> </span><span style="color: #074726;">href</span><span style="color: #808030;">=</span><span style="color: #0000e6;">"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"</span><span style="color: #a65700;">></span>
<span style="color: #a65700;"></</span><span style="color: maroon; font-weight: bold;">head</span><span style="color: #a65700;">></span></pre>
<div class="p2">
<span class="s1"></span><br /></div>
<div class="p2">
I'm using Bootstrap's recommended CDN so there's no need to upload extra files to my own server. Finally, our body includes one simple container with two example columns, and the minified required .js files.</div>
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">body</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">class</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">container</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">h1</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">Hello, world!</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">h1</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">class</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">row</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">class</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">col-md-6</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">.col-md-6</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">class</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">col-md-6</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">.col-md-6</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">div</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">script</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">src</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">script</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white; color: #5f5035;">script</span><span style="background-color: white;"> </span><span style="background-color: white; color: #274796;">src</span><span style="background-color: white; color: #808030;">=</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #0000e6;">https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js</span><span style="background-color: white; color: maroon;">"</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">script</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"></</span><span style="background-color: white; color: #5f5035;">body</span><span style="background-color: white; color: #a65700;">></span><span style="background-color: white;">
</span><span style="background-color: white; color: #a65700;"><</span><span style="background-color: white;">/html></span></pre>
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><span style="font-family: Times; white-space: normal;">An important note is that I've stripped out elements needed for IE8 support. I also haven't had the chance yet to test this template in IE.</span></pre>
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><span style="font-family: Times; white-space: normal;">
</span></pre>
<pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;"><span style="font-family: Times; white-space: normal;">
</span></pre>
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-9322949180842434602015-07-20T09:59:00.000-07:002015-07-20T09:59:31.478-07:00Don't give up?Not an amazing article, but short enough to be worth recommending:<br />
<blockquote class="tr_bq">
There’s actually a good name for this in the realm of psychology. It’s called “goal disengagement,” and it’s actually a good thing when you get older. A 2011 study on the topic ... found that a willingness to give up goals that were no longer attainable actually helped decrease depression in the elderly. </blockquote>
<blockquote class="tr_bq">
<a href="http://www.atlasobscura.com/articles/the-art-of-quitting">http://www.atlasobscura.com/articles/the-art-of-quitting</a></blockquote>
It doesn't necessarily support the point made in my <a href="http://baligu.blogspot.com/2015/07/you-cant-fail-if-you-dont-give-up.html">previous post</a> but provides incentive and a rational explanation for not persevering beyond the point of failure.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-44754216353559464062015-07-14T01:57:00.000-07:002015-07-28T14:37:15.837-07:00Failure and Giving Up<blockquote class="tr_bq">
You can't fail, if you don't give up. -- Stephen in The Last Kiss</blockquote>
It's a "deep" statement that isn't obviously true or false.<br />
<br />
There's an entrepreneur I know who has tried an idea that has clearly failed. It's failed due to a combination of it not being needed enough and other people doing it better. I don't know which is the killer of his implementation, but one of them is. This person has still not realized that their version won't ever be enough or that it fails to beat competitors' versions. Yet they keep trying. They've failed, but they have not given up.<br />
<br />
Here are some signs that tell me they've failed:<br />
<ul>
<li>It's been a long time. The person has been at it for 8+ years. Set a deadline for yourself. If it's over some reasonable amount of time, you're probably deluding yourself.</li>
<li>Failure is ignored. The person has already achieved failure. The product has no adoption after repeated attempts. There's no revenue, no recent investment, nothing. The world is saying he's failed but the person is ignoring it. Set metrics for yourself. If you haven't achieved them, you've probably failed.</li>
</ul>
<div>
But here's how the original quote could be true. The most successful founders are "relentlessly resourceful" [<a href="http://www.paulgraham.com/relres.html">PG's great essay</a>]. They are relentless. They do something which is resisted. It doesn't matter how long it's been. It doesn't matter how many signs paint a picture of failure. If they believe, they can make it true. </div>
<div>
<ul>
<li>Maybe you haven't tried for long enough to figure out if the market wants your product. Maybe, with just the right change, growth will accelerate and you'll find product market fit.</li>
<li>In the movie the quote is from, this problem is considered in a personal context. You've waited on her doorstep for hours. But maybe it takes days. She's told you there's no hope. But maybe she doesn't mean it. Or maybe she means it but doesn't realize that there is hope, and she just doesn't know it yet.</li>
</ul>
</div>
<div>
The problem is, the statements supporting the original quote being true are silly graduation-speech-style stupid self-help statements. In reality, there are thousands of people who believe they can overcome failure but actually can't. They simply morph what they were originally believing into something different, and fool themselves about their original belief.</div>
<div>
<br /></div>
<div>
It's the pessimist in me... but you can fail even if you don't give up. The original statement is not true.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-18246977501379049542012-08-01T00:04:00.003-07:002012-08-01T01:18:39.071-07:00Craigslist now asks for exclusive license when posting<br />
I don't remember seeing this before at the bottom of the Craigslist posting form. I'm guessing this is the result of the Padmapper debacle? (bolding mine)<br />
<blockquote class="tr_bq">
Clicking "Continue" confirms that craigslist is the <b>exclusive licensee</b> of this content, with the exclusive right to enforce copyrights against anyone copying, republishing, distributing or preparing derivative works without its consent.</blockquote>
<br />
For comparison, here's Yelp's language:<br />
<blockquote class="tr_bq">
As such, you hereby irrevocably grant us world-wide, <b>non-exclusive</b>, royalty-free, sublicensable, transferable rights to use Your Content for any purpose.</blockquote>
And Facebook's:<br />
<blockquote class="tr_bq">
you specifically give us the following permission, subject to your privacy and application settings: you grant us a <b>non-exclusive</b>, transferable, sub-licensable, royalty-free, worldwide license to use any IP content that you post on or in connection with Facebook</blockquote>
Google:<br />
<blockquote class="tr_bq">
When you upload or otherwise submit content to our Services, you give Google (and those we work with) a <b>worldwide license</b> to use, host, store, reproduce, modify, create derivative works, communicate, publish, publicly perform, publicly display and distribute such content. </blockquote>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-5804279950564868927.post-88295692361568227112012-07-14T18:57:00.000-07:002012-07-16T19:22:14.005-07:00Do you know anyone who...?In the business world, the question "do you know anyone who..." must get asked thousands of times a day. Do you know anyone who... can program? Would be interested in investing? Would be a good fit for this position? Is looking for a job and has this particular skill and background?<br />
<br />
I personally get asked this question several times a week. Most of the time it's by a business contact that I'm either friends with or have recently met. Sometimes the question is code for "Are <i>you</i> interested?" But most of the time, when it's used in that way, the sentiment comes bundled with "well if you aren't, do you know someone who might be that you'd recommend?"<br />
<br />
Whenever I get asked this question, I struggle to think of names on the spot and often promise that I'll "keep them in mind" afterwards and send anyone I know their way. Although I try to follow-through on this commitment I almost always feel like I'm letting the person down afterwards. In my address book are 728 entries and I probably "know" several more thousand people in Silicon Valley alone.<br />
<br />
Not only can I not remember everyone I know, an equally hard if not harder problem is that I don't know what they're all up to. Each person is in a different state of their career progression and while I might know someone with the right skill set to answer the "do you know someone" question getting that person <i>at the right time</i> is difficult.<br />
<br />
In a sense, answering this question is an information retrieval problem. The field of information retrieval has the notion of <a href="http://en.wikipedia.org/wiki/Precision_and_recall">precision versus recall</a>. When people struggle to answer this question they're primarily facing a recall not a precision deficit. In other words, the people they're able to remember are probably pretty good fits (no false positives) but they are likely missing many individuals who would make good candidates (many false negatives).<br />
<br />
Why are so many missing? For two big reasons: they can't remember people or they don't know if a person would be a good fit. They're both large components of why the question is tough to answer and I'm not sure which is the larger factor. The first reason is a consequence of how the human brain works. It just isn't made like a computer database, able to lookup thousands of entries in milliseconds by a particular criteria. The second is the lack of perfect information. You might remember that Jane would be a good fit for a particular position, but is she looking for a job right now? Or is she happy as a product manager at Facebook.<br />
<br />
Finally, even if you have remembered someone and have recently spoken to them (thus having perfect information) the actual assessment of whether they match the criteria asked in the question is a difficult and fuzzy one. Would an engineer who became a product manager be a good fit for a role at a venture capital firm? It depends. Notice how this assessment of relevance is more complex than picking a restaurant, where the most important relevant factors are likely only location, price, food type, and star rating.<br />
<br />
To summarize, why is answering the question "do you know anyone who..." difficult:<br />
<br />
<ol>
<li>Recall - it's impossible to remember everyone you know, especially when trying to filter according to a particular criteria. Your brain isn't designed to sort through thousands of entries and find the correct ones.</li>
<li>Missing or outdated information - even if you remember a person, you might not know that they're looking for a job, unhappy in their current position, or would be enticed by a new role. What's worse, this information is constantly in flux. You might have checked in with a person a two months ago but now they've found a new job.</li>
<li>Complex criteria matching - assuming you've remembered a person and have perfect information about their situation, making an assessment about how well they satisfy the criteria of the question is a difficult one. </li>
</ol>
<div>
I personally don't like the feeling of not living up to my commitments. I also like the feeling of genuinely having helped someone else out. The solid referrals I've made in the past are some of the more emotionally rewarding "favors" I've been able to perform.</div>
<div>
<br /></div>
<div>
Some of my recent brainstorming has been around building a tool that would better help me (and hopefully many others) better answer this common question. And I believe before thinking about solutions it's best to understand deeply the problems associated with answering it.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-73238095375497334882011-08-25T06:09:00.000-07:002012-01-07T15:20:24.715-08:00My one question for Steve Jobs in 2001<blockquote>I’ll always stay connected with Apple. I hope that throughout my life I’ll sort of have the thread of my life and the thread of Apple weave in and out of each other, like a tapestry. There may be a few years when I’m not there, but I’ll always come back. [Playboy, Feb. 1, 1985]</blockquote><br />
I've had two personal encounters in my life with Steve Jobs. The first was in 1997 when my parents forced me to stalk him after a Cirque du Solei show in San Francisco and I shook his hand. I wouldn't recommend doing this to any famous person, although in my parents' defense Steve wasn't as famous back then except to fanboys like me.<br />
<br />
The second encounter, however, happened 4 years later at Apple in the summer of 2001. I was an intern there and one day the head of the intern program gathered the almost 100 interns into the Town Hall auditorium in Infinite Loop 4 for a "surprise guest speaker" that wasn't really much of a surprise: Steve Jobs.<br />
<br />
The meeting had no agenda but I had a hunch that when Steve (everyone who has ever worked at Apple just calls him "Steve") ended his remarks there would be a Q&A session. My mind started racing. This was probably going to be the one time in my life when I would have the chance to ask Steve Jobs a question and get a reply. This has *got* to be a good question. This was like getting a chance to shoot a basket with Michael Jordan, you want to take a good shot.<br />
<br />
I can't remember exactly the questions that I decided against, but I remember specifically thinking that I wanted to ask something that hadn't been captured in the numerous books I had read about Apple's history. Something Macworld magazine hadn't reported on. Something Steve hadn't talked about in the press before. And something personal to him. The other interns, disappointingly to me, were asking questions more about the company like "Is Apple ever going to go after the enterprise market?" (Steve's response, a refreshing "If you're interested in that, you're probably at the wrong company.")<br />
<br />
Steve got to about his 4th question from the audience and by this point almost every single intern had their hand up. He gestured in my direction but I could tell he was actually looking at an intern in the row right in front of me. I got a bit aggressive and barged ahead with my question anyway before the other intern could begin. Steve smiled a bit in apology to the intern I had just trampled over but let me continue.<br />
<br />
I was nervous. "Steve, many years ago you left Apple to start Next. But recently you returned to Apple. Why did you come back to Apple?" I could be filling in false details, but I remember Steve thinking for a moment with his characteristic "fingertip pressed together downward glance". He then proceeded to give a two part answer.<br />
<br />
The first part of his answer I've completely forgotten because it seemed to be a canned spiel that he had used before. It had something to do with Apple's products or mission. I started losing interest because it sounded like something I might have even heard Steve say before at a keynote. I felt a bit disappointed that my one chance to learn something new and unique about Steve was probably about to end.<br />
<br />
But then, as if to try again at my question, he added a second part to his answer.<br />
<br />
"When I was trying to decide whether to come back to Apple or not I struggled. I talked to a lot of people and got a lot of opinions. And then there I was, late one night, struggling with this and I called up a friend of mine at 2am. I said, 'should I come back, should I not?' and the friend replied, 'Steve, look. I don't give a fuck about Apple. Just make up your mind' and hung up. And it was in that moment that I realized I truly cared about Apple."<br />
<br />
When I was 5 I first played with an Apple II GS. And when I was 10 (or 12?) my parents got me a Macintosh IIsi, put it in my room, and subscribed me to Macworld magazine. Apple and Steve's work has been a part of my life for almost as long as I can remember.<br />
<br />
To bring a company that in 1997 was losing money and had changed CEOs nearly every year for many years in a row, to be the most valuable company in the world is a feat I'm not sure we'll ever witness again in our lifetimes.<br />
<br />
Steve managed to find work he loved and did it to the very best of his ability. It's a concept that sounds so simple but in practice is hard to do, but one that is worth striving for.<br />
<br />
<b>Update 1/7:</b> On page 315 of <i>Steve Jobs</i>, Walter Isaacson quotes Jobs telling the same story where he uses Andy Grove by name , instead of "a friend".Unknownnoreply@blogger.com21tag:blogger.com,1999:blog-5804279950564868927.post-24073974390018522322011-07-07T20:12:00.000-07:002011-07-07T20:21:21.199-07:00Code components not featuresA few days ago, I asked one of the "grey hairs" (experienced people) at my startup:<br />
<blockquote>Is it better to have engineers coding features or components? Should they work on a vertical slice, a feature, that cuts through many layers in the technical stack? Or instead, should they focus on one component in one layer of the stack?</blockquote><br />
I wasn't sure of the best answer, but the experienced-one recommended a <a href="http://framethink.wordpress.com/2011/07/07/crafting-code-across-the-stack-3-benefits-of-cross-technology-engineering/">one-engineer-per-feature approach</a>, especially for a startup. His argument cited greater individual motivation, higher functional quality of the feature, and faster iteration on the feature.<br />
<br />
They say an easy way to make a 50/50 decision is flipping a coin, and if it comes out heads and you're disappointed you know you should have decided on tails. So let me try to make the opposite case: <b>you should always have engineers work on just one particular component</b>, in one layer of the stack, and never on an entire feature. <br />
<br />
When you have a system, whatever system that might be (a company, a technology product, a team of people), the system will naturally have a tension between the goals of the individual parts of that system and the system as a whole. For example, the star hitter on a baseball team might want to go for a homerun everytime to improve his stats. But sometimes, it's best if they only go for a single because the team needs another man on base.<br />
<br />
A tech startup has two big systems: the product itself and the team creating the product. Happier teams make better products so we'll focus on optimizing the "team system" first. Where the post linked above goes wrong is here:<br />
<blockquote>Nothing is more motivating than feeling like your work really makes a difference.<br />
</blockquote>Programmers, however, aren't motivated by quantity they're motivated by quality.<br />
<br />
The quality of one's work is directly tied to one's self-esteem a trait <a href="http://en.wikipedia.org/wiki/Self-esteem#Basics">inherent to human nature</a>. A piece of code that is executed by a processor 750 million times isn't necessarily higher quality than a piece of code that is executed only once.<br />
<br />
The very idea of a startup is a perfect example of this principle. When you're writing code at a startup it will likely get used by <i>no one</i> at first. So the only motivation you have is making something that is high quality.<br />
<br />
Since about <a href="http://en.wikipedia.org/wiki/Object-oriented_programming#History">1960</a> the software world has agreed that producing high quality software requires breaking a system down into smaller parts. This isn't too surprising given the way large systems (like countries and corporations) have always been organized.<br />
<br />
It's easier to make one thing of high quality than ten things of high quality. And while an engineer might enjoy creating more rather than fewer high quality things ("Yay! Big contribution, I know I can do a good job on all of them!") it's going to be best for the system (the team) to have each person focus on making at least one thing of high quality first.<br />
<br />
This encourages better encapsulation, abstraction, and in the end a better product which can go on to lead a <a href="http://www.apple.com/">company</a> to becoming the second biggest in the entire world. It comes down to a focus on quality first and all else second that wins the day.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-5804279950564868927.post-65601686779193941242011-05-08T15:31:00.000-07:002011-05-30T00:28:08.767-07:00Kings, Addresses, and Facebook -or- Why We Don't Need Phone Numbers AnymoreWe've been using addresses to send messages for a long time but Facebook has made them obsolete. Our "identity" is our new address. We don't need e-mail addresses, phone numbers, or IM handles anymore but address books, strangely, might still be useful.<br />
<br />
Addresses sprang from the need of identifying someone within a crowd without a central directory. Before addresses, we didn't have the crowd or the central directory. In 1229 King Frederick II wrote a letter to King Henry III of England updating Henry about the latest news. When Frederick wrote that letter he probably just put Henry's name on an envelope, stamped it with wax, and then told a servant to deliver the message. Frederick didn't need an address because there wasn't a crowd - there weren't many people he could send a message to.<br />
<br />
The first widespread use of addresses in the US came about in 1775 when Benjamin Franklin formed the US Postal Service. Sending letters was brought to the masses and a system was standardized to move these sheets of paper around. You couldn't just write a person's name on an envelope anymore because the number of recipients went way up. The possible number of recipients went up because it became cheaper (and just plain possible physically) through the use of technology like trucks and roads to send a letter to anyone.<br />
<br />
Good old Frederick probably didn't have an address book but the first US citizens needed them because although they could remember who their friends were like the kings, they couldn't remember all those addresses. The old kings didn't need them since in their day addresses were the same thing as identity.<br />
<br />
With mailing addresses, your identity is still pretty close to your address since one is contained in the other. But once e-mail arrived "address" and "identity" fully separated for the first time. For once, a person could choose whether to reveal their identity as part of an address. I could choose to make my e-mail tactless@gmail.com or berger.jon@gmail.com for example, and still receive messages just the same either way.<br />
<br />
Finally, jump to current day. Facebook comes along and makes the old new again. Let's assume for a moment that Facebook reaches its goal of making everyone on the planet a user. Coupled with an excellent, graph-weighted people search (which it has) your identity ends up being your address again, just like with the medieval kings. Meaning, all you really have to know is someone's name to send them a message.<br />
<br />
Wait a second, what? So we're now all kings like Frederick where we can just scribble a name on a sheet of paper and hand that to our servant and trust it gets to the right person? Yes, essentially. Facebook is our servant and its almost perfect mapping of real people to accounts provides the infrastructure necessary to make this possible.<br />
<br />
Facebook messaging is a departure from e-mail precisely because it ties so strongly "identity" with messages and abandons "addresses". Facebook actively bans fake accounts, while Hotmail allows you to create as many as you'd like. <br />
<br />
If all it takes to message someone is their name, then it follows that the only people you can't message are people whose names you don't know. You know Barack Obama's name, and you can message him if he has his Facebook privacy settings at their default. OK, so famous people will likely want to alter their privacy settings, but for everyone else the rule still holds.<br />
<br />
But wait, you might say, what about the fact that you aren't friends with everyone on Facebook. Facebook lets you talk with your friends and since I'm not friends with everybody that's the real reason I can't message the President. It turns out Facebook's default privacy settings do allow you to message non-friends, they just restrict you from seeing personal things like photos you're tagged in and your email address and phone.<br />
<br />
You can message John Smith too. I know he has a common name and it'd be more helpful to have his address. But it's likely you met John Smith at a party, or a conference, or some real world event with real world relationships that Facebook knows about explicitly or implicitly and those allow him to pop up in that spiffy search right away.<br />
<br />
What about those pesky address books, things people hated anyways. Kings didn't need them, Benjamin Franklin and friends did, and since we're back to the "king situation" people on Facebook today don't need them again.<br />
<br />
Well, not quite. Address books just look much different. It's no longer a list of addresses. Rather, it changes to become a list of names. Your only task becomes remembering the names of people and how they are relevant to you rather than managing the addresses associated with them (or managing phone numbers which are just another type of address). You could try to just keep this list of names in your heads, but we meet so many people these days that's just not possible.<br />
<br />
And Facebook is definitely not good at this either. It only remembers a small subset of the people you'd really want in a modern address book. Which means Facebook can't be the end-all and be-all of our social world forever. Which is a good thing for Google, Apple, and all the startups and would-be startups just getting started.<br />
<br />
<hr>Thanks to Kartik L. and Andrew O. for providing feedback on this post.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-5804279950564868927.post-58223038909097347282011-01-18T20:23:00.000-08:002011-01-18T20:24:39.499-08:00Experiment in graphic design texturesI was inspired by Path's iPhone app to dabble in textures tonight. Here is the part of the iPhone app that I thought looked very pleasing to the eye:<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_Y57vzLQY55U/TTZi_Zdt8WI/AAAAAAAABD4/aVKiYlGGASw/s1600/photo.PNG" imageanchor="1" style="clear:left; margin-right:1em; margin-bottom:1em"><img border="0" height="254" width="320" src="http://3.bp.blogspot.com/_Y57vzLQY55U/TTZi_Zdt8WI/AAAAAAAABD4/aVKiYlGGASw/s320/photo.PNG" /></a></div><br />
And after downloading a few of the packs from http://tileabl.es/ and using a technique from <a href="http://www.game-artist.net/forums/spotlight-articles/892-tutorial-create-tileable-texutres.html">Game Artist</a> to colorize the texture, I ended up with this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_Y57vzLQY55U/TTZjY8ADU4I/AAAAAAAABEE/vusmpxh_4SU/s1600/test1_cropped.png" imageanchor="1" style="clear:left; margin-right:1em; margin-bottom:1em"><img border="0" height="144" width="320" src="http://3.bp.blogspot.com/_Y57vzLQY55U/TTZjY8ADU4I/AAAAAAAABEE/vusmpxh_4SU/s320/test1_cropped.png" /></a></div><br />
The rounded rectangle is intentionally different from Path's. Path's shadows give the impression that the profile picture appears at a layer in between the frontmost beige and the background brown texture. I thought this introduction of three separate planes was unnecessary and chose instead to have my rectangle float above both. While writing I realized I had also created three planes and so made another version with only two.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_Y57vzLQY55U/TTZm13qikdI/AAAAAAAABEM/YFLzEDqeZOg/s1600/test2.png" imageanchor="1" style="clear:left; margin-right:1em; margin-bottom:1em"><img border="0" height="131" width="320" src="http://2.bp.blogspot.com/_Y57vzLQY55U/TTZm13qikdI/AAAAAAAABEM/YFLzEDqeZOg/s320/test2.png" /></a></div><br />
Overall, I think my attempts look pretty good although the texture I'm using still isn't great. Path's looks more refined, sanded, smooth, polished, solid, slick, and less gritty, noticeable, and intrusive.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-80099195730778240302009-07-01T01:08:00.000-07:002009-07-01T01:10:36.231-07:00"Honor the voice of possibility that calls you."<i>Honor the voice of possibility that calls you. Notice what diminishes you and what brings you alive. Embrace your questions, treasures, and gifts with gratitude. Passionately commit to impossible causes. Love generously. Believe in your goodness and genius. And always - keep learning.</i><div><i><br /></i></div><div>Dr. Stephanie Pace Marshall, Spring 2007</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-27249739079808282522009-06-08T19:04:00.000-07:002012-07-14T19:04:42.866-07:00Be a scientist.(original publish date 6/9/09)<br />
<div>
<i>These remarks were delivered to the 8th Group at Avery Coonley School in Downers Grove, IL on June 3rd.</i></div>
<div>
<br /></div>
<div>
<div>
Dear guinea pigs, I asked my father for his sage wisdom on how to begin today, especially given his many years of experience in life and as a previous ACS graduation speaker himself. He thought for a moment with closed eyes, and then said, “Jonathan, I know how you can start. Start by saying, 8th group, LISTEN UP … YOU GRADUATES.”</div>
<div>
<br /></div>
<div>
8th Group, I have good and bad news for you today. The bad news is, I want to take a risk and run an experiment: I’m going to assign homework, to a graduating class during a commencement address. Yes, real homework. The good news, though, is that although technically, diplomas have not yet been awarded I don’t think I have the authority to withhold them, so the assignment will be solely for extra credit.</div>
<div>
</div>
<div>
With that out of the way, I wanted to take the chance to thank Mr. Barton for giving me the honor of speaking here today. Also, thank you to the larger ACS Family, faculty, parents, administrators, and Trustees, who literally make this all possible.</div>
<div>
<br /></div>
<div>
8th Group, please excuse one last order of business. I want to thank Mrs. Lenhardt. I get a bit emotional when I think about the effect you have had on my life. I remember you specifically in two roles during my time at ACS, first as leader of the student council, and second as my L.A. teacher. As you know Mrs. Lenhardt, I’ve always been more of a scientist than an artist, or even a “language artist”.</div>
<div>
<br /></div>
<div>
But if a student not finding his or her passion in the subject of a teacher is a sign that that teacher has failed, I want you to know Mrs. Lenhardt, that you have taught me more things about leadership and life to ever question your success as a teacher, things that have long outpaced my rather paltry skills in writing, and principles that I continue to treasure in my current endeavors.</div>
<div>
<br /></div>
<div>
8th Group. This day is about you. Congratulations to all, on a job well done! [applause]</div>
<div>
<br /></div>
<div>
I was lucky enough to chat briefly with a few of you yesterday, and Anna, your class president, informed me of your nickname as the “guinea pigs” or more affectionately the “gerbils.” I later asked a few members of the 7th Group about this name and they had never heard of it, so I’ve gathered in must be a mark of self-identity. It appears this “gerbils” term reaches all the way back to the 6th Group when you first received tablet computers as an experiment and the term relates to my message today.</div>
<div>
<br /></div>
<div>
My message today is, “be a scientist.” In my field of study, computers, we often strive to make messages short so they can be transmitted quickly, so I’ve chosen to boil this speech down to just those three words: “Be a scientist.”</div>
<div>
<br /></div>
<div>
I would guess that there are at least a few budding artists in the room that I may start to offend if I keep using the word “science” without also mentioning the “the arts.” So let me be clear: when I say “be a scientist” I don’t mean it in the literal sense that you need to become a physicist, chemist, or even to only study fields in the natural sciences. What I mean is to approach your academics, career, and life, as a scientist; that is, one who questions. Don’t take someone else’s word for it. Find your own truths.</div>
<div>
<br /></div>
<div>
Now 8th Group parents, I need to apologize. I know ACS is normally very good about permission slips. I remember in kindergarten having them literally pinned to our clothing as we went home. But I conducted an experiment on your children about 6 weeks ago, without permission.</div>
<div>
<br /></div>
<div>
I sent via e-mail three questions that I thought for sure would spur some interesting discussion and was completely surprised by the result of one of my questions. Of the responses I received, every single student answered “yes.” That question was, “can a scientist also be an artist?”</div>
<div>
<br /></div>
<div>
I thought I was so clever when I wrote this question, but each one of you very easily got the question right and if I may paraphrase, roughly said, “ofcourse Jonathan, you can be anything you want to be.” 8th Group, you have already taught me, in the course of running this experiment, that you have to ask the right questions.</div>
<div>
<br /></div>
<div>
So let me change the question a bit. High school will represent the first time you can choose your own classes through what are called electives. So what if I had asked, “In high school, if you had only one elective to take and the choice was science or art, which should you take?” how then, would you answer? I hopefully have made the question a bit more difficult. We have now a working purpose, or driving question for these remarks.</div>
<div>
<br /></div>
<div>
So let’s now try to answer this question just like a scientist collecting data. Let’s move from the left part of this backboard which contains the hypothesis, to the middle, where we find data.</div>
<div>
<br /></div>
<div>
I want to address both the scientists and artists in the room. But artists, let me first address you with a specific suggestion and scientists listen in too, because there’s a secondary relevant message.</div>
<div>
<br /></div>
<div>
My recommendation to you, artists is, “get a C, ++.”</div>
<div>
<br /></div>
<div>
When you get to high school don’t be afraid of taking a class where you might get a failing or less than desirable grade. Take a programming class like C++, for example, or at least one that is not in your comfort zone. I suggest this because in my experience, both have been helpful for growing in unexpected ways. Let me give an example.</div>
<div>
<br /></div>
<div>
I will admit, I was always good at tests and homework. In high school I found that among my peers I usually was able to do pretty well. I wouldn’t be at the top of the class, but I somehow managed to pull off decent grades consistently. </div>
<div>
<br /></div>
<div>
In college, I looked forward most to the classes that I could choose to take rather than the required classes that were part of a so-called “well rounded education.” Who needs that?! I thought, I just want to take the computer classes. An area I had a choice was foreign language and I thought to myself, I am so set. I can easily pass as I’ve had more years of French thanks to ACS than practically anyone else.</div>
<div>
<br /></div>
<div>
I took the placement test during the first week in school. I had to go into a dark booth, fill out a sheet of paper with a #2 pencil, and use a tape cassette player — do you still remember those? — to record my voice speaking French. A few days later I got the results:</div>
<div>
<br /></div>
<div>
FAILURE –take 2 more quarters of 1st year French, the sheet said.</div>
<div>
<br /></div>
<div>
Despite ACS’ excellent foundation in French, it’s a subject I have always struggled with for reasons still unknown to me. French was always out of my comfort zone but it did give me something I didn’t expect, a tool for connecting with other people around the world and an appreciation for different vocabularies, syntaxes, and grammars. Something I eventually put to use while learning a plethora of computer languages.</div>
<div>
<br /></div>
<div>
My main piece of advice is to take a class where you might fail. If you need a specific suggestion though, on what kind of class this should be, I’ll add one last detail. Take computer programming because I truly believe that over the course of the next century there will be no more important artistic medium to work in besides written computer code.</div>
<div>
<br /></div>
<div>
OK artists, hopefully I’ve convinced you to at least consider a science elective in that one slot you might have to fill. But now I want to speak to the scientists who might already be choosing a science class without any urging. Artists, pay attention too though. See if you’re able to guess where I’m going with my advice to the other half.</div>
<div>
<br /></div>
<div>
My recommendation to you, scientists, is “make a scene.”</div>
<div>
<br /></div>
<div>
Take a class where you are required to create something. I’m not talking about making the classic baking soda volcano. If you want a specific suggestion, try a video editing or photography class where you have to tell a story, or “make a scene.” I’ll give another example here.</div>
<div>
<br /></div>
<div>
At about the time I graduated college in 2004, Google decided to run an experiment of its own by hiring young college graduates and placing them in leadership positions called Associate Product Managers or APMs. The program was new, so I received a call from Google asking if I would like to apply. In 2004 I declined the request because I decided to finish another degree, but in 2005 when they called again I happily interviewed.</div>
<div>
<br /></div>
<div>
I knew very little about this new APM program but it sounded like fun and so I accepted Google’s offer. A few months after I joined, Google announced publicly something that I believe to be a historic undertaking, something on par with our country putting a man on the moon. I got a front row seat at such a project called Google Book Search.</div>
<div>
<br /></div>
<div>
The goal of the project is to scan in the world’s books with a current decade-long target of 15 million volumes. This way, all of the books, good and bad, ever written will be available at select collegiate libraries and hopefully, one day, to every person on the planet – no matter where they may be located.</div>
<div>
<br /></div>
<div>
A pesky set of laws called U.S. Fair use doctrine, something that evolves slowly since it’s made by a monopolistic thing called government, made such a project possible in the first place. Fair use says, you can make use of others’ ideas and works without asking for permission, as long as you don’t steal. And since Google was just scanning and not stealing, it luckily didn’t have to ask for permission 15 million times.</div>
<div>
<br /></div>
<div>
The day Google launched the project, you all remember, right? When Google Book Search launched banners streamed down in Times Square, there were fireworks in Paris, and the heroic engineers on the project marched in parades around the country and showed up even on American Idol, right? Not even close.</div>
<div>
<br /></div>
<div>
Rather, Google got sued. By who? Ironically, some of the people who would most benefit from the project, the authors of the books being scanned! And why? The real answer is complex, but slow moving out-of-date laws played a large role. All I can say is, Newton’s Laws never looked any better!</div>
<div>
<br /></div>
<div>
The point here is Google “made a scene” in scanning these books. They announced the project even when it wasn’t clearly in compliance with our nation’s laws. It scanned the books anyways and made our citizens and lawmakers question the validity of the old laws. Questioning authority and the old way of doing things, is an American principle that goes back to our Declaration of Independence which encourages us to alter or abolish any form of government that fails to serve its purpose.</div>
<div>
<br /></div>
<div>
Making a scene can take the form of book scanning or physical protests, but perhaps just as powerful, the phrase can be taken literally to mean making a video scene. So scientists, my advice to you in high school is take a video editing class, or at least something to tell a story but more importantly remember making a scene is about questioning authority and doing the right thing even when those around you might be doing the opposite.</div>
<div>
<br /></div>
<div>
First, I addressed the artists in the room, and told them to “get a C++”. Then I suggested to scientists, “make a scene.” So I now want to conclude with one final message to both. So let me move from the middle of the backboard to the final panel which holds the “conclusion.”</div>
<div>
<br /></div>
<div>
I want to close tonight with my homework assignment. High school is your personal declaration of independence. It represents the time in your life when you will transition from imperial control by your parents to being on your own.</div>
<div>
<br /></div>
<div>
So on this day, I want to give you just a small gift borrowed from a Berger Family tradition, because you have certainly earned it. The rarely used but still in circulation two-dollar bill is the only bill with a historical scene on the back – a scene of the signing of the Declaration of Independence. I’ve written on each bill an e-mail address that is unique to that bill. I ask this: e-mail that address with what you plan to do with the bill and where you think you or the bill, will be both 1 year and 12 years from today.</div>
<div>
<br /></div>
<div>
In return, I will promise you this. I will keep your e-mail confidential and at both the 1 year and 12 year mark I will send the e-mail you sent, back, to the address I received it from. Also, if anyone else in the world finds the bill and decides to e-mail the address on it I will forward the message along.</div>
<div>
<br /></div>
<div>
Working out plans for the future, like this homework assignment, is something students at ACS have done since the beginning. A scientist studying ACS once wrote,</div>
<div>
<i>Boys and girls [appear to] experience the thrill, [the thrill] which is the reward of the thinker who has worked out his plans in harmony with nature's forces. The teacher encourages the work, but for the most part, experience is left to do its own educative work.</i></div>
<div>
Gertrude Hartman wrote this in 1938 about the science classes within these very walls, or really, the brick walls over in that direction.</div>
<div>
</div>
<div>
<br /></div>
<div>
I give this $2 bill assignment because gaining experience through setting a goal or working out plans is the best way I have found to give the science experiment of my life, purpose. And purpose cannot come from science or art, but only from within.</div>
<div>
<br /></div>
<div>
Purpose, as seen here on the left part of this backboard.</div>
<div>
<br /></div>
<div>
When you set a personal goal both short and long term, it’s not necessarily important you reach it, because you are the only one who gets to define your own success. But it’s important to do because it gets you thinking about the future.</div>
<div>
<br /></div>
<div>
Finally though, I will end by amending my original message. Be a scientist, but be a scientist with a purpose. What I really mean is, be one who questions with a purpose.</div>
<div>
<br /></div>
<div>
Thank you.</div>
</div>
<div>
<br /></div>
<div>
<i>Thank you also to Maliha Mustafa, Mike Kodiak, Germaine Hoe, and Andrew Ow, who sent me feedback and ideas for this speech.</i></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-10682588511518879042009-05-24T16:56:00.000-07:002009-05-24T17:09:56.762-07:00Recent Web Browsing LearningsI was lamenting the fact that browsing the web is not very productive to a friend and she suggested I summarize my learnings in written form, possibly posting such a composition to my blog. I decided I'll give that a try by looking through my browser history...<div><ul><li><a href="http://howto.wired.com/wiki/Stop_a_Fixed_Gear_Bicycle">Stopping a "fixey" bike requires using the back tire as a skid break</a>. I read the article because I learned about the fixey trend roughly a year ago at a vegan dinner in SF. My most recent trend following involved buying a pinstriped black blazer.</li><li><a href="http://www.nytimes.com/2009/05/24/business/24collins.html?_r=1&hpw">Having a laser-focused purpose can produce incredible results</a>. Jim Collins apparently proposed four days after his first date with his wife, who later said she wanted to win an Ironman Triathlon which Collins quit his job to help her do. There has to be more details to these surprising tidbits but amazingly facts this NYT writer found.</li><li><a href="http://www.topshareware.com/converter-appleworks-ms-word/downloads/1.htm">It's hard to open up old file formats</a>. I'm a real life possessional minimalist but a digital pack rat and recently found this link was one of the top results for opening old Clarisworks files. I was trying to do this so I could look back on my 8th grade graduation speech which I plan to reference in the address I'm giving in about 10 days.</li></ul><div><br /></div><div>I think I proved to myself with this post that aimless browsing of the web can help you accumulate many tidbits of knowledge but it still doesn't really "accomplish" much.</div></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-59840352740100842552009-05-21T00:29:00.000-07:002009-05-21T00:35:31.806-07:00Weight Loss Tip: Big Thing of WaterI'm not trying to lose weight. But I do like to drink Coke or Pepsi with meals, particularly dinners, and I know this is not particularly healthy. A close friend of mine was... and I don't think he'd mind I say this... "bulkier" back in high school. In fact, he ate fast food every day for lunch his senior year and lots of soda with those meals.<div><br /></div><div>However, he also happens to be one of those individuals who has managed to lose weight and keep it off over a period of years. He shared a tip he practiced several years ago tonight that I think will never see the written word unless I put it down here: drink big things of water.</div><div><br /></div><div>To stop his "Coke habit" (hmm... that sounds wrong) he decided during his junior year in college to get a big 32 oz. cup, fill it to the brim with water, and set it next to his every meal. This small gesture alone lead in the long run to him cutting soda out of his diet nearly completely, and I think significantly contributed to his weight loss.</div><div><br /></div><div>It came up in a conversation about how very tiny but achievable goals sustained over long periods can sometimes have a much larger effect than gigantic goals sustained for short periods.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-89094576624715277642009-05-20T01:34:00.001-07:002009-06-05T14:30:55.213-07:00Fixing the Dell Online Store<div>I'm writing this to fix the Dell website. It's a long shot that the site will actually get fixed due to this post, but I'll write anyways since the internet can't stop me!</div><div><br /></div><div>Dell: please give me a hierarchy not a database for buying your products (specifically monitors).</div><div><br /></div><div>A database is basically just a searchable list. Imagine walking into a car dealership. A happy salesman walks up and gives you a stapled 30 sheet stack of papers and says "go ahead and find which car you'd like in the 300 row table and then I'll pull it up for you." This would be a poor buying experience.</div><div><br /></div><div>You need someone (or something) to walk you through the decision tree... the decision making process. Yes, this kind of data is harder to store in a database and online stores love to store things in databases since they're generally so handy.</div><div><br /></div><div>Apple's website is an example of how it should be done. When I click on iMac in the store I see a page that is not database-generated, but rather created by a human editor who has laid out the 5 choices from left to right in logical order, with the most important differentiating characteristic in bold at the top (speed) and price at the bottom.</div><div><br /></div><div>Due to the fact Dell uses a database instead of a hierarchy, my mother is literally unable to purchase a Dell monitor without my help. If this simple change were made I would no longer have to help her buy a Dell monitor.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-41829551574784738082009-05-02T14:32:00.000-07:002009-06-05T14:33:19.011-07:00How to Stop Junk Mail<div>I'm one of those people who hate junk mail. Apparently there aren't a lot of people like me because I routinely see people throw their junk mail away rather than try to stop it!</div><div><br /></div><div>What I've been doing consistently for the past 2 years is making an effort to get my name and address removed from every piece of junk mail I receive. Yes, every piece of junk mail. And the results have been surprising.</div><div><br /></div><div>The amount of junk mail I receive on a daily basis is markedly lower than my roommate's. I've found that there is more than a "linear" effect of getting removed from a particular company's list because companies that spam also tend to share addresses with other companies that spam.</div><div><br /></div><div>Other things I've learned:</div><div><ul><li>B&H Photo/Video has adopted the best practice of providing a URL right on the back of the catalog next to your address so that it is simple, fast, and available 24 hours/day to be removed. Good job B&H!</li><li>Frequent shopper/flyer/rewards clubs are the worst spam offenders. I've found that these literally write their policies in such a way that it is impossible to stop all of their spam. They consider spam part of being in the special club, since they are giving away their product for less than list price.</li><li>Pennysaver/Valuepak can be stopped! Those once or twice a week "mailers" that look like a tabloid newspaper or come in an envelope with dozens of coupons can be stopped with enough persistence. For me, it required phone calls, website form submissions, and snail mail papers with my signature one it. But, it can be done.</li></ul></div><div>On a parting note, a friend asked me a good question, "Jonathan, are you sure you're not wasting more time by stopping all this junk mail than if you just threw it out?" I think even by staying within the bounds of the question it could be "yes" but when you consider additional factors like the environment and the time spent by employees preparing the junk it seems the time I'm spending is overall net positive.</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-23273668207293192212009-04-23T03:15:00.001-07:002009-06-05T13:15:57.676-07:00Thanks!Thanks all for your help on the graduation remarks!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-5804279950564868927.post-43905199805386019272009-04-21T01:34:00.003-07:002009-04-21T01:36:25.150-07:00Visitor Data<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Y57vzLQY55U/Se2FK1LSTyI/AAAAAAAAAkA/3V6CcWURzuo/s1600-h/Picture+1.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 168px;" src="http://1.bp.blogspot.com/_Y57vzLQY55U/Se2FK1LSTyI/AAAAAAAAAkA/3V6CcWURzuo/s320/Picture+1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327060355368767266" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Y57vzLQY55U/Se2FKvspBmI/AAAAAAAAAj4/utuSOMLsdZE/s1600-h/Picture+3.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 232px;" src="http://3.bp.blogspot.com/_Y57vzLQY55U/Se2FKvspBmI/AAAAAAAAAj4/utuSOMLsdZE/s320/Picture+3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5327060353898055266" /></a><br /><div><br /></div><div>I found this data interesting, especially considering that I only placed a link to this page in two places.</div><div><br /></div><div>I also need more feedback people! Seriously! That's the only reason I posted this in the first place!</div>Unknownnoreply@blogger.com1