<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6757823</id><updated>2025-06-02T23:18:25.667-07:00</updated><category term="web2.0"/><category term="iphone"/><category term="mac"/><category term="google"/><category term="gtd"/><category term="intellij"/><category term="java"/><category term="office2.0"/><category term="unix"/><category term="css"/><category term="xml"/><category term="oracle"/><category term="orbeon"/><category term="skype"/><category term="ethics"/><category term="exist"/><category term="hardware"/><category term="mobile"/><category term="realestate"/><category term="tomcat"/><category term="firefox"/><category term="free will"/><category term="health"/><category term="hiking"/><category term="html"/><category term="html5"/><category term="ie6"/><category term="language"/><category term="mypedia"/><category term="offline"/><category term="prediction"/><category term="safari"/><category term="tool"/><category term="travel"/><category term="xpath"/><title type='text'>Alessandro Vernet&#39;s Blog</title><subtitle type='html'>&lt;a href=&quot;http://twitter.com/avernet&quot;&gt;@avernet&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://avernet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default?alt=atom&amp;redirect=false'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default?alt=atom&amp;start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>150</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6757823.post-8165410337950623613</id><published>2018-07-05T16:18:00.002-07:00</published><updated>2018-07-05T16:18:45.233-07:00</updated><title type='text'>China: A Political Meritocracy</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZe0nsiZLhCNMt6HNO-X5jf0LS8mrNMsj9ktyV8T1XDnYakg6KAzulhmG5_RWFWqM_Xx9fimd3A11cP8o3gzk-7dQtY_LOIw9H1pIBD2KuU7aROtlYMXZo5NGIS66AA3ReggCDtg/s1600/300px-Danghui.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;300&quot; data-original-width=&quot;300&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZe0nsiZLhCNMt6HNO-X5jf0LS8mrNMsj9ktyV8T1XDnYakg6KAzulhmG5_RWFWqM_Xx9fimd3A11cP8o3gzk-7dQtY_LOIw9H1pIBD2KuU7aROtlYMXZo5NGIS66AA3ReggCDtg/s200/300px-Danghui.svg.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In &lt;a href=&quot;http://www.economist.com/open-future/2018/06/12/chinas-political-meritocracy-versus-western-democracy&quot;&gt;China’s political meritocracy versus Western democracy&lt;/a&gt;&amp;nbsp;(published June 12, 2018 in The Economist), Daniel Bell, professor at the Tsinghua University, one of the top academic institutions in China, describes the Chinese political system as a&amp;nbsp;&lt;b&gt;political meritocracy&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Clearly China isn&#39;t a democracy; but should it be? We are, in the West, maybe too quick to assume it should, in part because we value democracy and may fear that a large non-democratic country can be a force against democracy in the world. Daniel Bell argues that China is allied with the West on a number of &lt;b&gt;liberal values&lt;/b&gt; (like basic human rights and equality before the law), that China isn&#39;t trying to export its political system, and that political meritocracy may be a &lt;b&gt;better system&lt;/b&gt; for China, given its size and history.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8165410337950623613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8165410337950623613'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2018/07/china-political-meritocracy.html' title='China: A Political Meritocracy'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZe0nsiZLhCNMt6HNO-X5jf0LS8mrNMsj9ktyV8T1XDnYakg6KAzulhmG5_RWFWqM_Xx9fimd3A11cP8o3gzk-7dQtY_LOIw9H1pIBD2KuU7aROtlYMXZo5NGIS66AA3ReggCDtg/s72-c/300px-Danghui.svg.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-2729352085089288041</id><published>2017-11-03T12:33:00.000-07:00</published><updated>2017-11-03T12:34:39.570-07:00</updated><title type='text'>A Modeling Language for Thought</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh98VyEBDNwuzUfnYhRsNTGgVRvFBZJDNcsFGSJnp0AXyMHPi66ryyOGM-4BTWQfXbM-nUUBDIG5QWvf46jTmcpMfpD0e5kqUSS4jUPMYi_h19aaoU1Vdz8Yj254TpYSV49tkkbaw/s1600/thought-model.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;182&quot; data-original-width=&quot;195&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh98VyEBDNwuzUfnYhRsNTGgVRvFBZJDNcsFGSJnp0AXyMHPi66ryyOGM-4BTWQfXbM-nUUBDIG5QWvf46jTmcpMfpD0e5kqUSS4jUPMYi_h19aaoU1Vdz8Yj254TpYSV49tkkbaw/s1600/thought-model.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
For maybe 20 years now, I&#39;ve been searching for a way to create diagrams that help me clarify my thoughts, thus making it easier to focus on a given topic for longer, and have deeper thoughts about that topic. This could be especially useful for people like me, who seem to have worse than average memory, and thus could gain the most from serializing one&#39;s thoughts.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.philmaps.com/&quot;&gt;Argument maps&lt;/a&gt; are in line with what I&#39;m looking for, but are not general enough (this by design, as their objective is specifically to create a visual representation for arguments). Unable to find a ready-made language, at different times I have played with the idea of creating my own, of which you can see a simple attempt on the left.&lt;br /&gt;
&lt;br /&gt;
In addition to the lack of an existing language, an even more significant problem with a visual language is its reliance on a diagramming tool: so far, the choice of which tool to use isn&#39;t clear, existing tools are harder to use on mobile, and most actions must be made with a mouse or other pointing device instead of the keyboard, which makes them slow to use. This might also be the reason why we&#39;ve yet to see a visual programming language attain an even modest level of success. This leads me to think that text, with its sentences organized in paragraphs, occasional bullet lists, and if long enough some headings, is still, regrettably, our best option for modeling thought.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2729352085089288041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2729352085089288041'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2017/11/a-modeling-language-for-thought.html' title='A Modeling Language for Thought'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh98VyEBDNwuzUfnYhRsNTGgVRvFBZJDNcsFGSJnp0AXyMHPi66ryyOGM-4BTWQfXbM-nUUBDIG5QWvf46jTmcpMfpD0e5kqUSS4jUPMYi_h19aaoU1Vdz8Yj254TpYSV49tkkbaw/s72-c/thought-model.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-8032486432101683319</id><published>2017-09-12T22:48:00.000-07:00</published><updated>2017-09-13T09:20:28.176-07:00</updated><title type='text'>Very Bad Wizards Discussion on IQ and Race</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix7FsclD8tvch5pg2owKONlpaE374O8LrcBTSzGyY2A_Q6V1XtHmYvqdPj8IQHWyut0fLvCQ79yiZxCBBKMmtmPAvll70u6zqKbMAUUnMVIXSdOBvPu2JSa_dVrtuBjx8BVxrtQQ/s1600/carriage.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;682&quot; data-original-width=&quot;721&quot; height=&quot;302&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix7FsclD8tvch5pg2owKONlpaE374O8LrcBTSzGyY2A_Q6V1XtHmYvqdPj8IQHWyut0fLvCQ79yiZxCBBKMmtmPAvll70u6zqKbMAUUnMVIXSdOBvPu2JSa_dVrtuBjx8BVxrtQQ/s320/carriage.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
In &lt;a href=&quot;https://verybadwizards.fireside.fm/123&quot;&gt;episode 123&lt;/a&gt; of the Very Bad Wizards podcast, &lt;a href=&quot;https://twitter.com/peez&quot;&gt;David Pizarro&lt;/a&gt; talks about the sensitive topic of IQ and race, and in a segment, starting about 67 minutes into the podcast, he more specifically goes into the question of whether observed differences in average IQ between races are likely to have a genetic underpinning.&lt;br /&gt;
&lt;br /&gt;
He first notes that the race classifications we make are mostly derived from sensory constraints of our species. He doesn&#39;t deny that, say, black/white exist as categories and have a genetic underpinning. However, it seems extremely unlikely that those differences are good trackers of the genetic diversity. Thus, he continues, it is implausible that complex traits, such as intelligence, would cluster exactly in what gives rise to the observable differences between races, and so equally implausible that differences in IQ can even be in part explained by genetic differences.&lt;br /&gt;
&lt;br /&gt;
Let me try to make David&#39;s argument clearer with a car analogy. Say the &lt;i&gt;Betas&lt;/i&gt;, an extraterrestrial species, were to land on Earth, knowing nothing about cars or mechanic, but having very good eye sight, were to classify cars based on their color. Say the &lt;i&gt;Betas&lt;/i&gt; had evidence that&amp;nbsp;&lt;a href=&quot;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC300804/&quot;&gt;black cars have more accidents than white cars&lt;/a&gt;, and wondered whether the difference was explained by the underlying mechanic of black vs. white cars (in humans, what we would call &quot;genetic factors&quot;), or due to something else (in humans, what we would call &quot;environmental factors&quot;).&lt;br /&gt;
&lt;br /&gt;
David could explain to the &lt;i&gt;Betas&amp;nbsp;&lt;/i&gt;how car color is a very bad tracker for mechanical differences between cars, unlike, say, horsepower, MPG, torque, etc. David would tell the &lt;i&gt;Betas&lt;/i&gt; that knowing color is a very bad tracker for mechanical differences&amp;nbsp;is enough for them to conclude that the difference in accident rate they observe doesn&#39;t come from mechanical differences, but rather from &quot;environmental factors&quot;. This sits well with our intuition: if black cars indeed have on average more accidents than white cars, it most likely isn&#39;t because they are made in an inferior way, but because they have human drivers, and maybe humans don&#39;t see black cars as well at night, or humans who are on average prone to take more risk (men?), like black cars better than white cars, or some other &quot;environmental factor&quot;.&lt;br /&gt;
&lt;br /&gt;
After having done my best at steel-manning David&#39;s argument, hopefully &lt;a href=&quot;https://www.brainpickings.org/2014/03/28/daniel-dennett-rapoport-rules-criticism/&quot;&gt;in Daniel Dennett fashion&lt;/a&gt;, I&#39;ll have to admit I&#39;m not convinced by it. Continuing on the car analogy, say another extraterrestrial species were to arrive on earth: the &lt;i&gt;Alphas&lt;/i&gt;. The &lt;i&gt;Alphas&lt;/i&gt; were as clueless on cars or mechanics as the &lt;i&gt;Betas&lt;/i&gt;, but they classified cars on geographic provenance. They arrived in the 1980s, and noticed that Japanese cars were more reliable than American cars. In this case too, geographic provenance is a poor tracker of mechanical diversity, however in this case, David&#39;s argument wouldn&#39;t hold, as &lt;a href=&quot;https://www.amazon.com/dp/0743299795/&quot;&gt;we know&lt;/a&gt;&amp;nbsp;that the difference in reliability was explained by differences in American vs. Japanese car manufacturing processes. As it turns out, for cars, geographic provenance was&amp;nbsp;strongly correlated with factors that had an influence on the way cars were&amp;nbsp;made. And this was true, even though geographical provenance was far from being a perfect tracker of mechanical diversity; for instance, there were significantly more reliable cars made &lt;a href=&quot;https://en.wikipedia.org/wiki/NUMMI&quot;&gt;in the US in a lean manufacturing factory&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In conclusion, even if we grant that race is a bad tracker of genetic difference between individuals, it seems to me that David&#39;s argument alone does not provide us with enough of a justification to rule out that part of the observed difference in average IQ between races does have a genetic underpinning.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8032486432101683319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8032486432101683319'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2017/09/very-bad-wizards-discussion-on-iq-and.html' title='Very Bad Wizards Discussion on IQ and Race'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix7FsclD8tvch5pg2owKONlpaE374O8LrcBTSzGyY2A_Q6V1XtHmYvqdPj8IQHWyut0fLvCQ79yiZxCBBKMmtmPAvll70u6zqKbMAUUnMVIXSdOBvPu2JSa_dVrtuBjx8BVxrtQQ/s72-c/carriage.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-905411018987013932</id><published>2017-06-23T23:47:00.001-07:00</published><updated>2017-06-23T23:47:41.327-07:00</updated><title type='text'>Is Your Time Really Well Spent?</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGh-lVSz1M1hoYNVNAAKSOaWHLDdC8OvC5SrLOxcaL6AqOfrRX8KfVam_eqsQoqkFq6D9R14brsuckpwPQsGOYfa2K0LhZ_bErONWjTvQw0sBRVVAhZYt7xdgQ7CvAnUAEvdi7mA/s1600/Ambrogio_Lorenzetti_002-detail-Temperance.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1384&quot; data-original-width=&quot;969&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGh-lVSz1M1hoYNVNAAKSOaWHLDdC8OvC5SrLOxcaL6AqOfrRX8KfVam_eqsQoqkFq6D9R14brsuckpwPQsGOYfa2K0LhZ_bErONWjTvQw0sBRVVAhZYt7xdgQ7CvAnUAEvdi7mA/s400/Ambrogio_Lorenzetti_002-detail-Temperance.jpg&quot; width=&quot;280&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
If you&#39;re anything like me, you think somewhat despairingly of people who spend a lot of time, say more than 1 hour a day, on Facebook. You &lt;a href=&quot;http://www.timewellspent.io/&quot;&gt;could speak&lt;/a&gt; of how this doesn&#39;t make them happy in the long run, and how they are the victims of algorithms perfectly tuned to feed them what they are attracted to.&lt;br /&gt;
&lt;br /&gt;
But aren&#39;t you, if you&#39;re spending also north of 1 hour a day reading articles or listening to podcasts doing something very similar? Unlike Facebook, behind articles and podcasts there typically isn&#39;t a master algorithm as finely tuned to fit your preferences as Facebook&#39;s algorithm is said to be. However, the publications that “survive,” &amp;nbsp;both in term of being popular enough to still be around, and being the ones you keep reading and listening to, are often exquisitely tuned to your likings. So, effectively, the end result is the same.&lt;br /&gt;
&lt;br /&gt;
And it might even be &lt;i&gt;worse&lt;/i&gt;&amp;nbsp;for you if, like me, you enjoy, say, spending an hour listening to an interview of &lt;a href=&quot;https://www.youtube.com/watch?v=zwIYFNgJbpw&quot;&gt;Condoleezza Rice at the Stanford Hoover Institute&lt;/a&gt;, because it isn’t obvious that this isn’t time well spent. At least, not as obvious as if you had spent that time watching funny cat videos and reading comments on Imgur.&lt;br /&gt;
&lt;br /&gt;
So, think about it: is &lt;i&gt;your&lt;/i&gt; time well spent?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/905411018987013932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/905411018987013932'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2017/06/is-your-time-really-well-spent.html' title='Is Your Time Really Well Spent?'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGh-lVSz1M1hoYNVNAAKSOaWHLDdC8OvC5SrLOxcaL6AqOfrRX8KfVam_eqsQoqkFq6D9R14brsuckpwPQsGOYfa2K0LhZ_bErONWjTvQw0sBRVVAhZYt7xdgQ7CvAnUAEvdi7mA/s72-c/Ambrogio_Lorenzetti_002-detail-Temperance.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-871371338890388417</id><published>2017-06-20T11:51:00.001-07:00</published><updated>2017-06-20T11:51:51.505-07:00</updated><title type='text'>The Problem with “Does Parenting Matter?”</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqJYx0BoTIQgUETsKQQ5jvqDPJvL5PnOmRhcUtogM-jlqXIv5Ug2IND9FFIKhhLdMlYW_aSlhZuXdffeUkDiASwawZWOhm8ohSWOX_95uerwiC5KOocCsuxIZs0zkYb85SCj2ylg/s1600/children.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;534&quot; data-original-width=&quot;557&quot; height=&quot;306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqJYx0BoTIQgUETsKQQ5jvqDPJvL5PnOmRhcUtogM-jlqXIv5Ug2IND9FFIKhhLdMlYW_aSlhZuXdffeUkDiASwawZWOhm8ohSWOX_95uerwiC5KOocCsuxIZs0zkYb85SCj2ylg/s320/children.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
A recent &lt;a href=&quot;https://twitter.com/obruchez/status/875419314010148864&quot;&gt;Twitter exchange with Olivier Bruchez&lt;/a&gt;, reminded me of the unease I feel about discussions on the importance of parenting, or the lack thereof. To that question, such discussions often give answers of the form “parenting doesn’t matter as much as you think”, or on the contrary, “in fact, all you read is wrong, it does matter a lot”.&lt;br /&gt;
&lt;br /&gt;
By “parenting”, let’s say we mean &lt;b&gt;“everything parents decide to do in relationship to their children”&lt;/b&gt;. Let’s take “reading” as an example. Does the fact that parents read more have an effect on their children, say, level of academic achievement?&lt;br /&gt;
&lt;br /&gt;
If you are doing a study on this topic, you want to disentangle this from the parents’ own level of academic achievement, as you don&#39;t consider one&#39;s own level of academic achievement to be a parenting decision. So in your study you &lt;b&gt;control&lt;/b&gt; for that. Also, you might find that amongst people with a similar level of academic achievement, people with a higher IQ tend to read more, but since you don&#39;t take the parents’ IQ to be a “parenting decision”, you decide to control for that as well. Next, you find that some cultural aspect influence the amount of reading: say you find that parents born in the Jewish faith read more, even controlling for level of academic achievement and IQ. So again, you control for that again, as you don&#39;t take being born in a particular faith to be part of a parenting decision.&lt;br /&gt;
&lt;br /&gt;
In the end, if you’re doing this enough, you’ll find no observable effect to parenting. But this is to be expected, as any of our behaviors, parenting decisions included, comes from a combination of our genes and our environment. So it is no surprise that trying to &lt;b&gt;control for anything that could come from our genes or our environment&lt;/b&gt;, you find no effect to parenting. By wanting to disentangle parenting decisions from genes and environment, you&#39;re &lt;b&gt;wiping parenting decisions out of existence&lt;/b&gt;. To me, such studies that concludes that &quot;parenting decision don&#39;t matter&quot; aren&#39;t showing anything about parenting, and only show the authors&#39; &lt;b&gt;confusion about the meaning of &quot;decision&quot;&lt;/b&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/871371338890388417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/871371338890388417'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2017/06/the-problem-with-does-parenting-matter.html' title='The Problem with “Does Parenting Matter?”'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqJYx0BoTIQgUETsKQQ5jvqDPJvL5PnOmRhcUtogM-jlqXIv5Ug2IND9FFIKhhLdMlYW_aSlhZuXdffeUkDiASwawZWOhm8ohSWOX_95uerwiC5KOocCsuxIZs0zkYb85SCj2ylg/s72-c/children.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-3872378643216731002</id><published>2016-05-28T22:35:00.001-07:00</published><updated>2016-05-28T22:35:24.504-07:00</updated><title type='text'>The Problem of Evil</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgepShEINu4Vv_4J4HsJ6df4OnNehqchyqKhFZ2sNdzfOzlag1VcEOHiM8Wcw1vBhDlNwvB7BwTJhavW36oNCcDiMjRnDVCBD0EqveFmvsSjh-mE1rKJG0DeybLTLb2CKGaWI_PwQ/s1600/AdamNeve.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgepShEINu4Vv_4J4HsJ6df4OnNehqchyqKhFZ2sNdzfOzlag1VcEOHiM8Wcw1vBhDlNwvB7BwTJhavW36oNCcDiMjRnDVCBD0EqveFmvsSjh-mE1rKJG0DeybLTLb2CKGaWI_PwQ/s320/AdamNeve.jpg&quot; width=&quot;309&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The problem of evil, quoting from the &lt;a href=&quot;https://en.wikipedia.org/wiki/Problem_of_evil&quot;&gt;Wikipedia article on the topic&lt;/a&gt;, &quot;refers to the question of how to reconcile the existence of evil with an &lt;b&gt;omnipotent&lt;/b&gt;, &lt;b&gt;omniscient&lt;/b&gt;, and &lt;b&gt;omnibenevolent God&lt;/b&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
For Christian theologians, notably starting with St Augustine (AD 354–430), &lt;b&gt;God created a perfect world&lt;/b&gt;, but gave Adam and Eve the power to deviate from His chosen path. In that view, God didn&#39;t create evil, and instead that &lt;b&gt;evil is the deviation or privation of goodness&lt;/b&gt;. The existence of evil, they say, is the price we pay for being able to make free moral choices, and a world in which Man is able to make such choices is better than one were Man isn&#39;t, and thus God created a &lt;b&gt;perfect world&lt;/b&gt;. This became Catholic doctrine, and this concept is often referred to as&amp;nbsp;&lt;i&gt;all is for the best in the best of all possible worlds&lt;/i&gt;, an idea which Voltaire (1694–1778) satirizes to great effect in Candide (1759).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Luther&lt;/b&gt; and &lt;b&gt;Calvin&lt;/b&gt; stronger belief in &lt;b&gt;predestination&lt;/b&gt; leads them to conclude that the fall of man was &lt;b&gt;part of God&#39;s plan&lt;/b&gt;, and that, ultimately, we might just &lt;b&gt;not be able to understand God&#39;s plan&lt;/b&gt;.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/3872378643216731002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/3872378643216731002'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2016/05/the-problem-of-evil.html' title='The Problem of Evil'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgepShEINu4Vv_4J4HsJ6df4OnNehqchyqKhFZ2sNdzfOzlag1VcEOHiM8Wcw1vBhDlNwvB7BwTJhavW36oNCcDiMjRnDVCBD0EqveFmvsSjh-mE1rKJG0DeybLTLb2CKGaWI_PwQ/s72-c/AdamNeve.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-138706189588000247</id><published>2016-04-18T21:47:00.000-07:00</published><updated>2016-04-18T21:47:09.755-07:00</updated><title type='text'>Waiting for the 2016 MacBook</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipY8lNKIZaURKCPWXynq2skjktiKheYG9yaYce0cngLN97tQ0cy2CvD2U4CPONPxrG8CPu3Xi2vWwoux4h4dLCG7JBggwlVbjsfWGuqVjGrHv5Cz8Dd-ynq_o71JQ3nka0GMir2w/s1600/macbook-select-spacegray-201501.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipY8lNKIZaURKCPWXynq2skjktiKheYG9yaYce0cngLN97tQ0cy2CvD2U4CPONPxrG8CPu3Xi2vWwoux4h4dLCG7JBggwlVbjsfWGuqVjGrHv5Cz8Dd-ynq_o71JQ3nka0GMir2w/s1600/macbook-select-spacegray-201501.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
I am very interested to what Apple will do with the new MacBook, also known as 12&quot; MacBook or Retina MacBook, as it might tell us something about where their laptop lineup is moving. As of this writing, the new MacBook is &lt;a href=&quot;http://www.macrumors.com/roundup/retina-macbook-air/&quot;&gt;expected&lt;/a&gt; to:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Be released by the &lt;b&gt;end of April&lt;/b&gt;, which, would be in the next 2 weeks.&lt;/li&gt;
&lt;li&gt;Come with &lt;b&gt;newer CPUs&lt;/b&gt;, compared to the 2015 MacBooks. Those new CPUs have already been launched by Intel in Q3 2015, and are expected to be:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;For the low-end model: &lt;a href=&quot;http://ark.intel.com/products/88198/Intel-Core-m3-6Y30-Processor-4M-Cache-up-to-2_20-GHz&quot;&gt;Core m3-6Y30&lt;/a&gt;,&amp;nbsp;succeeding the Core M-5Y31.&lt;/li&gt;
&lt;li&gt;For the mid-range model: &lt;a href=&quot;http://ark.intel.com/products/88202/Intel-Core-m5-6Y54--Processor-4M-Cache-up-to-2_70-GHz&quot;&gt;Core m5-6Y54&lt;/a&gt;,&amp;nbsp;succeeding the Core M-5Y51.&lt;/li&gt;
&lt;li&gt;For the high-end model:&amp;nbsp;&lt;a href=&quot;http://ark.intel.com/products/88199/Intel-Core-m7-6Y75-Processor-4M-Cache-up-to-3_10-GHz&quot;&gt;Core m7-6Y75&lt;/a&gt;,&amp;nbsp;succeeding the Core M-5Y71.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Be about &lt;b&gt;25%&amp;nbsp;faster&lt;/b&gt;, judging from the single-core Geekbench score, comparing the &lt;a href=&quot;http://browser.primatelabs.com/geekbench3/search?dir=desc&amp;amp;q=M-5Y31&amp;amp;sort=score&quot;&gt;old high-end&lt;/a&gt; to the &lt;a href=&quot;http://browser.primatelabs.com/geekbench3/search?dir=desc&amp;amp;q=m7-6Y75&amp;amp;sort=score&quot;&gt;new high-end&lt;/a&gt; CPUs. Those scores look good (maybe &lt;i&gt;too good&lt;/i&gt;), and would make the new high-end CPU just &lt;b&gt;5-10% slower than a 2013 Core i7&lt;/b&gt; &lt;a href=&quot;http://doc.orbeon.com/faq/form-builder-runner.html#how-much-load-can-orbeon-forms-handle&quot;&gt;MacBook Pro&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
When Apple introduced the 12&quot; MacBook in 2015, it was in the &lt;b&gt;ultra-portable&lt;/b&gt; category: it was a designed to be light and small, but&amp;nbsp;compromising on performance, the availability of ports, and the price. And this is fine, because ultra-portables aren&#39;t designed to be entry-level machines; they are not expected to be used by, say, high-school students. Instead, ultra-portables are laptops typically used in &lt;b&gt;addition&lt;/b&gt; to another machine, either a desktop or a more powerful but also more bulky laptop. The ultra-portable is the laptop you take with you when go to a &lt;b&gt;coffeeshop&lt;/b&gt;, to a meetup, to a conference, on your vacation, on a business trip, or your couch at home, when you don&#39;t need anything more powerful.&lt;br /&gt;
&lt;br /&gt;
In short, the 2015&lt;b&gt;&amp;nbsp;&lt;/b&gt;12&quot; MacBook was an ultra-portable, and&amp;nbsp;&lt;b&gt;not a replacement for the MacBook Air&lt;/b&gt;. But I have reasons to think that Apple has plans to expand the role of the MacBook, and have it progressively take the place of the MacBook Air as their new entry-level laptop:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;The name&lt;/b&gt; – In 2015, Apple didn&#39;t call it the MacBook &lt;i&gt;Something&lt;/i&gt;, with &lt;i&gt;Something&lt;/i&gt;&amp;nbsp;wisely chosen to evoke &quot;ultra-portable&quot;. Instead, Apple just called it MacBook. This makes sense if you have in mind a lineup where you have the MacBook (for entry-level users), and the MacBook Pro (for power-users).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The small size of the market&lt;/b&gt; (pun intended) – The ultra-portable category exists because there is a market for it, but it is a small market, compared to entry-level and professional laptops. (For PCs, there is a fourth category: gaming laptops, also a smaller market.) I think that in 2015 Apple introduced an ultra-portable not to enter into a new category but as a way to develop more expertise in building lighter and thinner machines, with the idea that this technology would then be used on its entry-level and pro laptops. And isn&#39;t this exactly what they did with the MacBook Air? Remember how, when it was introduced, the MacBook Air was &lt;i&gt;so&lt;/i&gt; expensive and slow, but &lt;i&gt;so&lt;/i&gt; thin?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The&amp;nbsp;shrinking&amp;nbsp;size of the market&lt;/b&gt;&amp;nbsp;– The new MacBook Pro is expected to be announced this summer, and to be much thinner. This will make the MacBook less appealing to MacBook Pro owners, as more of them will will consider their new MacBook Pro to be small enough.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Will Apple reposition its 2016 MacBook as more of an entry-level laptop? Here are some signs I&#39;ll be watching for:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;A lower entry price&lt;/b&gt; – The 2015 MacBook started at $1,299. There is no way Apple will lower the price all the way to $899, the level of its least expensive MacBook Air. But they could move in that direction. (This also tells me that the MacBook Air will stay, at least for one more year, so they can keep a product at this price point.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;An additional USB-C port&lt;/b&gt; – One port is fine for a machine you&amp;nbsp;mostly&amp;nbsp;use away from your desk, but a second USB-C port, on the other side of the machine, like on Google&#39;s Pixel, would allow it to better compete as an entry-level laptop.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Will Apple do anything to move the MacBook towards being more of an entry-level laptop? Or do nothing special, and keep the MacBook firmly in the ultra-portable category, for at least one more year? Or do something completely different? We&#39;ll see. Hopefuly, very soon.&lt;/div&gt;
&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/138706189588000247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/138706189588000247'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2016/04/waiting-for-2016-macbook.html' title='Waiting for the 2016 MacBook'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipY8lNKIZaURKCPWXynq2skjktiKheYG9yaYce0cngLN97tQ0cy2CvD2U4CPONPxrG8CPu3Xi2vWwoux4h4dLCG7JBggwlVbjsfWGuqVjGrHv5Cz8Dd-ynq_o71JQ3nka0GMir2w/s72-c/macbook-select-spacegray-201501.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-6765463322743281199</id><published>2016-04-14T09:48:00.001-07:00</published><updated>2016-04-14T09:55:25.930-07:00</updated><title type='text'>Google Has A Language Problem</title><content type='html'>Apple had a language problem, which it solved in 2014 with Swift. It is now Google&#39;s turn to be in a situation not unlike Apple&#39;s, before the introduction of Swift:&amp;nbsp;&lt;b&gt;Google has a language problem&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
The problem is&amp;nbsp;&lt;b&gt;Java&lt;/b&gt;, which is used to develop apps on Android, and internally at Google to create many of their own apps. The issue with Java is that it is&amp;nbsp;&lt;b&gt;controlled by Oracle&lt;/b&gt;, a company Google is fighting in court, and as a 20-year language that evolves very slowly, it is now just &lt;b&gt;plain obsolete&lt;/b&gt;. To solve this problem, Google needs a new language, and I see 3 possible contenders, Kotlin, Swift, and Scala:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;matrix&quot;&gt;
&lt;table&gt;
        &lt;tbody&gt;
&lt;tr&gt;
            &lt;td&gt;&lt;/td&gt;
            &lt;th&gt;Kotlin&lt;/th&gt;
            &lt;th&gt;Swift&lt;/th&gt;
            &lt;th&gt;Scala&lt;/th&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;th&gt;Benefits compared to Java&lt;/th&gt;
            &lt;td class=&quot;ok&quot;&gt;High&lt;/td&gt;
            &lt;td class=&quot;ok&quot;&gt;High&lt;/td&gt;
            &lt;td class=&quot;good&quot;&gt;Very high&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;th&gt;Controversial&lt;/th&gt;
            &lt;td class=&quot;good&quot;&gt;Low&lt;/td&gt;
            &lt;td class=&quot;ok&quot;&gt;Medium&lt;/td&gt;
            &lt;td class=&quot;bad&quot;&gt;High&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;th&gt;Difficulty to target Android&lt;/th&gt;
            &lt;td class=&quot;good&quot;&gt;Low&lt;/td&gt;
            &lt;td class=&quot;bad&quot;&gt;Hard&lt;/td&gt;
            &lt;td class=&quot;ok&quot;&gt;Medium&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;th&gt;Difficulty to target iOS&lt;/th&gt;
            &lt;td class=&quot;bad&quot;&gt;Hard&lt;/td&gt;
            &lt;td class=&quot;good&quot;&gt;Low&lt;/td&gt;
            &lt;td class=&quot;ok&quot;&gt;Medium&lt;/td&gt;
        &lt;/tr&gt;
&lt;tr&gt;
            &lt;th&gt;Difficulty to target the Web&lt;/th&gt;
            &lt;td class=&quot;ok&quot;&gt;Medium&lt;/td&gt;
            &lt;td class=&quot;bad&quot;&gt;High&lt;/td&gt;
            &lt;td class=&quot;good&quot;&gt;Low&lt;/td&gt;
        &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Other alternatives exist, but seem less realistic, at least in the short term:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;A new Google language&lt;/b&gt;&amp;nbsp;- Apple created its own language: Swift. So, couldn&#39;t Google come up with their own language as well? This would be a major undertaking. It isn&#39;t something outside of Google&#39;s league, but if such a large project was underway and getting even remotely close to something they could release, Google being a fairly open company, we would by now have heard about it.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;An existing Google language&lt;/b&gt; - That would be: Go or Dart:&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Go&lt;/b&gt; is designed for &lt;a href=&quot;https://en.wikipedia.org/wiki/System_programming&quot;&gt;system programming&lt;/a&gt;, not application programming. It doesn&#39;t compete with languages like Kotlin, Swift, or Scala, because it wasn&#39;t designed to.&lt;/li&gt;
&lt;li&gt;It would be all too easy to criticize &lt;b&gt;Dart&lt;/b&gt;&amp;nbsp;as a programming language, or describe how much of a failure Dart has been as far as its adoption goes, both within and outside Google. But there is no need to go there given the question that interests us. It suffices to say that Dart, maybe even more so than Go, hasn&#39;t been designed to compete with languages like Kotlin, Swift, or Scala, but rather in an attempt to be attractive to JavaScript developers reluctant to use strongly typed languages (ultimately a market it lost to TypeScript).&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
Getting back to our 3 contenders, &lt;b&gt;no clear winner&lt;/b&gt; emerges from the above table:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Swift&lt;/b&gt;&amp;nbsp;has a lot going for it, but a large amount of work would be needed to make it a viable first-class programming language for Android (think: IDE, APIs, interop with existing code). And maybe even more importantly, how wise would it be for Google to bet on a language designed and controlled by one its competitors?&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Scala&lt;/b&gt; is the &lt;b&gt;best technical solution&lt;/b&gt;, both for the capabilities of the language itself, its IDE support (JetBrains&#39; own IntelliJ, Eclipse, and through ENSIME in Emacs, Vim, and Atom), a rich library ecosystem, its ability to target the web through the production-ready Scala.js, and a project underway to create a LLVM backend, which would enable it to target iOS. But the &lt;b&gt;complexity&lt;/b&gt; of the language, both real and perceived, is a &lt;b&gt;big&amp;nbsp;hurdle&lt;/b&gt;&amp;nbsp;to overcome.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kotlin&lt;/b&gt; can be seen as a &lt;i&gt;lesser-Scala&lt;/i&gt;:&amp;nbsp;from a technical perspective,&amp;nbsp;it might not be as strong as Scala, but it is &lt;b&gt;strong-enough&lt;/b&gt;, and it is &lt;b&gt;less&amp;nbsp;controversial&lt;/b&gt;&amp;nbsp;than Scala, and thus easier to sell to Java developers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
If I were Google&#39;s language tzar, that is, in the unique position to decide on Google&#39;s language strategy, I could see myself go with Scala. If instead, I had to bet on what option Google would go for, assuming it goes for one, I would put my money on them adopting&amp;nbsp;&lt;b&gt;Kotlin&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
JetBrains is, to their credit, a fiercely independent company, so I&#39;d be surprised if &lt;a href=&quot;https://medium.com/@avernet/2-reasons-why-google-should-acquire-jetbrains-65b0fca03abd&quot;&gt;Google were to acquire JetBrains&lt;/a&gt;, but I can see Google announce they will &lt;b&gt;support Kotlin as a first-class language for Android development&lt;/b&gt;, along Java. And maybe even will work with JetBrains to improve their JavaScript backend, and together work a on an &amp;nbsp;LLVM backend, ultimately allowing the same code to be compiled for Android, iOS, and the web.&lt;/div&gt;
&lt;style type=&quot;text/css&quot;&gt;
    .matrix table {
        background-color: #657b83;
        border-collapse: collapse;
        color: white;
     }
     .matrix th { font-weight: normal }
     .matrix th, .matrix td { padding: 5px }
     .matrix .good { background-color: #859900 }
     .matrix .ok   { background-color: #b58900 }
     .matrix .bad  { background-color: #cb4b16 }
&lt;/style&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6765463322743281199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6765463322743281199'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2016/04/google-has-language-problem.html' title='Google Has A Language Problem'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-5064667064481707508</id><published>2013-11-10T23:35:00.000-08:00</published><updated>2013-11-11T15:01:10.239-08:00</updated><title type='text'>Votation populaire du 24 novembre 2013</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheqDTweNJmPxuTmxuDHtvEmE_fnJAQK64Ah7W9wPcG93ynbOH3uRfV51chuV35UtyCSjMtF9RLNr2M6Slv5z0EwNOtF0X39oG8Rl4odTy09lVNPjXEHtB36K8WxMAC8CC_n1vABg/s1600/ballot.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;235&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheqDTweNJmPxuTmxuDHtvEmE_fnJAQK64Ah7W9wPcG93ynbOH3uRfV51chuV35UtyCSjMtF9RLNr2M6Slv5z0EwNOtF0X39oG8Rl4odTy09lVNPjXEHtB36K8WxMAC8CC_n1vABg/s320/ballot.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Acceptez-vous l&#39;initiative populaire &quot;1:12 - Pour des salaires équitables&quot;?&lt;/b&gt;&amp;nbsp;In the US, &lt;a href=&quot;http://en.wikipedia.org/wiki/Gini_coefficient&quot;&gt;income inequality&lt;/a&gt; has been &lt;a href=&quot;http://en.wikipedia.org/wiki/File:Gini_since_WWII.svg&quot;&gt;consistently going up&lt;/a&gt; since the 70s. Too much income inequality&amp;nbsp;creates a society in which I feel less comfortable living, but imposing a maximum ratio between the lowest and highest salary within a company looks to me like a flawed approach to alleviate this problem. Using a &lt;i&gt;company&lt;/i&gt; as a unit is problematic; it opens the door to inequalities and workarounds. Say, a dental surgeon who has her own independent practice isn&#39;t too happy paying her cleaning lady 1/12 of her salary? Then she can just outsource cleaning and bypass that constraint. It is also not clear to me that the law would take into account stock given to executives (and increasingly other employees as well). Instead, if the goal is to reduce income equality, I&#39;d rather look at the policies of &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_countries_by_income_equality&quot;&gt;countries with a low Gini coefficient&lt;/a&gt; and a healthy economy, like many of the Scandinavian countries. My vote: no. Expected: no. Result: n/a.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Acceptez-vous l&#39;initiative populaire &quot;Initiative pour les familles: déductions fiscales aussi pour les parents qui gardent eux-mêmes leurs enfants&quot;?&lt;/b&gt;&amp;nbsp;This is a hard one, but I&#39;ll go with a yes, mostly because the arguments of the federal council are logically flawed. If the primary goal is to help families with children, why only provide this help to those who pay someone to take care of their children? Imagine you wanted to provide an incentive for people not to use their car going to work; if you were to do so by making public transportation costs deductible, you&#39;d be discriminating against people who carpool, bike, or walk to work. (Using a deduction for such an encouragements feels flawed to me, as it disproportionately benefits people with higher salaries who are also those who need the help the least, but this is a different question.) My vote: yes. Expected: no. Result: n/a.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Acceptez-vous la modification du 22 mars 2013 de la loi fédérale concernant la redevance pour l&#39;utilisation des routes nationales (Loi sur la vignette autorouotière, LVA)?&lt;/b&gt;&amp;nbsp;The suggested amount (CHF 100.-) doesn&#39;t seem unreasonable, and since this is a rather technical issue, I&#39;m comfortable following the recommendation of the federal council and parliament.&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5064667064481707508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5064667064481707508'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2013/11/votation-populaire-du-24-novembre-2013.html' title='Votation populaire du 24 novembre 2013'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheqDTweNJmPxuTmxuDHtvEmE_fnJAQK64Ah7W9wPcG93ynbOH3uRfV51chuV35UtyCSjMtF9RLNr2M6Slv5z0EwNOtF0X39oG8Rl4odTy09lVNPjXEHtB36K8WxMAC8CC_n1vABg/s72-c/ballot.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-8610914410223232100</id><published>2013-10-21T15:41:00.001-07:00</published><updated>2013-10-23T11:17:36.896-07:00</updated><title type='text'>Predicting the late-2013 MacBook Pro Retina performance</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/21007190@N05/8911411007&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;213&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7cj5EbIygHj8n8bFqbh9Y6qfu4WQb-4FmLIu-zQ6tAPmwjRtLwivAhE2roycqT3UaburMiALxArF56q1cleSytVTgYUtF1M6S_Ok7VriproHEqXFEYNO-sTBwS8vLP6gMB5si2A/s320/mbp.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Some &lt;a href=&quot;http://www.macrumors.com/2013/10/18/expectations-for-apples-october-22-event-ipads-mac-pro-and-more/&quot;&gt;wouldn&#39;t be surprised&lt;/a&gt; if new MacBook Pro Retina were to be announced at tomorrow&#39;s Apple event. Whether they are indeed announced tomorrow, or in the following months, I for one wonder what their performance will be.&lt;br /&gt;
&lt;br /&gt;
I&#39;ll focus on the &lt;a href=&quot;http://browser.primatelabs.com/geekbench3/singlecore&quot;&gt;Geekbench 3 score&lt;/a&gt;, because it is the most widely used, and in particular on its single-core, 64-bit score, as I think this is the number that best reflects the experience I have using the computer as a developer. Let&#39;s look at two other lines that made the move to Haswell processors over the last year:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The iMac, from late 2012 (3542) to late 2013 (&lt;b&gt;3935&lt;/b&gt;), saw an 11% improvement.&lt;/li&gt;
&lt;li&gt;The MacBook Air, from mid-2012 (2863) to mid-2013 (3143), saw a 10% improvement.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
I&#39;ll predicate my prediction on the&amp;nbsp;MacBook Pro Retina seeing a similar relative improvement. The MacBook Pro Retina from early 2013 &lt;a href=&quot;http://browser.primatelabs.com/mac-benchmarks&quot;&gt;scored&lt;/a&gt; 3395, so I predict the new &quot;late 2013&quot; MacBook Pro Retina will score at about 3393*1.1 = &lt;b&gt;3732&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This would make the iMac only just over &lt;b&gt;5% faster&lt;/b&gt; than the MacBook Pro Retina, which would make it hard to for me to choose between the latest MacBook Pro Retina and latest iMac.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update&lt;/b&gt; (2013-10-22): The most high-end CPU we can get on the MacBook Pro like is described as a &lt;i&gt;2.6GHz Quad-core Intel Core i7 with Turbo Boost up to 3.8GHz&lt;/i&gt;, which &lt;a href=&quot;http://en.wikipedia.org/wiki/MacBook_Pro#Technical_specifications_3&quot;&gt;according to Wikipedia&lt;/a&gt; is a &lt;a href=&quot;http://ark.intel.com/products/76088/&quot;&gt;i7-4960HQ&lt;/a&gt;&amp;nbsp;with &amp;nbsp;6 MB on-chip L3 cache. The high-end late-2013 iMac comes with a &lt;a href=&quot;http://ark.intel.com/products/77656&quot;&gt;i7-4771&lt;/a&gt;, still &lt;a href=&quot;http://en.wikipedia.org/wiki/IMac_(Intel-based)#Slim_Unibody_iMac&quot;&gt;according to Wikipedia&lt;/a&gt;. Based on the specs, the iMac CPU more cache (8 MB vs. 6 MB) but the memory bandwidth MacBook Pro CPU is higher (76.8 GB/s vs. 25.6 GB/s). However, at this point we don&#39;t yet have &lt;a href=&quot;http://browser.primatelabs.com/geekbench3/search?utf8=%E2%9C%93&amp;amp;q=i7-4960HQ&quot;&gt;published performance scores for the&amp;nbsp;i7-4960HQ&lt;/a&gt;&amp;nbsp;on Geekbench.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update&lt;/b&gt; (2013-10-23): CPU World has a &lt;a href=&quot;http://www.cpu-world.com/Compare/228/Intel_Core_i7_Mobile_i7-4960HQ_vs_Intel_Core_i7_i7-4771.html&quot;&gt;useful comparison&lt;/a&gt; of the MacBook Pro&#39;s i7-4960HQ (left) with the iMac&#39;s i7-4771 (right). Of interest, this comparison mentioned the &lt;a href=&quot;http://en.wikipedia.org/wiki/CPUID&quot;&gt;F16C additional instructions&lt;/a&gt; of the iMac&#39;s i7-4771, which provide support for doing half-precision to and from single-precision floating-point conversions, but it isn&#39;t clear that the availability of those instructions would improve the performance of tasks typically performed by developers.&lt;br /&gt;
&lt;br /&gt;
Also, a few 32-bit scores for the i7-4960HQ started showing up. There are too few to draw any conclusion, and we&#39;d like to look at 64-bit scores, but taking a value of &lt;b&gt;3405&lt;/b&gt; for the 32-bit MacBook Pro&#39;s&amp;nbsp;&lt;a href=&quot;http://browser.primatelabs.com/geekbench3/search?utf8=%E2%9C%93&amp;amp;q=i7-4960HQ&quot;&gt;i7-4960HQ scores&lt;/a&gt;&amp;nbsp;and of &lt;b&gt;3584&lt;/b&gt; for the 32-bit&amp;nbsp;&lt;a href=&quot;http://browser.primatelabs.com/geekbench3/search?utf8=%E2%9C%93&amp;amp;q=i7-4771&quot;&gt;i7-4771&amp;nbsp;scores&lt;/a&gt;, the iMac would indeed be just &lt;b&gt;5% faster&lt;/b&gt;.&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8610914410223232100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8610914410223232100'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2013/10/predicting-late-2013-macbook-pro-retina.html' title='Predicting the late-2013 MacBook Pro Retina performance'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7cj5EbIygHj8n8bFqbh9Y6qfu4WQb-4FmLIu-zQ6tAPmwjRtLwivAhE2roycqT3UaburMiALxArF56q1cleSytVTgYUtF1M6S_Ok7VriproHEqXFEYNO-sTBwS8vLP6gMB5si2A/s72-c/mbp.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-8265297373232249959</id><published>2013-04-10T14:58:00.000-07:00</published><updated>2013-04-10T14:58:30.983-07:00</updated><title type='text'>Requirements for a GTD system</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.flickr.com/photos/victoriabernal/6294851265/&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5RymOkUswN5X3WRVEdirGAjJkCS9w5lU8ddYo-5KothKepo109BApeUfOVH52aGgk1YJPDgLG0on6HjWL392cgHOXioSLJA9VAMs2ynsGQ24wXeNh0rRqKb59nfQT6qRLtx2niw/s320/6294851265_55973d1b00_z.jpg&quot; width=&quot;272&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
For a while, I&#39;ve been occasionally updating a list of requirements for a software I would be able to&amp;nbsp;comfortably&amp;nbsp;use to manage my GTD system. So without further ado:&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;actions&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;actions are always in a context, and some actions are also tied to a project (my primary way to look at lists of actions is by context)&lt;/li&gt;
&lt;li&gt;dates&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;start date (i.e. schedule a task to become current at a future date)&lt;/li&gt;
&lt;li&gt;recurring tasks (e.g. every weekday, every Monday, every first Tuesday of the month…)&lt;/li&gt;
&lt;li&gt;due date not important; making the task red once it passed the due date is useless to me; maybe another implementation could make this information useful&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;email&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;quick way to create an action from an email (otherwise I am more likely to leave emails in my inbox rather than create tasks)&lt;/li&gt;
&lt;li&gt;quickly find email related to an action&lt;/li&gt;
&lt;li&gt;special but important case of a start date: create action from an email that become current at a future date (i.e. &quot;if no answer in 7 days, do this&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;projects&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;lists of current projects&lt;/li&gt;
&lt;li&gt;in each project&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;next actions for that project&lt;/li&gt;
&lt;li&gt;reference material: notes (typically indented lists), files (PDF, screenshots)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;ability to archive projects&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;access&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;desktop&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;web based or OS X app&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;mobile&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Android&amp;nbsp;support (bonus for also working on iOS)&lt;/li&gt;
&lt;li&gt;fast read access to specific &quot;list&quot; (e.g. context, project)&lt;/li&gt;
&lt;li&gt;editing lists from a mobile is not a priority (just having read-only access, while not ideal, would suffice)&lt;/li&gt;
&lt;li&gt;offline on mobile (ideally with background sync so the offline version is used even when online for speed)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;proven stability of the system&#39;s cloud-based component&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8265297373232249959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8265297373232249959'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2013/04/requirements-for-gtd-system.html' title='Requirements for a GTD system'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5RymOkUswN5X3WRVEdirGAjJkCS9w5lU8ddYo-5KothKepo109BApeUfOVH52aGgk1YJPDgLG0on6HjWL392cgHOXioSLJA9VAMs2ynsGQ24wXeNh0rRqKb59nfQT6qRLtx2niw/s72-c/6294851265_55973d1b00_z.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-5125744073522506413</id><published>2012-12-05T17:36:00.001-08:00</published><updated>2012-12-05T17:36:46.423-08:00</updated><title type='text'>Improve your web app design</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5C_hguRTm1sy9-ZR-ZLBAWL44Jk3Ix43nsPlKniIq1j0kT2QV7wpDJrYT1AnD-01DH36SNMFfHLOJR-5Q_LC01JPbQe0QCZi_j1EPQ6TBIDu3VZwjo1HoB_M3qB2MX5eYSPbnMw/s1600/icons.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5C_hguRTm1sy9-ZR-ZLBAWL44Jk3Ix43nsPlKniIq1j0kT2QV7wpDJrYT1AnD-01DH36SNMFfHLOJR-5Q_LC01JPbQe0QCZi_j1EPQ6TBIDu3VZwjo1HoB_M3qB2MX5eYSPbnMw/s1600/icons.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
There is out there a wealth of resources you can use, often for free, to improve your web app design:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Icons&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://somerandomdude.com/work/iconic/&quot;&gt;Iconic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fortawesome.github.com/Font-Awesome/&quot;&gt;Font Awesome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://thenounproject.com/&quot;&gt;The Noun Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://adamwhitcroft.com/batch/&quot;&gt;Batch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Commercial&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://dutchicon.com/&quot;&gt;Dutch Icon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://glyphicons.com/&quot;&gt;GLYPHICONS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fico.lensco.be/&quot;&gt;Fico&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;Backgrounds:&amp;nbsp;&lt;a href=&quot;http://subtlepatterns.com/&quot;&gt;Subtle patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fonts:&amp;nbsp;&lt;a href=&quot;http://theleagueofmoveabletype.com/&quot;&gt;The League of Movable Type&lt;/a&gt; (open source fonts)&lt;/li&gt;
&lt;li&gt;Design techniques:&amp;nbsp;&lt;a href=&quot;http://ianstormtaylor.com/design-tip-never-use-black/&quot;&gt;Never use black&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5125744073522506413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5125744073522506413'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/12/improve-your-web-app-design.html' title='Improve your web app design'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5C_hguRTm1sy9-ZR-ZLBAWL44Jk3Ix43nsPlKniIq1j0kT2QV7wpDJrYT1AnD-01DH36SNMFfHLOJR-5Q_LC01JPbQe0QCZi_j1EPQ6TBIDu3VZwjo1HoB_M3qB2MX5eYSPbnMw/s72-c/icons.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-5596323598583317872</id><published>2012-11-28T12:23:00.000-08:00</published><updated>2012-11-28T14:08:04.946-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>Importing the scott schema in Oracle on Amazon RDS</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8BJb8nf2ZxHhyiaFUCSQAuZYg-EeKPA0K1CgK3Tmef4uxqeAf-t-fNgzhIer4a69J4bZPFP1G0BckiJD1_OIrctE0InS1cXzOspyASzn65or0EnC2Q9BRPAvrmXyJDPV74RPAA/s1600/clouds.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8BJb8nf2ZxHhyiaFUCSQAuZYg-EeKPA0K1CgK3Tmef4uxqeAf-t-fNgzhIer4a69J4bZPFP1G0BckiJD1_OIrctE0InS1cXzOspyASzn65or0EnC2Q9BRPAvrmXyJDPV74RPAA/s200/clouds.jpg&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Oracle Amazon RDS &lt;a href=&quot;https://forums.aws.amazon.com/thread.jspa?messageID=333466&amp;amp;#333466&quot;&gt;doesn&#39;t allow&lt;/a&gt; you to connect as &lt;code&gt;sysdba&lt;/code&gt;, and you don&#39;t have access to the local file system, so you can&#39;t run the &lt;code&gt;rdbms/admin/scott.sql&lt;/code&gt; script, as you &lt;a href=&quot;https://forums.oracle.com/forums/thread.jspa?messageID=10653227&quot;&gt;would otherwise do&lt;/a&gt;. Instead:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Download the &lt;a href=&quot;https://code.google.com/p/adf-samples-demos/downloads/detail?name=demoscripts.zip&amp;amp;can=2&amp;amp;q=&quot;&gt;demo scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;As master user:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Change password of the &lt;code&gt;scott&lt;/code&gt; user&lt;sup&gt;1&lt;/sup&gt;: &lt;code&gt;alter user scott identified by password ;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Grant some rights to &lt;code&gt;scott&lt;/code&gt;:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;grant connect to scott;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grant create table to scott;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grant execute any type to scott;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grant unlimited tablespace to scott;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grant create any trigger to scott;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;li&gt;Connect as &lt;code&gt;scott/password&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run SQL in &lt;code&gt;scott.sql&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; The &lt;code&gt;scott&lt;/code&gt; user exists by default in Oracle RDS instances, but I am not sure what the password is out of the box. (It isn&#39;t &lt;code&gt;tiger&lt;/code&gt;.)&lt;/span&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5596323598583317872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5596323598583317872'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/11/importing-scott-schema-in-oracle-on.html' title='Importing the scott schema in Oracle on Amazon RDS'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV8BJb8nf2ZxHhyiaFUCSQAuZYg-EeKPA0K1CgK3Tmef4uxqeAf-t-fNgzhIer4a69J4bZPFP1G0BckiJD1_OIrctE0InS1cXzOspyASzn65or0EnC2Q9BRPAvrmXyJDPV74RPAA/s72-c/clouds.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-7194555008370702630</id><published>2012-11-09T16:44:00.003-08:00</published><updated>2012-11-15T11:43:53.484-08:00</updated><title type='text'>Glassfish 3.1</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Yqy-pvboHsoAKCPY1tnTrm29YOY1V3A60gUhb5W3QT0Z6JNBdQdVwGjJrtoSK30RG5jWmp6qMZ3ardw08AwRhdDMzTIO4IvYkZ7V7LpRPwa0oX3thpTIQmCOy8PbesTxeqUF4w/s1600/glassfish.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;161&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Yqy-pvboHsoAKCPY1tnTrm29YOY1V3A60gUhb5W3QT0Z6JNBdQdVwGjJrtoSK30RG5jWmp6qMZ3ardw08AwRhdDMzTIO4IvYkZ7V7LpRPwa0oX3thpTIQmCOy8PbesTxeqUF4w/s320/glassfish.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Starting the server&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;cd glassfish&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;./bin/asadmin start-domain --verbose&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Changing JVM options&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Edit&amp;nbsp;&lt;code&gt;domains/domain1/config/domain.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For instance, add&amp;nbsp;&lt;code&gt;&amp;lt;jvm-options&amp;gt;-verbose:class&amp;lt;/jvm-options&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;(Just adding an command line parameters to the &lt;code&gt;java&lt;/code&gt; started in&amp;nbsp;&lt;code&gt;bin/startserv&lt;/code&gt; doesn&#39;t to the trick; I suspect this is just a loader, which then starts the real VM that will host the server)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;Glassfish key store password&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;By default, Glassfish sets the&amp;nbsp;&lt;code&gt;javax.net.ssl.keyStore&lt;/code&gt; property (in &lt;code&gt;domain.xml&lt;/code&gt;) to point to its own key store, in&amp;nbsp;&lt;code&gt;config/keystore.jks&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;That key store has a password set on it, which is the same as the &lt;a href=&quot;https://wikis.oracle.com/display/GlassFish/3.1+Master+Password&quot;&gt;Glassfish master password&lt;/a&gt;, by default &lt;code&gt;changeit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;However, the default &lt;code&gt;domain.xml&lt;/code&gt; doesn&#39;t set the&amp;nbsp;&lt;code&gt;javax.net.ssl.keyStorePassword&lt;/code&gt; property&lt;/li&gt;
&lt;li&gt;As a result, when establishing an SSL connection, Java fails to key store, &lt;a href=&quot;http://stackoverflow.com/q/13046698/5295&quot;&gt;resulting&lt;/a&gt; in a&amp;nbsp;&lt;code&gt;java.security.UnrecoverableKeyException&lt;/code&gt; with the message&amp;nbsp;&lt;i&gt;Password must not be null&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;One way to solve this is to add a&amp;nbsp;&lt;code&gt;&amp;lt;jvm-options&amp;gt;-Djavax.net.ssl.keyStorePassword=changeit&amp;lt;/jvm-options&amp;gt;&lt;/code&gt; in &lt;code&gt;domain.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/7194555008370702630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/7194555008370702630'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/11/glassfish-31.html' title='Glassfish 3.1'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Yqy-pvboHsoAKCPY1tnTrm29YOY1V3A60gUhb5W3QT0Z6JNBdQdVwGjJrtoSK30RG5jWmp6qMZ3ardw08AwRhdDMzTIO4IvYkZ7V7LpRPwa0oX3thpTIQmCOy8PbesTxeqUF4w/s72-c/glassfish.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-2487165666744571218</id><published>2012-11-08T22:20:00.000-08:00</published><updated>2012-11-19T18:25:43.855-08:00</updated><title type='text'>Propos sur le bonheur, Alain (1928)</title><content type='html'>&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiih7g2JmTLF9a7NfblRtzyRfkPZMFLyeX9ro_F7kiR6xde30kihI68WLJPMT4lI4QucqGi8Xki20qOwXRvimiX3ovebnhHE5_0ICv2nMJ8_Rn0odkd1EkOD41vwk1x0PoMbCXRmA/s1600/dancer-the-dog-the-dog-on-the-ball-study-for-the-grande-parade-1952.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;313&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiih7g2JmTLF9a7NfblRtzyRfkPZMFLyeX9ro_F7kiR6xde30kihI68WLJPMT4lI4QucqGi8Xki20qOwXRvimiX3ovebnhHE5_0ICv2nMJ8_Rn0odkd1EkOD41vwk1x0PoMbCXRmA/s400/dancer-the-dog-the-dog-on-the-ball-study-for-the-grande-parade-1952.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
A few selected quotes:&lt;/div&gt;
&lt;ul class=&quot;ul1&quot;&gt;
&lt;li class=&quot;li1&quot;&gt;Je voudrais dire de la mauvaise humeur, qu’elle n’est pas moins cause qu’effet.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;La colère est à proprement parler une sorte de maladie, tout à fait comme est la toux.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;Le chapelet est une invention admirable qui occupe la pensée et le doigts ensemble à compter.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;Réagir contre l’humeur, ce n’est point l’affaire du jugement; il n’y peut rien; mais il faut changer l’attitude et se donner le mouvement convenable; car nos muscles moteurs sont la seule partie de nous même sur laquelle nous ayons prise.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;Tout religion renferme une prodigieuse sagesse pratique.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;[…] il faudrait toujours se dire: «ce n’est pas parce que j’ai réussi que je suis content, mais parce que je suis content que j’ai réussi»&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;Il y a deux espèces d’hommes, ceux qui s’habituent au bruit, et ceux qui essaient de faire taire les autres.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;L’art de vivre consiste d’abord, il me semble, à ne point quereller soi-même sur la parti qu’on a pris ni sur le métier qu’on fait. Non pas, mais le faire bien.&lt;/li&gt;
&lt;li class=&quot;li1&quot;&gt;La pensée est une espèce de jeu qui n’est pas toujours très sain. Communément, on tourne sans avancer. [...] Percevoir et agir, voilà les vrais remèdes.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;La vrai richesse des spectacles est dans le détail. Voir, c&#39;est parcourir les détails, s&#39;arrêter un peu à chacun, et, de nouveau saisir l&#39;ensemble d&#39;un coup d&#39;œil.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;[...] l&#39;intelligence à des pointes aussi pour nous piquer.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;Ce qui nous&amp;nbsp;blesse&amp;nbsp; dans des pensées inextricables, ce ne sont pas les pensées inextricables, c&#39;est plutôt une espèce lutte et résistance contre cela même, ou, si vous voulez, un désir que les choses ne soient pas comme elles sont.&amp;nbsp;&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;La tristesse n&#39;est jamais ni noble, ni belle, ni utile.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;Un auteur ancien à dit que tout événement à deux anses, et qu&#39;il n&#39;est pas sage de choisir pour le porter celle qui blesse la main.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
On doing:&lt;/div&gt;
&lt;div&gt;
&lt;ul class=&quot;ul1&quot;&gt;
&lt;li class=&quot;li2&quot;&gt;On veut agir, on ne veut pas subir. Aussitôt que je me donne librement de la peine, me voilà content.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;L&#39;enfant se moque de nos jardins, il se fait un beau jardin, avec des tas de sable, et des brins de paille.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;Tous les métiers plaisent autant que l&#39;on gouverne, et déplaisent autant que l&#39;on y obéit.&lt;/li&gt;
&lt;li class=&quot;li2&quot;&gt;Ne demandez pas à celui qui ne sait point jouer s&#39;il aime le jeu. La politique n&#39;ennuie point dès que l&#39;on sait le jeu; mais il faut apprendre; il faut apprendre à être heureux.&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;Le travail est la meilleure et la pire des choses; la meilleure, s&#39;il est libre,&amp;nbsp;lapide, s&#39;il est serf.&lt;/li&gt;
&lt;li class=&quot;li3&quot;&gt;Celui qui met toute son attention sur un acte difficile, celui-là est parfaitement heureux.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;Dans la grande prairie&lt;/i&gt;&amp;nbsp;must be read in full. Alin recounts part of Palto’s&amp;nbsp;&lt;a href=&quot;http://en.wikipedia.org/wiki/Myth_of_Er&quot;&gt;&lt;span class=&quot;s1&quot;&gt;myth of Er&lt;/span&gt;&lt;/a&gt;, where after death people arrive in a large meadow, where they can choose what they want (and will get) in their next life, and so often pick exactly the oposite of what they need. Alain doesn&#39;t believe in an afterlife, and sees us making those bad choices every day.&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;http://classiques.uqac.ca/classiques/Alain/propos_sur_le_bonheur/alain_propos_bonheur.pdf&quot;&gt;Propos sur le bonheur&lt;/a&gt; (PDF)&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2487165666744571218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2487165666744571218'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/11/propos-sur-le-bonheur-alain-1928.html' title='Propos sur le bonheur, Alain (1928)'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiih7g2JmTLF9a7NfblRtzyRfkPZMFLyeX9ro_F7kiR6xde30kihI68WLJPMT4lI4QucqGi8Xki20qOwXRvimiX3ovebnhHE5_0ICv2nMJ8_Rn0odkd1EkOD41vwk1x0PoMbCXRmA/s72-c/dancer-the-dog-the-dog-on-the-ball-study-for-the-grande-parade-1952.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-4644323269576405134</id><published>2012-11-07T19:13:00.001-08:00</published><updated>2012-11-12T10:18:15.906-08:00</updated><title type='text'>iPhone 5 vs. Nexus 4: The Specs</title><content type='html'>&lt;style&gt;
.post table { border-collapse: collapse }
.post td, th { padding: 5px; border: 1px solid #ccc }
.post .benefit { background-color: Honeydew }
.post .drawback { background-color: OldLace }
&lt;/style&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;th&gt;&lt;/th&gt; &lt;th align=&quot;center&quot;&gt;iPhone5&lt;/th&gt; &lt;th align=&quot;center&quot;&gt;Nexus 4&lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Price for 16 GB&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;$700&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;$350&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;RAM&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;1 GB&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;2 GB&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;CPU&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;1.3 GHz dual core&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;1.5GHz quad-core&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Display size&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4in&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;4.7in&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Display resolution&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;1136x640&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;1280x768&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Display PPI&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;326&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;320&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Front camera&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;1.2 MP&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;1.3 MP&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Back camera&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;8 MP&lt;/td&gt; &lt;td align=&quot;center&quot;&gt;8 MP&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Data&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;LTE&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;HSPA+&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Battery&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;1400 mAh&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;2100 mAh&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Weight&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;benefit&quot;&gt;112 g&lt;/td&gt; &lt;td align=&quot;center&quot; class=&quot;drawback&quot;&gt;139 g&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/4644323269576405134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/4644323269576405134'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/11/iphone-5-vs-nexus-4-specs.html' title='iPhone 5 vs. Nexus 4: The Specs'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-2438330067119918898</id><published>2012-11-06T10:07:00.001-08:00</published><updated>2012-11-06T15:42:26.176-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mypedia"/><title type='text'>MySQL</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;145&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo648n3bCoWrYrd3sl59PKfjLDFmLrle23BC2FIaNTNTsmABjvD1XmsHitMFMxrNIhk71xp0TSi9EDoVqwlc3ATHKZPngGgkfXU0Q58N8S7DcHtlCXuX4L4WtuIfKuOxsyb1Lx9A/s200/mysql-logo.jpg&quot; width=&quot;200&quot; /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Administration&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Startup on OS X: &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo /Library/StartupItems/MySQLCOM/MySQLCOM start&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Shutdown: &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo mysqladmin shutdown&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Listing the content of the database in XML: &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mysqldump -X --user=orbeon --password=orbeon orbeon orbeon_form_data | less&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Connecting to the database from the command line as user &lt;i&gt;orbeon&lt;/i&gt;: &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mysql --user=orbeon --password=orbeon orbeon&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;DDL and testing&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html&quot;&gt;Text column lengths&lt;/a&gt; (&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;text&lt;/span&gt;, &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mediumtext&lt;/span&gt;, &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;longtext&lt;/span&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/doc/employee/en/employee.html&quot;&gt;Employees test database&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Removed from the beginning of employees.sql the lines that create the employees database&lt;/li&gt;
&lt;li&gt;Import with &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mysql --user=orbeon --password=orbeon orbeon &amp;lt; employees.sql&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;XML functions&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/xml-functions.html#function_extractvalue&quot;&gt;ExtractValue&lt;/a&gt;(xml, &#39;/path/to/value&#39;)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/xml-functions.html#function_updatexml&quot;&gt;UpdateXML&lt;/a&gt;(xml, &#39;/path/to/node&#39;, &#39;&amp;lt;new-node/&amp;gt;&#39;)&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Replaces &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;node&amp;gt;&lt;/span&gt; by &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;new-node&amp;gt;&lt;/span&gt; (not the content of &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;node&amp;gt;&lt;/span&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_load-file&quot;&gt;load_file&lt;/a&gt;(&#39;/path/to/file&#39;)&lt;/span&gt;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;Need to grant file permission&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;mysql --user=root mysql&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;grant file on *.* to &#39;orbeon&#39;@&#39;localhost&#39;;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;File needs to be in a place where MySQL can read&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sudo -u _mysql cat /tmp/BidForm.xml&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;Issues&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&quot;To deep XML&quot;&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://bugs.mysql.com/bug.php?id=26870&quot;&gt;Bug&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Verified with 5.1.15&lt;/li&gt;
&lt;li&gt;On the bug thread, someone had this with 5.5.9&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2438330067119918898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2438330067119918898'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2012/11/mysql.html' title='MySQL'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo648n3bCoWrYrd3sl59PKfjLDFmLrle23BC2FIaNTNTsmABjvD1XmsHitMFMxrNIhk71xp0TSi9EDoVqwlc3ATHKZPngGgkfXU0Q58N8S7DcHtlCXuX4L4WtuIfKuOxsyb1Lx9A/s72-c/mysql-logo.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-8437808745195944542</id><published>2011-11-10T10:47:00.001-08:00</published><updated>2011-11-10T10:57:21.642-08:00</updated><title type='text'>The Ideal Programming Language</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ1Ah-hg1nl5117croZhF50R_cgsfc0aZDzbfl6hbDTjcZRFy0vcczvCyyOzhCsRuxtM-DRd80A2H-JxafJxPJ7nDl4Yu__bmN8nmZHY5MuNUtFK9XNf2Qhm0swl8VsZj3AXw2CA/s1600/Escher_Waterfall.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ1Ah-hg1nl5117croZhF50R_cgsfc0aZDzbfl6hbDTjcZRFy0vcczvCyyOzhCsRuxtM-DRd80A2H-JxafJxPJ7nDl4Yu__bmN8nmZHY5MuNUtFK9XNf2Qhm0swl8VsZj3AXw2CA/s320/Escher_Waterfall.jpg&quot; width=&quot;250&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
My requirements for the &lt;i&gt;ideal programming language&lt;/i&gt;,&amp;nbsp;roughly&amp;nbsp;sorted by order of importance:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Can be used &lt;b&gt;equally well&lt;/b&gt; for code that will run on the &lt;b&gt;server-side&lt;/b&gt; (most likely targeting the JVM) and on the &lt;b&gt;client-side&lt;/b&gt; (for now, this means compiling to JavaScript). This is key for people to be able to use the language. Nowadays, a language that also comes with its own environment is unlikely to be adopted. [Unlike Haskell; like Dart]&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strongly typed&lt;/b&gt;, with &lt;b&gt;type inference across compilation units&lt;/b&gt;, i.e. not to force type declarations on &quot;public APIs&quot; (even if having them, most of the time, might be a good idea). [Unlike Scala; like Haskell]&lt;/li&gt;
&lt;li&gt;Provide &lt;b&gt;rich constructs&lt;/b&gt;, like case classes, traits, partial functions, continuations… The world is complex, and our programs try to model it, and the right constructs make the programmer&#39;s job easier, and the code simpler. (See the &lt;a href=&quot;http://www.infoq.com/presentations/Simple-Made-Easy&quot;&gt;simple vs. easy&lt;/a&gt; distinction made by Rich Hickey.) [Like Scala]&lt;/li&gt;
&lt;li&gt;Adhere to the &lt;b&gt;off-side rule&lt;/b&gt;. Because syntax matters. [Like Python, Haskell, CoffeeScript, F#; unlike Scala, Dart…]&lt;/li&gt;
&lt;li&gt;Provide a &lt;b&gt;rich data type library&lt;/b&gt;. [Like Scala; unlike JavaScript]&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Compilation&lt;/b&gt; should be &lt;b&gt;fast&lt;/b&gt; enough that developers don&#39;t feel compiling/building as an additional, lengthy step that needs to happen before they can run code. I.e. when writing code running in the browser, programmers should be able to make a change in their editor, cmd-tab to the browser, reload the page, and see the change. [Unlike Scala]&lt;/li&gt;
&lt;li&gt;Don&#39;t force &quot;object oriented&quot; paradigms on programmers. E.g. the standard way to write a program shouldn&#39;t necessarily be to start defining a class. [Unlike Java, Scala]&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8437808745195944542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/8437808745195944542'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2011/11/ideal-programming-language.html' title='The Ideal Programming Language'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ1Ah-hg1nl5117croZhF50R_cgsfc0aZDzbfl6hbDTjcZRFy0vcczvCyyOzhCsRuxtM-DRd80A2H-JxafJxPJ7nDl4Yu__bmN8nmZHY5MuNUtFK9XNf2Qhm0swl8VsZj3AXw2CA/s72-c/Escher_Waterfall.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-6166675706352095777</id><published>2011-08-17T12:11:00.000-07:00</published><updated>2011-08-17T12:15:23.379-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="free will"/><title type='text'>Is &quot;free will&quot; a fallacy? (Hint: the fallacy is in its definition)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfGO6iEISnhk2s0JqkOXwvHMvO8AziUc_R9HYGKUudLbtgQ-cpvYb3khNZrDNZ8PyM_NurIYAjrOHpiYUwMJrBbsgFwqlZzbs9rNi_0F75cbfQ5wvMaHb5V04Wwet5I5SVpr8YOw/s1600/2971210465_6f81c903d6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfGO6iEISnhk2s0JqkOXwvHMvO8AziUc_R9HYGKUudLbtgQ-cpvYb3khNZrDNZ8PyM_NurIYAjrOHpiYUwMJrBbsgFwqlZzbs9rNi_0F75cbfQ5wvMaHb5V04Wwet5I5SVpr8YOw/s320/2971210465_6f81c903d6.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
It is irrelevant how brilliant your demonstration is: if you start with an incorrect hypothesis, your conclusion has no value.&lt;br /&gt;
&lt;br /&gt;
Take Daniel Miessler article concluding &lt;a href=&quot;http://danielmiessler.com/blog/the-two-lever-argument-against-free-will&quot;&gt;free will is an illusion&lt;/a&gt;, also &lt;a href=&quot;http://draft.blogger.com/goog_1765397162&quot;&gt;mentioned&lt;/a&gt;&lt;a href=&quot;http://twitter.com/#%21/SamHarrisOrg/status/103130595357499393&quot;&gt; by Sam Harris&lt;/a&gt;. His hypothesis is that &quot;true (free) influence on the world&quot;—whatever that &quot;true (free)&quot; designation means—requires the ability to &lt;i&gt;change the previous state of the world&lt;/i&gt; or to &lt;i&gt;change the laws that govern the universe&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
This is very much at odd with the common understanding of the word &lt;i&gt;influence&lt;/i&gt;. Say you fail to see a banana peel on the curb, slip on it, and fail. Wouldn&#39;t you say that the banana peel influenced your fall? You would, as without it, most likely, you wouldn&#39;t have fallen. And I assure you that the banana peel neither &lt;i&gt;changed the previous state of the world&lt;/i&gt; nor &lt;i&gt;changed the laws that govern the universe&lt;/i&gt;. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, bending the meaning of words, or even worse, completely omitting definitions, too often plagues discussions on free will.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6166675706352095777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6166675706352095777'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2011/08/is-free-will-fallacy-hint-no-fallacy-is.html' title='Is &quot;free will&quot; a fallacy? (Hint: the fallacy is in its definition)'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfGO6iEISnhk2s0JqkOXwvHMvO8AziUc_R9HYGKUudLbtgQ-cpvYb3khNZrDNZ8PyM_NurIYAjrOHpiYUwMJrBbsgFwqlZzbs9rNi_0F75cbfQ5wvMaHb5V04Wwet5I5SVpr8YOw/s72-c/2971210465_6f81c903d6.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-7428206724417771602</id><published>2010-11-26T01:24:00.001-08:00</published><updated>2010-11-26T01:28:55.457-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><title type='text'>Autocomplete and JavaScript Change Event</title><content type='html'>&lt;p&gt;&lt;strong&gt;Different Sorts of Autocomplete&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to autocomplete in browsers, you need to make distinction between autocomplete for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Username/password&lt;/strong&gt; — Once you have a username and password saved for a certain login form, the browser will pre-fill the username and password fields with the saved values.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;General form fields&lt;/strong&gt; — Most browsers, including &lt;a href=&quot;http://support.mozilla.com/en-US/kb/Form+autocomplete&quot;&gt;Firefox&lt;/a&gt;, &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms533032%28VS.85%29.aspx&quot;&gt;IE&lt;/a&gt;, and &lt;a href=&quot;http://www.google.com/support/chrome/bin/answer.py?answer=142893&amp;amp;hl=en-US&quot;&gt;Chrome&lt;/a&gt;, provides a similar autocomplete interface for form fields: as you start typing in a field, the browser will provide a list of suggestions. If you select one, the value you select will be used to populate the field. (Chrome might, based on the choice you made, also populate other related fields.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/6900/resources/20101125-autocomplete.png&quot; alt=&quot;Typical autocomplete UI&quot; title=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The HTML Specification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When it comes to DOM event, and in particular the &lt;code&gt;change&lt;/code&gt; event, there is a significant difference between those two cases: username/password fields are auto-filled immediately when the page is shown; for other fields, you explicitly select a value from a list and tab to another field. This is important in the context of the HTML specification. The HTML 4.01 specification &lt;a href=&quot;http://www.w3.org/TR/html401/interact/scripts.html#adef-onchange&quot;&gt;says&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The &lt;code&gt;onchange&lt;/code&gt; event occurs when a control loses the input focus and its value has been modified since gaining focus.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My interpretation is that browsers should dispatch the &lt;code&gt;change&lt;/code&gt; event when users select a value from a list of suggestions, but not when browsers pre-fill the username and password fields, as in that case the username and password fields don&#39;t gain and loose the focus. &lt;a href=&quot;http://www.w3.org/TR/html5/common-input-element-attributes.html#event-input-change&quot;&gt;HTML 5&lt;/a&gt; is more abstract (emphasis mine):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;When the &lt;code&gt;change&lt;/code&gt; event applies, if the element does not have an activation behavior defined but uses a user interface that involves an explicit commit action, then any time &lt;em&gt;the user commits a change&lt;/em&gt; to the element&#39;s value or list of selected files, the user agent must queue a task to fire a simple event that bubbles named change at the input element, then broadcast &lt;code&gt;formchange&lt;/code&gt; events at the input element&#39;s form owner.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;HTML 4.01 talks about dispatching the &lt;code&gt;change&lt;/code&gt; event when the form field looses the focus, which makes sense for text fields, but doesn&#39;t for file selection fields (&lt;code&gt;&amp;lt;input type=&quot;file&quot;&amp;gt;&lt;/code&gt;): in that case it make more sense to dispatch the &lt;code&gt;change&lt;/code&gt; event when the file has been selected, rather than wait for users to change the focus to another field. This is most likely why HTML5 talks about &quot;users commiting the change&quot; rather than &quot;the control loosing the focus&quot;.&lt;/p&gt;

&lt;p&gt;Even with this HTML5 definition of the &lt;code&gt;change&lt;/code&gt; event, for the case of the username/password fields pre-filled by browsers as the page is loaded, I find it hard to argue that users &quot;committed a change&quot; by just loading the page. So based on my interpretation of the HTML 4.01 and HTML 5 specifications, I would expect browsers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dispatch the &lt;code&gt;change&lt;/code&gt; event when users select a suggested value and tab to another field.&lt;/li&gt;
&lt;li&gt;Not dispatch the &lt;code&gt;change&lt;/code&gt; event to fields they pre-filled without users tabbing through the fields, such as the username/password fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Real World&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Expectations are rarely in line with reality, especially when it comes to browser behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For username/password fields:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Firefox 4, IE 7, and IE 8 don&#39;t dispatch the &lt;code&gt;change&lt;/code&gt; event.&lt;/li&gt;
&lt;li&gt;Safari 5 and Chrome 9 do dispatch the &lt;code&gt;change&lt;/code&gt; event.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For other form fields:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;IE 7 and IE 8 don&#39;t dispatch the &lt;code&gt;change&lt;/code&gt; event.&lt;/li&gt;
&lt;li&gt;Firefox 4 does dispatch the change &lt;code&gt;change&lt;/code&gt; event when users select a value from a list of suggestions and tab out of the field.&lt;/li&gt;
&lt;li&gt;Chrome 9 does not dispatch the &lt;code&gt;change&lt;/code&gt; event.&lt;/li&gt;
&lt;li&gt;Safari 5 does dispatch the &lt;code&gt;change&lt;/code&gt; event.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can test this by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For username/password fields, load the &lt;a href=&quot;http://dl.dropbox.com/u/6900/resources/20101125-autocomplete-login.html&quot;&gt;login test case&lt;/a&gt;. Enter a username/password, submit the form, tell the browser to remember the login, reload the form. On Firefox, Chrome, and Safari the password field comes pre-filled, but the change event is dispatched only by Chrome and Safari. On IE, the password will be pre-filled only after you enter the username, but even as you tab through the password field, no &lt;code&gt;change&lt;/code&gt; event is dispatched.&lt;/li&gt;
&lt;li&gt;For other form fields, use this &lt;a href=&quot;http://dl.dropbox.com/u/6900/resources/20101125-autocomplete-name.html&quot;&gt;test case&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workarounds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The bottom line is that your JavaScript code can&#39;t rely on the &lt;code&gt;change&lt;/code&gt; event. If your code needs to know when the value of a field changes, you have two choices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Have some JavaScript code that runs at a regular interval, checks the value of all the fields, and calls your change handler when it notices that a value has changed.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.mozilla.org/en/how_to_turn_off_form_autocompletion&quot;&gt;Disable autocomplete&lt;/a&gt; by adding &lt;code&gt;autocomplete=&quot;off&quot;&lt;/code&gt; on the &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; element. This technique has been supported by browsers since IE 5 (March 1999) and Netscape 6.2 (October 2001), and now &lt;a href=&quot;http://www.w3.org/TR/html5/forms.html#attr-form-autocomplete&quot;&gt;made its way&lt;/a&gt; into HTML5.&lt;/li&gt;
&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/7428206724417771602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/7428206724417771602'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2010/11/autocomplete-and-javascript-change.html' title='Autocomplete and JavaScript Change Event'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-4275317309923487274</id><published>2010-11-18T11:03:00.001-08:00</published><updated>2010-11-18T11:05:49.553-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="css"/><title type='text'>Making readonly form fields easier to identify</title><content type='html'>&lt;p&gt;Readonly form controls, or &quot;&lt;a href=&quot;http://www.w3.org/TR/html5/association-of-controls-and-forms.html#enabling-and-disabling-form-controls&quot;&gt;disabled&lt;/a&gt;&quot; in the HTML parlance, can be hard to distinguish from fields users can type into. Firefox and IE are doing an equally bad job, and making the distinction would be close to impossible if the field was empty to start with:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/6900/resources/20101118-readonly-default.png&quot; alt=&quot;How default readonly input and text area are rendered by IE 7 and Firefox 4&quot; title=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;Adding a grey background to disabled fields is a good way to help users distinguish between readonly (disabled) and read-write (non-disabled) form controls:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/6900/resources/20101118-readonly-background.png&quot; alt=&quot;How readonly input and text area are rendered by IE 7 and Firefox 4 using a background color&quot; title=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;IE 7 onwards supports CSS &lt;a href=&quot;http://www.w3.org/TR/CSS21/selector.html#attribute-selectors&quot;&gt;attribute selectors&lt;/a&gt;, so if you don&#39;t need to support IE 6, the following CSS will do the trick:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;textarea[disabled], input[disabled] { background-color: #eee }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;However, if you need to support IE 6, you&#39;ll need to decorate your readonly form controls with a class. Some frameworks, such as some &lt;a href=&quot;http://www.orbeon.com/&quot;&gt;XForms implementations&lt;/a&gt;, do this automatically for you. For instance, if all your readonly form controls are automatically inside an element with the class &lt;code&gt;xforms-readonly&lt;/code&gt;, you can write:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;.xforms-readonly textarea, .xforms-readonly input { background-color: #eee }
&lt;/code&gt;&lt;/pre&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/4275317309923487274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/4275317309923487274'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2010/11/making-readonly-form-fields-easier-to.html' title='Making readonly form fields easier to identify'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-9219006223359025774</id><published>2010-11-15T14:41:00.000-08:00</published><updated>2010-11-15T14:41:07.947-08:00</updated><title type='text'>Indemnification</title><content type='html'>&lt;p&gt;&lt;em&gt;(First, two words of disclaimer: &lt;a href=&quot;http://en.wikipedia.org/wiki/IANAL&quot;&gt;IANAL&lt;/a&gt;—TINLA. Seriously.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you are selling software, your customers might occasionally ask you if you provide indemnification. In a nutshell, your customers are looking to be protected in case your software infringes on a third-party intellectual property, such as a patent or copyrighted code, and as a consequence your customers gets sued by this third party. By agreeing to provide indemnification coverage to your customers, you are telling them that if this were to happen, you would:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Defend them in court, and pay for &lt;strong&gt;legal fees&lt;/strong&gt; — hiring the legal team or covering legal cost.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Repair or replace&lt;/strong&gt; your product — changing your software as necessary, so it doesn&#39;t infringe anymore on any third-party intellectual property. Depending on how your indemnification clause is written, this may mean removing, instead of replacing, the infringing functionality.&lt;/li&gt;
&lt;li&gt;Pay for &lt;strong&gt;damages and settlement fees&lt;/strong&gt; — those being damages you occasioned to your customers and settlement fees your customers might have to pay to a third-party as a result of you infringing on that third-party intellectual property.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Indemnification clauses often include limitations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;In scope&lt;/strong&gt; —&amp;nbsp;Each one of the above points (especially number 2 and 3) may or may not be included; if it is included, coverage is often limited.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In dollar amount&lt;/strong&gt; — A cap is often set to the value of the contract. For instance, for non volume licensing contracts, &lt;a href=&quot;http://www.microsoft.com/mscorp/execmail/2004/10-27platformvalue.mspx&quot;&gt;Microsoft used to have a cap on damages and settlement fees&lt;/a&gt;. Microsoft later changed this policy to remove the cap for legal defense (point 1 above), but they are still &lt;a href=&quot;http://download.microsoft.com/download/9/D/0/9D0A6265-A509-416C-80AE-BB6C0A9D1B99/IP%20Indemnification%20Policy.docx&quot;&gt;keeping a cap for damages and settlement fees&lt;/a&gt; (point 3 above). Similarly, &lt;a href=&quot;http://www.redhat.com/legal/open_source_assurance_agreement.html&quot;&gt;Red Hat&#39;s indemnification caps&lt;/a&gt; their liability to the total fees paid by their client during the previous year.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In time&lt;/strong&gt; — For instance, as mentioned earlier, Microsoft still has a cap a on how much they will pay for damages and settlement fees. That cap is set to the amount paid to them by their customer during the prior one or two years, depending on the cases. Similarly, and as mentioned earlier, Red Hat&#39;s total cumulative liability is capped to the total amount in payments made by their customer during the previous year.&lt;/li&gt;
&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/9219006223359025774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/9219006223359025774'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2010/11/indemnification.html' title='Indemnification'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-5570981674836098616</id><published>2010-08-12T20:09:00.000-07:00</published><updated>2010-11-11T10:44:04.276-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google"/><title type='text'>iOS Mail for multiple email accounts with Gmail</title><content type='html'>&lt;h3&gt;The setup&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You use two email addresses: you@a.com and you@b.com.&lt;/li&gt;
&lt;li&gt;All incoming email to both addresses is forwarded to your Gmail account: you@gmail.com.&lt;/li&gt;
&lt;li&gt;You setup Gmail to be able to send messages as either you@a.com or you@b.com.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;http://dl.dropbox.com/u/6900/resources/20100908-ios-two-emails.png&quot; alt=&quot;Two incoming SMTP, one IMAP&quot; title=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;With this setup, all your email arrives in a unique Gmail account, which can also access through IMAP. When creating a new message in the Gmail web app, you can choose which email should be used as the &lt;em&gt;from&lt;/em&gt; address (either you@a.com or you@b.com). When responding to a message, Gmail automatically preselects the address the message you are responding to was sent to, and allows you to override that choice. So far so good.&lt;/p&gt;

&lt;h3&gt;The problem&lt;/h3&gt;

&lt;p&gt;The only trouble with this setup is when using Gmail&#39;s mobile interface, in particular on the iPhone/iOS. The mobile interface behaves as the desktop interface, except it doesn&#39;t allow you to change the from address. When sending a new message, it is always sent from your default email (say you@a.com), which means you can&#39;t send a new message from you@b.com. Also, you can&#39;t override the email chosen by Gmail when responding to messages.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;iOS Mail only supports one email per account (unlike the OS X Mail.app) – If you want two email addresses, you&#39;ll need two incoming IMAP or POP servers. You can work around this by setting up a Dummy IMAP server as follows:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Account 1: you@a.com, Unique (real) IMAP, SMTP A.&lt;/li&gt;
&lt;li&gt;Account 2: you@b.com, Dummy IMAP, SMTP B.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When sending an email, you want a copy saved in your Sent folder on your (Unique) IMAP server. You can set this up for you@a.com. But what about you@b.com? Storing outgoing email on Dummy IMAP isn&#39;t what you want. You can use the BCC functionality of Mail, and have Mail BCC you@b.com every time you send an email with that address. Unfortunately, at least for those of us using Gmail to handle their email you@b.com, Gmail doesn&#39;t seem to be able to forward incoming mail from and to you@b.com, maybe because it doesn&#39;t consider it as incoming mail but as sent mail. So you can&#39;t forward those BCC to you@gmail.com, to have them end up in the Sent folder of your unique IMAP server.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;When using Mail, with the best possible setup, you can&#39;t get the emails sent from one of your emails to end up on your unique IMAP server. Unless controlling what email is used when sending message is paramount to you, and you are fine with, on a regular basis, using a desktop mail client to move the Sent messages from Dummy IMAP to Unique IMAP, you are better off using the Gmail mobile web app.&lt;/p&gt;

&lt;p&gt;Hopefully, one day, Google will add the ability for you to select the from email address in their mobile web app, as they already do in their desktop web app: we&#39;ll look back, and laugh at how complex it used to be, int the old days, to setup that old iOS Mail.&lt;/p&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5570981674836098616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/5570981674836098616'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2010/08/ios-mail-for-multiple-email-accounts.html' title='iOS Mail for multiple email accounts with Gmail'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-6091394494488638546</id><published>2010-07-27T14:00:00.000-07:00</published><updated>2010-11-21T21:55:48.540-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tool"/><title type='text'>Spell It</title><content type='html'>&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot; src=&quot;http://yui.yahooapis.com/3.1.1/build/yui/yui-min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    var ALPHABET = {
        &quot;a&quot;: &quot;Alpha&quot;,
        &quot;b&quot;: &quot;Bravo&quot;,
        &quot;c&quot;: &quot;Charlie&quot;,
        &quot;d&quot;: &quot;Delta&quot;,
        &quot;e&quot;: &quot;Echo&quot;,
        &quot;f&quot;: &quot;Fox&quot;,
        &quot;g&quot;: &quot;Golf&quot;,
        &quot;h&quot;: &quot;Hotel&quot;,
        &quot;i&quot;: &quot;India&quot;,
        &quot;j&quot;: &quot;Juliet&quot;,
        &quot;k&quot;: &quot;Kilo&quot;,
        &quot;l&quot;: &quot;Lima&quot;,
        &quot;m&quot;: &quot;Mike&quot;,
        &quot;n&quot;: &quot;November&quot;,
        &quot;o&quot;: &quot;Oscar&quot;,
        &quot;p&quot;: &quot;Papa&quot;,
        &quot;q&quot;: &quot;Quebec&quot;,
        &quot;r&quot;: &quot;Romeo&quot;,
        &quot;s&quot;: &quot;Sierra&quot;,
        &quot;t&quot;: &quot;Tango&quot;,
        &quot;u&quot;: &quot;Uniform&quot;,
        &quot;v&quot;: &quot;Victor&quot;,
        &quot;w&quot;: &quot;Whiskey&quot;,
        &quot;x&quot;: &quot;X-Ray&quot;,
        &quot;y&quot;: &quot;Yankee&quot;,
        &quot;z&quot;: &quot;Zulu&quot;
    };
    YUI().use(&quot;node&quot;, &quot;event&quot;, function(Y) {

        var inputControl = Y.one(&quot;#input&quot;);

        function updateSpelling() {
            var inputValue = inputControl.get(&quot;value&quot;);
            var outputValue = &quot;&quot;;
            for (var charIndex = 0; charIndex &lt; inputValue.length; charIndex++) {
                var character = inputValue[charIndex].toLowerCase();
                if (character != &quot; &quot;) {
                    outputValue += character;
                    var word = ALPHABET[character];
                    if (! Y.Lang.isUndefined(word)) outputValue += &quot; - &quot; + word
                }
                outputValue += &quot;&lt;br/&gt;&quot;;
            }
            var outputDiv = Y.one(&quot;#output&quot;);
            outputDiv.set(&quot;innerHTML&quot;, outputValue);
        }

        Y.on(&quot;keyup&quot;, updateSpelling, inputControl);
        updateSpelling();
        if (window.location.href == &quot;http://avernet.blogspot.com/2010/07/spell-it.html&quot;) {
            inputControl.focus();
            inputControl.select();
        }
    });
&lt;/script&gt;
&lt;style type=&quot;text/css&quot;&gt;
    #output { font-family: monospace; margin-top: 1em }
&lt;/style&gt;
&lt;div&gt;
    &lt;label for=&quot;input&quot;&gt;Word to spell:&lt;/label&gt; &lt;input id=&quot;input&quot; name=&quot;text&quot; value=&quot;inconspicuous&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;output&quot;&gt;

&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6091394494488638546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/6091394494488638546'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2010/07/spell-it.html' title='Spell It'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6757823.post-2974440959686108591</id><published>2009-11-19T17:23:00.000-08:00</published><updated>2009-11-19T17:58:12.998-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><title type='text'>Running VirtualBox in Headless Mode</title><content type='html'>&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 150px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj5JEKlC-UCWLLNoQDzVAnQBpIQL_gGLM32-bslsSstg_QODf3n5B2a5h5ELp4vZu9gEG6uFD-6bvby8ILR1q6mBHMJyTXk4KEcUMG6P-6gYGmRJUrSacHqlmczHrCR_ixgVyyHw/s400/virtualbox.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5405991152522056898&quot; border=&quot;0&quot; /&gt;I first started using Parallels on Mac OS X, later switched to VMware, and now use VirtualBox, which I love. But I have to say that I don&#39;t particularly fancy its UI. I find it inconvenient that you need to first hit special key (by default &lt;i&gt;command&lt;/i&gt;) to escape the VirtualBox environment. Frankly, I&#39;d rather use Remote Desktop to connect to VirtualBox. And now I do.&lt;br /&gt;&lt;br /&gt;The process is rather simple. I&#39;ll start assuming that you already have a working VM setup in VirtualBox:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You can have multiple VMs setup in VirtualBox. In my case, I have only one, named &quot;Windows 7&quot;. To know the name of your VM, from the command line run:&lt;blockquote&gt;&lt;code&gt;VBoxManage list vms&lt;/code&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;Once you know the name of your VM (which I&#39;ll assume to be &quot;Windows 7&quot;), start the VM with:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;VBoxHeadless -s &quot;Windows 7&quot; &amp;amp;&lt;/code&gt;&lt;/blockquote&gt;I like to start VirtualBox in the background, hence the &lt;code&gt;&amp;amp;&lt;/code&gt; at the end of the command line. This is because &lt;code&gt;VBoxHeadless&lt;/code&gt; doesn&#39;t output anything to the standard output after it has started, and you don&#39;t want to stop it by mistake by hitting ctrl-c, as you would loose the state of you VM. Instead you&#39;ll want to save the VM state (more on this below).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Start Remote Desktop. If you are on a Mac, Microsoft has a free &lt;a href=&quot;http://www.microsoft.com/mac/products/remote-desktop/default.mspx&quot;&gt;Remote Desktop for OS X&lt;/a&gt;. Connect to the VM using Remote Desktop using the host name or IP of the machine running VirtualBox. For instance, if you are running VirtualBox and Remote Desktop on the same machine, that would be &lt;code&gt;localhost&lt;/code&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;To stop VirtualBox while saving the state of the VM, run: &lt;blockquote&gt;&lt;code&gt;VBoxManage controlvm &quot;Windows 7&quot; savestate&lt;/code&gt;&lt;/blockquote&gt; Next time you start VirtualBox (as in step 2 above), it will used that saved state.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2974440959686108591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6757823/posts/default/2974440959686108591'/><link rel='alternate' type='text/html' href='http://avernet.blogspot.com/2009/11/running-virtualbox-in-headless-mode.html' title='Running VirtualBox in Headless Mode'/><author><name>Alessandro Vernet</name><uri>http://www.blogger.com/profile/06085176014230803685</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm1.static.flickr.com/122/269903379_c4b40a3570.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj5JEKlC-UCWLLNoQDzVAnQBpIQL_gGLM32-bslsSstg_QODf3n5B2a5h5ELp4vZu9gEG6uFD-6bvby8ILR1q6mBHMJyTXk4KEcUMG6P-6gYGmRJUrSacHqlmczHrCR_ixgVyyHw/s72-c/virtualbox.png" height="72" width="72"/></entry></feed>