<?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-1160088509642785752</id><updated>2024-11-01T02:10:11.849-07:00</updated><category term="eclipse"/><category term="osgi"/><category term="shortcuts"/><category term="ux"/><category term="health IT"/><category term="java"/><category term="rant"/><category term="skype"/><category term="xml"/><title type='text'>Parenthetical Thoughts</title><subtitle type='html'>(Random musings on life, technology, and the intersection thereof)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-6328823352478475493</id><published>2016-05-22T08:46:00.000-07:00</published><updated>2016-06-06T10:07:25.661-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="health IT"/><title type='text'>A quick and dirty medical dictionary for your Mac</title><content type='html'>I work on a lot of health IT projects at work and, as such, I face a constant stream of red squiggles provided by the spellcheck utilities of almost every major editor. &amp;nbsp;Over the years, I&#39;ve built up quite a few &#39;User Dictionaries&#39; by adding terms to each spellchecker one-by-one.&lt;br /&gt;
&lt;br /&gt;
Today, I decided to look into whether my Mac offers a more centralized user dictionary to see if I might pre-populate it with all these medical terms instead. &amp;nbsp;Answer:&amp;nbsp;&lt;a href=&quot;http://computers.tutsplus.com/tutorials/quick-tip-bulk-add-words-to-your-macs-spell-check-dictionary--mac-60820&quot;&gt;Yup&lt;/a&gt;. And its just a simple text file with one term per line.&lt;br /&gt;
&lt;br /&gt;
Now this is where the little-known &lt;a href=&quot;https://lsg3.nlm.nih.gov/LexSysGroup/Projects/lexicon/current/web/index.html&quot;&gt;SPECIALIST Lexicon&lt;/a&gt; from the US National Library of Medicine comes in. &amp;nbsp;The lexicon is a freely available &quot;syntactic lexicon of biomedical and general English&quot; that includes terms in the following format:&lt;br /&gt;
&lt;pre&gt;{base=cotton roll gingivitis
spelling_variant=cotton-roll gingivitis
entry=E0000001
        cat=noun
        variants=glreg
        variants=uncount
}
{base=2060 virus
entry=E0000010
        cat=noun
        variants=reg
}
...
&lt;/pre&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;There may be a version with one term per line, but I figured it would be easier just to use some unix-fu to get it in the right format. &amp;nbsp;So, if you&#39;re following along, simply open a Terminal and do the following:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class=&quot;s1&quot;&gt;1. Navigate to the latest &lt;a href=&quot;https://lsg3.nlm.nih.gov/LexSysGroup/Projects/lexicon/current/web/release/&quot;&gt;Lexicon release&lt;/a&gt;&amp;nbsp;and download the Lexicon (text) by right-clicking the link and choosing the appropriate save option (don&#39;t left-click/navigate to the link unless you want your browser to hang for a bit...the file is fairly large).&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;2. Make a LocalDictionary backup (optional)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;If you already have a LocalDictionary, you may want to back it up first in case something goes wrong:&lt;/span&gt;&lt;/div&gt;
&lt;pre&gt;cp ~/Library/Spelling/LocalDictionary ~/Library/Spelling/LocalDictionary.backup
&lt;/pre&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;3. Navigate to where you downloaded the LEXICON file and add the terms from it&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
Perhaps a little dirty, but I don&#39;t think this LEXICON format has changed in like 10 years, so here are a couple lines to add the terms to your Local Dictionary in the proper format:&lt;/div&gt;
&lt;pre&gt;grep &quot;{base=&quot; LEXICON | cut -c 7- &amp;gt;&amp;gt; ~/Library/Spelling/LocalDictionary
grep &quot;spelling_variant=&quot; LEXICON | cut -c 14- &amp;gt;&amp;gt; ~/Library/Spelling/LocalDictionary
&lt;/pre&gt;
&lt;div class=&quot;p1&quot;&gt;
4. Sort the terms&lt;br /&gt;
According to that tutsplus article I linked earlier, the Mac spellcheck file needs to be sorted alphabetically.&lt;/div&gt;
&lt;pre&gt;sort -o ~/Library/Spelling/LocalDictionary ~/Library/Spelling/LocalDictionary 
&lt;/pre&gt;
If you made a LocalDictionary backup, I won&#39;t tell you to go delete it yet because I&#39;ve only just made the change and so I&#39;m not sure whether having an 8 MB LocalDictionary will have any downsides, but so far it seems to be working.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/6328823352478475493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/6328823352478475493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/6328823352478475493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/6328823352478475493'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2016/05/a-quick-and-dirty-medical-dictionary.html' title='A quick and dirty medical dictionary for your Mac'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-4807398771831731863</id><published>2016-01-22T07:18:00.002-08:00</published><updated>2016-01-27T07:15:52.240-08:00</updated><title type='text'>Training your digital assistant</title><content type='html'>Despite reading articles like &lt;a href=&quot;http://www.wired.com/2015/09/voice-interface-ios/&quot;&gt;http://www.wired.com/2015/09/voice-interface-ios/&lt;/a&gt;, every time I use a digital assistant application to interact with my device, I&#39;m reminded of how limited they really are. Still useful for a certain set of commands (notes, reminders, factual questions, etc.), but not even close to the type of &quot;conversational computing&quot; imagined in videos like&amp;nbsp;&lt;a href=&quot;http://blog.ibmjstart.net/2016/01/07/why-being-able-to-talk-to-your-computer-may-change-your-life/&quot;&gt;http://blog.ibmjstart.net/2016/01/07/why-being-able-to-talk-to-your-computer-may-change-your-life/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So what I&#39;m asking for is much simpler; just let me easily program a set of voice commands for my own device. Or, more precisely, let me teach my digital assistant how to interpret my words over time. When you search google about training a digital assistant like Siri or Cortana, all the information seems to be about training the voice recognition. &amp;nbsp;But thats only a small part of the problem. &amp;nbsp;Why isn&#39;t it easier to create simple verbal commands to trigger a specific action on your device?&lt;br /&gt;
&lt;br /&gt;
For example, if there is an app I use a lot, I should be able to set a verbal launch command (without buying a 3rd party app launcher). &amp;nbsp;I should be able to record &quot;macros&quot; of events on the phone and then assign a verbal command to replay that exact set of events (e.g. open an app, click a button in the app, swipe to the second tab/screen of it).&lt;br /&gt;
&lt;br /&gt;
Basically, I think the voice recognition should evolve with me to understand the types of things I&#39;m likely to ask for. If it misinterprets what I&#39;m asking for, I should be able to give it a simple piece of negative feedback so that it can try a different interpretation in the future. Or better yet, it could learn to measure its success based on my implicit feedback (if I redo a very similar command, I&#39;m probably looking for a different result).&lt;br /&gt;
&lt;br /&gt;
I really do hope that WIRED article is right and that smarter digital assistants are right around the corner, but I wouldn&#39;t hold my breath. If they do arrive, we&#39;ll just have to solve that silly little problem of getting people more comfortable with &lt;a href=&quot;http://parenthetical-thoughts.blogspot.com/2016/01/training-next-generation-to-dictate.html&quot;&gt;talking to their devices&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/4807398771831731863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/4807398771831731863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/4807398771831731863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/4807398771831731863'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2016/01/training-your-digital-assistant.html' title='Training your digital assistant'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-2046044984830420257</id><published>2016-01-22T07:18:00.000-08:00</published><updated>2016-01-22T07:18:05.377-08:00</updated><title type='text'>Training the next generation to dictate</title><content type='html'>Recently, I&#39;ve shared &lt;a href=&quot;http://parenthetical-thoughts.blogspot.com/2016/01/self-aware-digital-assistants.html&quot;&gt;some thoughts&lt;/a&gt; on the current user experience of digital assistants like Siri and Cortana. &amp;nbsp;A couple years ago, I bemoaned the lack of a more direct voice-to-system channel in our modern consumer technology:&lt;br /&gt;
&lt;a href=&quot;http://parenthetical-thoughts.blogspot.com/2013/11/walkie-talkie-ultimate-phone-experience.html&quot;&gt;http://parenthetical-thoughts.blogspot.com/2013/11/walkie-talkie-ultimate-phone-experience.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
One of the reasons I&#39;m so stuck on this is that I feel like we finally have the technology to make conversational computing a normal mode of interaction with our devices. &amp;nbsp;I&#39;ve been surprised to see that so many people are carrying smart phones and yet very few &quot;normals&quot; are using voice input.&lt;br /&gt;
&lt;br /&gt;
I doubt that many would disagree that mobile devices are not good for typing. And yet, much to my surprise, younger generations have turned to text messaging as a primary form of communication, &lt;a href=&quot;https://www.youtube.com/watch?v=wBOCHPCYnDw&quot;&gt;defacing the english language&lt;/a&gt; to make it slightly less painful to type their messages on their tiny little devices.&lt;br /&gt;
&lt;br /&gt;
Sure, there are many contexts in which a voice input channel doesn&#39;t make sense, but I would argue that much of the time it does. So, if dictation is a better, more efficient, input mechanism for the majority of users, in the majority of cases, why isn&#39;t it more common? One explanation for this is that &lt;b&gt;dictation is hard&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
When I&#39;m driving and try to dictate an email, text message, or note on my phone, its always full of stutters and breaks. To do it properly, I need to think out my entire sentence before I verbalize it to my device. While typing, I find it much easier to finish the thought in the midst of entry. Its funny how different it feels to talk to your device than it does to talk to a person...even if that person is not in the same physical location.&lt;br /&gt;
&lt;br /&gt;
My theory is that this is learned, societal behavior. Further, I suspect that if I started dictating at a very young age, that dictation process would feel much more natural. Has anyone done an experiment like that? I&#39;m seriously considering teaching my daughters to get into the habit of talking to a device just to see...maybe some kind of diary app?</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/2046044984830420257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/2046044984830420257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2046044984830420257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2046044984830420257'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2016/01/training-next-generation-to-dictate.html' title='Training the next generation to dictate'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-7240769090496095994</id><published>2016-01-22T07:09:00.000-08:00</published><updated>2016-01-22T07:09:08.992-08:00</updated><title type='text'>Self-aware digital assistants</title><content type='html'>&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;/blockquote&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVb-qmTJ9wUP4IL-GZBPhYaucEa7aR3kcveLkuhQUGNv87RR1WR-O3FGZ_OZa2RItuekXVTYlAJkcQpfTkmhzEH7ymjdQJI3iNAYkIagN-Oh7SHeZZZawOSqussZj-NmJR_eywFombdqo/s1600/Tao_Chi_001.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;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVb-qmTJ9wUP4IL-GZBPhYaucEa7aR3kcveLkuhQUGNv87RR1WR-O3FGZ_OZa2RItuekXVTYlAJkcQpfTkmhzEH7ymjdQJI3iNAYkIagN-Oh7SHeZZZawOSqussZj-NmJR_eywFombdqo/s640/Tao_Chi_001.jpg&quot; width=&quot;224&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, &#39;Bitstream Vera Sans&#39;, sans-serif; font-size: 14px; line-height: 22px;&quot;&gt;Knowing others is intelligence; knowing yourself is true&amp;nbsp;wisdom.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Arial, Helvetica, &#39;Bitstream Vera Sans&#39;, sans-serif; font-size: 14px; line-height: 22px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - Lao Tzu&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Does anyone else find it annoying that the digital assistants that are built into modern consumer technology (like Apple&#39;s Siri and Microsoft&#39;s Cortana) can answer questions about the world, but when you start to experience problems with your device they are the least helpful &quot;person&quot; in the world?&lt;br /&gt;
&lt;br /&gt;
I recently upgraded to Windows 10 at home and I think the first 3 times I used Cortana, I tried to ask her questions about my installation. &amp;nbsp;Here are the type of questions I expect a smart digital assistant to be able to answer:&lt;br /&gt;
&lt;br /&gt;
1. Is everything OK? &amp;nbsp;(did the installation go smoothly? &amp;nbsp;any errors/warnings I should know about?)&lt;br /&gt;
2. Why is my computer/phone going so slow? &amp;nbsp;(what is the current bottleneck? &amp;nbsp;CPU? &amp;nbsp;Memory? &amp;nbsp;What is using all the resources?)&lt;br /&gt;
3. Why am I out of disk space? &amp;nbsp;(what is the largest set of folders and files in my system?)&lt;br /&gt;
4. Why aren&#39;t my speakers working? &amp;nbsp;(scan device drivers, tell me what speakers are/aren&#39;t connected/make suggestions)&lt;br /&gt;
&lt;br /&gt;
Questions like this might not be sexy, but I think it will feel natural to ask your phone/computer about itself. &amp;nbsp;Maybe digital assistants like Siri and Cortana should spend some time learning about themselves before they turn outward and help their users...</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/7240769090496095994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/7240769090496095994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7240769090496095994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7240769090496095994'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2016/01/self-aware-digital-assistants.html' title='Self-aware digital assistants'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVb-qmTJ9wUP4IL-GZBPhYaucEa7aR3kcveLkuhQUGNv87RR1WR-O3FGZ_OZa2RItuekXVTYlAJkcQpfTkmhzEH7ymjdQJI3iNAYkIagN-Oh7SHeZZZawOSqussZj-NmJR_eywFombdqo/s72-c/Tao_Chi_001.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-3548039882251364586</id><published>2015-11-17T08:28:00.000-08:00</published><updated>2015-11-24T14:40:40.136-08:00</updated><title type='text'>Personal searches from the address bar in Firefox and Chrome</title><content type='html'>&lt;p&gt;Most modern browsers allow you to invoke the default search engine directly from the Address bar (aka the &lt;a href=&quot;https://support.mozilla.org/en-US/kb/awesome-bar-search-firefox-bookmarks-history-tabs&quot;&gt;awesome bar&lt;/a&gt; or the &lt;a href=&quot;https://developer.chrome.com/extensions/omnibox&quot;&gt;omnibox&lt;/a&gt;), but did you know that you can easily access other search engines from the very same box? Assigning a keyword for alternate searches will allow you to invoke that search directly from the Address bar by typing the keyword, followed by a space and then the search query.&lt;/p&gt;

&lt;p&gt;When paired with a shortcut to jump to the Address bar (e.g. &lt;a href=&quot;http://parenthetical-thoughts.blogspot.com/2008/09/keyboard-shortcuts-others.html&quot;&gt;Control + L&lt;/a&gt;), these keyword searches make for great workflow in the browser.&lt;/p&gt;
&lt;p&gt;Adding new keyword search is easy: simply right-click on any search box and choose &lt;strong&gt;Add As Search Engine&lt;/strong&gt; (Chrome) or &lt;strong&gt;Add a Keyword for this Search...&lt;/strong&gt; (Firefox). Use the Keyword field to give the search a short handle that you can quickly type into the address bar to prefix your search.&lt;/p&gt;

&lt;h3&gt;How It Works&lt;/h3&gt;
&lt;p&gt;In both Chrome and Firefox, the URL field is the secret to making this work. The browser will automatically replace the &quot;%s&quot; string with the contents of your search query, meaning you can define a custom search for just about any URL.&lt;/p&gt;
&lt;p&gt;To edit a keyword search, or to create your own from scratch, the process varies a little between the two broswers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Chrome, right-click the address bar and select &lt;strong&gt;Edit Search Engines...&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;In Firefox, the keyword searches are managed as bookmarks and can be created/edited from the manage bookmarks dialog.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;My Searches&lt;/h3&gt;
&lt;p&gt;Full disclosure: the real reason I wrote this post is to document my keyword searches for future me. If you are a web developer or happen to use the same services as me, then maybe you can benefit from them too:&lt;p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Site&lt;/th&gt; &lt;th&gt;Keyword&lt;/th&gt; &lt;th&gt;URL&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Wikipedia&lt;/td&gt; &lt;td&gt;wp&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;http://en.wikipedia.org/w/index.php?title=Special:Search&amp;amp;search=%s&quot;&gt;http://en.wikipedia.org/w/index.php?title=Special:Search&amp;amp;search=%s&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Delicious (links)&lt;/td&gt; &lt;td&gt;d&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;https://delicious.com/lmsurprenant/%s&quot;&gt;https://delicious.com/lmsurprenant/%s&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Stack Overflow&lt;/td&gt; &lt;td&gt;so&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;http://stackoverflow.com/search?q=%s&quot;&gt;http://stackoverflow.com/search?q=%s&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Mozilla Developer Network&lt;/td&gt; &lt;td&gt;mdn&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;http://mdn.io/%s&quot;&gt;http://mdn.io/%s&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Node Packaged Modules&lt;/td&gt; &lt;td&gt;npm&lt;/td&gt; &lt;td&gt;&lt;a href=&quot;http://node-modules.com/search?q=%s&quot;&gt;http://node-modules.com/search?q=%s&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Evernote&lt;/td&gt; &lt;td&gt;ever&lt;/td&gt; &lt;td&gt;https://www.evernote.com/Home.action?offer=www_menu#n=056dfe4a-e94a-4d9f-8e49-cac92a0d21bb&amp;amp;ses=1&amp;amp;sh=5&amp;amp;sds=5&amp;amp;x=polygraphy&amp;amp;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Note that the Evernote one is custom. To create one for your own account, try the following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in&lt;/li&gt;
&lt;li&gt;Do a search&lt;/li&gt;
&lt;li&gt;Find and replace your query with &quot;%s&quot;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don&#39;t understand why they make that so hard, but at least it seems to work (an improvement from a year ago):&lt;/p&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;&lt;a href=&quot;https://twitter.com/evernotehelps&quot;&gt;@evernotehelps&lt;/a&gt; How do I set a keyword search to search my notes from browser url? In old website, I just set to &lt;a href=&quot;https://t.co/pBgnkTNor1&quot;&gt;https://t.co/pBgnkTNor1&lt;/a&gt;&lt;/p&gt;&amp;mdash; Lee Surprenant (@lmsurprenant) &lt;a href=&quot;https://twitter.com/lmsurprenant/status/535522831975452672&quot;&gt;November 20, 2014&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;&lt;a href=&quot;https://twitter.com/lmsurprenant&quot;&gt;@lmsurprenant&lt;/a&gt; Got it. This isn&amp;#39;t something that we directly support. Let me see if I can gather some information on this.&lt;/p&gt;&amp;mdash; Evernote Helps (@evernotehelps) &lt;a href=&quot;https://twitter.com/evernotehelps/status/537296476959809537&quot;&gt;November 25, 2014&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/3548039882251364586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/3548039882251364586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/3548039882251364586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/3548039882251364586'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2015/11/personal-searches-from-address-bar-in.html' title='Personal searches from the address bar in Firefox and Chrome'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-1909894281752279571</id><published>2015-08-11T22:06:00.001-07:00</published><updated>2015-08-11T22:06:29.983-07:00</updated><title type='text'>Being a good Netizen</title><content type='html'>If your job involves working on a computer all day (especially if you are in the technology business), then you probably couldn&#39;t do your job without the world wide web. &amp;nbsp;Please consider it your duty to give back.&lt;br /&gt;
&lt;br /&gt;
As knowledge workers, we are trained to pull information from across the web and combine it with our own knowledge and experiences. &amp;nbsp;On some problems, good information is easy to find. &amp;nbsp;On others, you need to invest significant effort to figure it out. &amp;nbsp;In the latter case, post your insights back to the web.&lt;br /&gt;
&lt;br /&gt;
With social media (and modern software development), this is easier than ever. &amp;nbsp;Try to link your post to the most authoritative place for the subject at hand. &amp;nbsp;If you cannot post it in-context, then provide enough context so that someone reasonably familiar with the topic could understand what you are saying.&lt;br /&gt;
&lt;br /&gt;
This will make the content searchable and it will help both you and others. &amp;nbsp;The harder it is to find good info, the more time you spend on research, the more obscure your insights, the more important it is to post.&lt;br /&gt;
&lt;br /&gt;
It sounds obvious, but I&#39;m amazed at the number of engineers I&#39;ve worked with that will spend significant time figuring something out, and then simply move on to the next problem without committing their findings to the public record. &amp;nbsp;When I do that, I&#39;m doomed to repeat the exercise all over.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6X7-TuAzLv0OCLL2PdrN-v1tJdv0382itjm7TemcBiFgLfuoVbsV6WwLUH9PXiDWFV8RSv1hId9wcEuKXd7PCCOEhdy6Iexs31X8KBHqeX6Kv0cYJqDnP0g6mWWmIVOm7oXw7i6aXWm0/s1600/3847575044_6dee70111b_z.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;235&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6X7-TuAzLv0OCLL2PdrN-v1tJdv0382itjm7TemcBiFgLfuoVbsV6WwLUH9PXiDWFV8RSv1hId9wcEuKXd7PCCOEhdy6Iexs31X8KBHqeX6Kv0cYJqDnP0g6mWWmIVOm7oXw7i6aXWm0/s320/3847575044_6dee70111b_z.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;background-color: white; color: #222222; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: 16.5px; text-align: start;&quot;&gt;Leave the web a little better than you found it.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/1909894281752279571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/1909894281752279571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1909894281752279571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1909894281752279571'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2015/08/being-good-netizen.html' title='Being a good Netizen'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6X7-TuAzLv0OCLL2PdrN-v1tJdv0382itjm7TemcBiFgLfuoVbsV6WwLUH9PXiDWFV8RSv1hId9wcEuKXd7PCCOEhdy6Iexs31X8KBHqeX6Kv0cYJqDnP0g6mWWmIVOm7oXw7i6aXWm0/s72-c/3847575044_6dee70111b_z.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-1139455353645269597</id><published>2013-11-19T22:37:00.000-08:00</published><updated>2013-11-19T22:37:02.048-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ux"/><title type='text'>Walkie-Talkie - The Ultimate Phone Experience?</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/AVvXsEhZdGGUoJ0gvJD4MLr7a-MJUkcvItZ_kPsqiO8UEik-wuh2hDRJBBZUoO1DYzdj4qx0s7q5iojmERae8XlEnaOpJ_-JVT6mJzauzWcJaKLn3Lj1iDq-t5azNQY4s8MFlsiaKrY3IeMnCOc/s1600/Two-Way-Radio-and-Walkie-Talkie-Interphone-Mag-One-A8.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/AVvXsEhZdGGUoJ0gvJD4MLr7a-MJUkcvItZ_kPsqiO8UEik-wuh2hDRJBBZUoO1DYzdj4qx0s7q5iojmERae8XlEnaOpJ_-JVT6mJzauzWcJaKLn3Lj1iDq-t5azNQY4s8MFlsiaKrY3IeMnCOc/s320/Two-Way-Radio-and-Walkie-Talkie-Interphone-Mag-One-A8.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The trouble with smart phones is that its hard to input text. I seem to be especially bad at this.&lt;br /&gt;
First on Android, and now iOS, they have built-in a microphone button on the on-screen keyboard to enable voice-to-text (dictation). I think this is the future I want to live in, but the thing is, I&#39;m not very good at this dictating either.&lt;br /&gt;
&lt;br /&gt;
I wonder if future generations will become very good at dictating or if 
its so socially unacceptable that our race is destined to be typing on 
these screens forever.&lt;br /&gt;
&lt;br /&gt;
In any event, my issue with this voice-to-text button on the keyboard is that its buried on the keyboard. What I really want is something I can do without looking at the screen at all.&amp;nbsp; Like &quot;touch-typing&quot; on a keyboard.&lt;br /&gt;
&lt;br /&gt;
For instance, in the car, I can&#39;t afford to look down at my phone. And don&#39;t even get me started on our Ford Escape with Microsoft Sync...&lt;br /&gt;
&lt;br /&gt;
Anyway, it turns out that holding the iPhone button to get to Apple&#39;s Siri gets me &#39;close&#39; to what I want, but I think there&#39;s lots of room for improvement. I don&#39;t want to hold the button for a second before I can start talking. And I don&#39;t want Siri to listen for a while until she thinks I&#39;m done...only to tell me that my request didn&#39;t make sense to her.&lt;br /&gt;
&lt;br /&gt;
On my friend&#39;s new Android, the phone is &quot;always listening&quot;.&amp;nbsp; This is kinda cool (and kind of creepy), but you need to wake it up by saying something like &quot;OK Google&quot; which makes you feel a bit ridiculous in public (and maybe even in private).&lt;br /&gt;
&lt;br /&gt;
On my ideal phone, I would instead have a physical button on the side that is devoted to voice input.&amp;nbsp; This button would work like a walkie-talkie (or, perhaps less antiquated, something like that Sprint/Nextel &quot;push to talk&quot; feature).&amp;nbsp; Only, instead of talking to a friend or a group of co-workers, I would push the button to talk to my digital assistant on the phone (Siri or Google Now). When I push the button, the phone listens.&amp;nbsp; When I release the button, the phone stops listening. Its that simple. Why has no one done this?!&lt;br /&gt;
&lt;br /&gt;
Aside from the physical button, I think we need all-around better conversational AI (or even just better screen-reader technology).&amp;nbsp; Its really sad to me that &lt;a href=&quot;http://en.wikipedia.org/wiki/GOOG-411&quot;&gt;GOOG-411&lt;/a&gt; was actually better for in-car use that my JellyBean Android phone.&lt;br /&gt;
&lt;br /&gt;
First one to make a phone like this will get my $.&lt;br /&gt;
*kshhhhh* Over *kshhhhh*</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/1139455353645269597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/1139455353645269597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1139455353645269597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1139455353645269597'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/walkie-talkie-ultimate-phone-experience.html' title='Walkie-Talkie - The Ultimate Phone Experience?'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZdGGUoJ0gvJD4MLr7a-MJUkcvItZ_kPsqiO8UEik-wuh2hDRJBBZUoO1DYzdj4qx0s7q5iojmERae8XlEnaOpJ_-JVT6mJzauzWcJaKLn3Lj1iDq-t5azNQY4s8MFlsiaKrY3IeMnCOc/s72-c/Two-Way-Radio-and-Walkie-Talkie-Interphone-Mag-One-A8.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-7848961834641459257</id><published>2013-11-14T06:07:00.001-08:00</published><updated>2013-11-19T22:08:46.548-08:00</updated><title type='text'>The real hype cycle</title><content type='html'>&lt;br /&gt;
&lt;a href=&quot;http://upload.wikimedia.org/wikipedia/commons/9/94/Gartner_Hype_Cycle.svg&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;207&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/9/94/Gartner_Hype_Cycle.svg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;According to Gartner, all technology goes through a &lt;a href=&quot;http://www.gartner.com/technology/research/methodologies/hype-cycle.jsp&quot;&gt;hype cycle&lt;/a&gt; in the marketplace as it matures.&amp;nbsp; It may be one of their most popular analysis pages (that or their &#39;magic quadrant&#39; work).&lt;br /&gt;
&lt;br /&gt;
But this isn&#39;t quite right.&amp;nbsp; Everyone that&#39;s been in IT long enough knows that almost every technology (no matter how innovative) has its roots in some other idea/technology years before. It may have a new name. A new use case. A new distribution channel. But the technology just isn&#39;t that new.&lt;br /&gt;
&lt;br /&gt;
So, I conjecture that the &#39;true&#39; hype cycle doesn&#39;t end in the &quot;Plateau of Productivity&quot; but instead it is truly a cycle...with each iteration feeding into a NEW technology trigger (anywhere from 5-20 years down the line):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://googledrive.com/host/0B061FF-6hMavREhmM1ZVRnZwU2c/True_Gartner_Hype_Cycle.svg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;412&quot; src=&quot;https://googledrive.com/host/0B061FF-6hMavREhmM1ZVRnZwU2c/True_Gartner_Hype_Cycle.svg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/7848961834641459257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/7848961834641459257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7848961834641459257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7848961834641459257'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/the-real-hype-cycle.html' title='The real hype cycle'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-1951672150770844178</id><published>2013-11-14T04:42:00.002-08:00</published><updated>2013-11-14T04:42:49.614-08:00</updated><title type='text'>The Federal Internet Identity Service</title><content type='html'>I have been doing some learning about Trust and Identity on the internet recently, particularly the new web-style standards like OpenID, Information Cards, etc.  This got me thinking (dangerous, I know)...&lt;br /&gt;
&lt;br /&gt;
What if the US Government acted as trusted 3rd party?  They could assign a public/private key pair to every citizen (almost like a social security number) in order to provide verification services.&lt;br /&gt;
Maybe they could even offer something like an OpenId server as well.&lt;br /&gt;
&lt;br /&gt;
If every citizen had a secret private key, that would enable you to digitally sign anything and anyone could verify it with a high degree of trust.  In fact, verifying someone&#39;s identity would be as simple as checking their signature with the government service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then again, pretty sure no one trusts the government except me...</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/1951672150770844178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/1951672150770844178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1951672150770844178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/1951672150770844178'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/the-federal-internet-identity-service.html' title='The Federal Internet Identity Service'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-3521618423740875309</id><published>2013-11-14T04:41:00.000-08:00</published><updated>2013-11-14T04:41:07.371-08:00</updated><title type='text'>Pasting sample code into Eclipse</title><content type='html'>I recently discovered a very cool feature of the Package Explorer in the Eclipse IDE.  Namely, if you copy the source for some class (say from a tutorial website), you can simply paste it directly into the Package Explorer view.&amp;nbsp; It doesn&#39;t even have to be a full class.&amp;nbsp; If its a snippet of code, Eclipse will create a new class file called snippet and add the code into it.&amp;nbsp; Very cool.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/3521618423740875309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/3521618423740875309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/3521618423740875309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/3521618423740875309'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/pasting-sample-code-into-eclipse.html' title='Pasting sample code into Eclipse'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-7477922339564366147</id><published>2013-11-14T04:39:00.003-08:00</published><updated>2013-11-14T04:39:33.435-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rant"/><title type='text'>The Cancel Cancer</title><content type='html'>Few things in computer program usage irk me the way a broken/unresponsive cancel button does.  When I click &quot;cancel&quot; in a dialog, the dialog should instantly respond (preferably by just going away) and all the resources/jobs should be finished/closed in the background.  I understand that this can be a tricky feat to pull off in some cases, especially with long-running processes, atomic transactions which require some sort of rollback, or processes that require external communication (i/o or remote requests), but I believe that every effort should be made to create a compelling and responsive experience for your users.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;windows hardware manager...update/search for driver&lt;/li&gt;
&lt;li&gt;eclipse jobs framework&lt;/li&gt;
&lt;li&gt;many others that I meant to put here but don&#39;t have the time to go find&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Know some other culprits?&amp;nbsp; List &#39;em below in the comments:</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/7477922339564366147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/7477922339564366147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7477922339564366147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7477922339564366147'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/the-cancel-cancer.html' title='The Cancel Cancer'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-5810603679282248189</id><published>2013-11-14T04:34:00.000-08:00</published><updated>2013-11-14T04:34:17.052-08:00</updated><title type='text'>Copyright Infringement and Google Notebook</title><content type='html'>I was surprised to see that my quote links weren&#39;t working at the bottom of this blog.  When I investigated, I discovered that my shared notebooks had the following warning:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-style: italic;&quot;&gt;This notebook was flagged as violating Google Notebook &lt;/span&gt;&lt;a href=&quot;http://www.google.com/googlenotebook/programpolicy.html&quot; style=&quot;font-style: italic;&quot;&gt;Program Policies&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;. If you feel it was flagged incorrectly, &lt;/span&gt;&lt;a href=&quot;http://www.google.com/support/notebook/?hl=en&quot; style=&quot;font-style: italic;&quot;&gt;let us know&lt;/a&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Admittedly, when you follow the dialog to share a notebook, Google does a fair job of warning you this might happen:&lt;br /&gt;
&lt;br style=&quot;font-style: italic;&quot; /&gt;
&lt;div class=&quot;ch&quot; style=&quot;font-style: italic;&quot;&gt;
Important&lt;/div&gt;
&lt;div style=&quot;font-style: italic;&quot;&gt;
When publishing a notebook that contains content from websites, please remember to respect the hard work (and legal rights) of the people that created the content. Publishing a notebook is the same as creating your own web page — don&#39;t include content in your notebook that you couldn&#39;t legally publish on your own webpage. For more information on our program policies, &lt;a href=&quot;http://www.google.com/googlenotebook/programpolicy.html&quot; target=&quot;_blank&quot;&gt;click here&lt;/a&gt;.&lt;/div&gt;
&lt;br /&gt;
But what I wonder is how to avoid this?  My primary use of Google Notebook is to store relevant quotes/quips from websites for future reference.  This has a couple advantages over bookmarks...&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;It cuts away the cruft of webpages so that I only see my notes, while still allowing me to store a simple link to the original reference for context&lt;/li&gt;
&lt;li&gt;It allows me to tag/organize my notes/thoughts and provides a nice search to make them retreivable&lt;/li&gt;
&lt;li&gt;Using the &lt;a href=&quot;http://www.google.com/notebook/download&quot;&gt;Google Notebook Firefox Extension&lt;/a&gt; makes all this a breeze&lt;/li&gt;
&lt;/ol&gt;
I could do something similar using the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3615&quot;&gt;Delicious Bookmarks&lt;/a&gt; Add-on, by using the summary text for the relevant quotes, but I honestly doubt that is any more/less legal.&lt;br /&gt;
&lt;br /&gt;
When I was at EclipseCon this Spring, I had the privilege to hear Cory Doctorow talk about copyright law and the possible societal repercussions of laws which make the majority of its population criminals.&lt;br /&gt;
&lt;br /&gt;
What do you think?</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/5810603679282248189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/5810603679282248189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/5810603679282248189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/5810603679282248189'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/copyright-infringement-and-google.html' title='Copyright Infringement and Google Notebook'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-8588720367210049651</id><published>2013-11-13T05:01:00.000-08:00</published><updated>2013-11-13T05:01:25.226-08:00</updated><title type='text'>Clearing the backlog</title><content type='html'>At the behest of one of our awesome interns at work, I&#39;ve decided
 to open the floodgates of draft posts which I&#39;ve created over the past
 few years.&amp;nbsp; The original plan was to research each one, flush 
them out, and provide some thoughtful commentary to my corner of the web.&amp;nbsp; But, seeing as these posts have sat in draft mode for over 2 
years, I think it&#39;s safe to say that that is not going to happen.&lt;br /&gt;
&lt;br /&gt;
So if 
you&#39;re one of my two subscribers (I&#39;m looking at you &lt;a class=&quot;g-profile&quot; href=&quot;http://plus.google.com/108752548331713894659&quot; target=&quot;_blank&quot;&gt;+Jason Melbye&lt;/a&gt;), then I apologize for the stream of half-baked posts that I&#39;m about to release on 
your stream.&amp;nbsp; That said, after browsing for a few minutes, I do 
think that much of the content is as relevant now as it was when I first 
wrote it (for better or worse).&amp;nbsp; Now the only decision left is how to do it...should I back-date them to their original draft date?&amp;nbsp; Release them all at once or 1-per-day?&lt;br /&gt;
&lt;br /&gt;
Here goes nothing...</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/8588720367210049651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/8588720367210049651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8588720367210049651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8588720367210049651'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/11/clearing-backlog.html' title='Clearing the backlog'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-2759931193793109436</id><published>2013-03-26T23:04:00.000-07:00</published><updated>2013-03-26T23:04:43.587-07:00</updated><title type='text'>One Laptop Per Baby</title><content type='html'>&lt;h4&gt;The Background&lt;/h4&gt;
&lt;p&gt;A while back I participated in the &lt;a href=&quot;http://laptop.org/&quot;&gt;One Laptop Per Child&lt;/a&gt; program&#39;s &quot;Give One, Get One&quot; campaign in order to do some good and also give a cool/interesting Christmas gift to my little brother and sister.  Well, needless to say, the spoiled adolescent of suburbia was not the intended user of an XO-1 and so the laptop was seldom used (what, no YouTube?!).  So, a couple years ago when my wife and I were expecting our first child, I asked for the laptop back with the idea that our baby could grow up with this computer (and I would get a fun toy along the way).&lt;/p&gt;
&lt;h4&gt;The Project&lt;/h4&gt;
&lt;p&gt;Well, my daughter is 18 months now and I finally sat down to do my first project:  &lt;b&gt;Turning the $100 laptop into a $100 baby toy!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I remember when my little sister was very young, she got a toy that was a large plastic slate with a calculator-like screen and protruding keys that were shaped like the letters of the alphabet (capital and lowercase)...what was that thing called!?  Anyway, it was pretty awesome and I&#39;m relatively sure that, because of it, my sister knew all her letters at a very early age.  So, the question is, could I turn the XO-1 into something like that?  Shouldn&#39;t be too hard, right?&lt;/p&gt;
&lt;p&gt;I began to think about what I wanted to create and here&#39;s what I came up with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Laptop should boot directly into my program (fullscreen) with no way out except for ctrl+alt+f2 (or similar) which should still bring up a tty terminal so that I can login and restore Sugar/whatever at a later date.&lt;/li&gt;
&lt;li&gt;Application should let you mash on the keys and do something fun/educational. For instance, when the user hits a letter key, the system should show an image of something that starts with that letter, pronounce the word (and the letter?), and maybe also print the word in big letters to the screen (with the first letter capitalized/underlined for emphasis).&lt;/li&gt;
&lt;li&gt;Preferably, power management still works so that the laptop goes to sleep when the lid is closed (and wakes up in the program). There should be some kind of inactivity timeout as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Research&lt;/h4&gt;
I updated the laptop with the latest software release from laptop.org and browsed through the apps, but the only one that jumped out at me was the activity called &quot;Speak&quot;.&lt;br /&gt;
&lt;img border=&quot;0&quot; src=&quot;http://wiki.laptop.org/images/thumb/9/9f/SpeakActivity.png/800px-SpeakActivity.png&quot; style=&quot;width: 100%;&quot; /&gt;

&lt;br /&gt;
In this activity, a user tells the face on the screen what to say, and the face says it. It&#39;s not too far from what I was thinking...only in my version the user would only hit a single letter and the application would generate and speak a word that starts with that letter (and preferably show a picture as well).&lt;br /&gt;
&lt;br /&gt;
Aside from playing with the fun espeak library on which it is based (and making it say things I wouldn&#39;t want my daughter to hear!), I moved on to google some other things I could use for my project. One promising thread was from a note I left myself while listening to a podcast at some time in the past (&lt;a href=&quot;http://hanselminutes.com/&quot;&gt;http://hanselminutes.com/&lt;/a&gt; I believe). It is a simple .NET demo app called &lt;a href=&quot;http://www.babysmash.com/&quot;&gt;babysmash&lt;/a&gt;. I didn&#39;t want to mess with .NET/Mono for my simple project, so I looked for a simple equivalent for Linux.The first thing I found was &lt;a href=&quot;http://jaredforsyth.com/projects/baby-tux/&quot;&gt;http://jaredforsyth.com/projects/baby-tux/&lt;/a&gt; and it seemed promising.&lt;br /&gt;
&lt;br /&gt;
After learning how to boot the XO-1 into GNOME (gotta get something lighter on there...), I installed git on the terminal and cloned the project from github. Unfortunately, from what I could tell, the python libraries it sits on (Pyglet and Rabbyt) weren&#39;t in the olpc package repo. No worries, we&#39;ve got &quot;easy_install&quot;:&lt;br /&gt;
&lt;pre&gt;[olpc@xo]$ sudo easy_install Pyglet

Success!

[olpc@xo]$ sudo easy_install Rabbyt

error: No gcc (or something like that)

[olpc@xo]$ yum install gcc

...

[olpc@xo]$ sudo easy_install Rabbyt

error: Missing some python header file

[olpc@xo]$ sudo yum install python-devel

...

[olpc@xo]$ sudo easy_install Rabbyt

fatal error: GL/gl.h: No such file or directory

compilation terminated.

[olpc@xo]$ sudo yum whatprovides gl.h

No Matches found

&lt;/pre&gt;
Ugh, not so &quot;easy_install&quot; after all. I did some OpenGL stuff in college but I really didn&#39;t feel like chasing down the OpenGL story on the XO.
&lt;h4&gt;A Different Tack&lt;/h4&gt;
One google search later and I found another babysmash clone done in python: &lt;a href=&quot;https://github.com/karel1980/babyslam&quot;&gt;https://github.com/karel1980/babyslam&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
It seems a bit old/defunct, but I tried it anyway. Git cloned to the laptop, ran setup.py install, and voila!&lt;br /&gt;
Its not exactly what I wanted, but it does come with some customization points and seems simple enough to hack...woohoo!&lt;br /&gt;
&lt;br /&gt;
Next up was my attempt to boot into this program. This proved WAY easier than I was expecting (a welcome change from the usual). The XO comes with a single default user named &quot;olpc&quot; (with auto-login already set up and no GDM to mess with) and the user home directory already has a .xsession-example file sitting there:&lt;br /&gt;
&lt;pre&gt;# Copy this file to ~/.xsession to customize your X session&lt;/pre&gt;
:-)&lt;br /&gt;
&lt;br /&gt;
I added a single line to the file (to invoke babyslam) and rebooted.  After a fairly slow boot process, I was greeted with an all-black screen which displayed numbers and letters when you press them and randomly showed animal pictures with sounds. &amp;nbsp;A great start.&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/AVvXsEj9iCaMatk_Npcus2nM8GjY8VyVbUrnJnQXHbcUNm2yGfI8dY4X6cMqushhAgYRSCJASNrL3nyd9MllReqW90ySPvTrYqlQKLKPFENRyQVJA1dl4u_KYV8KzzUWNjfZkbJuLmUqWSzq3Pw/s1600/photo.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9iCaMatk_Npcus2nM8GjY8VyVbUrnJnQXHbcUNm2yGfI8dY4X6cMqushhAgYRSCJASNrL3nyd9MllReqW90ySPvTrYqlQKLKPFENRyQVJA1dl4u_KYV8KzzUWNjfZkbJuLmUqWSzq3Pw/s400/photo.JPG&quot; width=&quot;298&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h4&gt;Things left to do/possible next steps:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Let Emily try it out and see if she likes it!&lt;/li&gt;
&lt;li&gt;Improve the boot time. System takes over a minute to boot. Maybe it would improve with XOpup (&lt;a href=&quot;http://wiki.laptop.org/go/PuppyLinux#XOpup.3B_Puppy_Linux_5.1_for_the_XO-1_and_the_XO-1.5&quot;&gt;Puppy Linux for the XO&lt;/a&gt;)?&lt;/li&gt;
&lt;li&gt;Maybe disable the mouse/pointer?&lt;/li&gt;
&lt;li&gt;Customize the app by adding my own images and sounds. &amp;nbsp;Note to self: &amp;nbsp;The XO uses ALSA so you can record and playback wav files with the &#39;arecord&#39; and &#39;aplay&#39; commands. &amp;nbsp;You can also save wav files from espeak by passing the -w &lt;filename&gt; switch.&lt;/filename&gt;&lt;/li&gt;
&lt;li&gt;Edit the python app to approach my original design?&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/2759931193793109436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/2759931193793109436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2759931193793109436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2759931193793109436'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2013/03/one-laptop-per-baby.html' title='One Laptop Per Baby'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9iCaMatk_Npcus2nM8GjY8VyVbUrnJnQXHbcUNm2yGfI8dY4X6cMqushhAgYRSCJASNrL3nyd9MllReqW90ySPvTrYqlQKLKPFENRyQVJA1dl4u_KYV8KzzUWNjfZkbJuLmUqWSzq3Pw/s72-c/photo.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-7455121021907511894</id><published>2011-10-06T21:51:00.000-07:00</published><updated>2013-11-19T22:06:05.808-08:00</updated><title type='text'>The Lawn Mower Algorithm</title><content type='html'>While mowing the lawn the other day, I couldn&#39;t help but think about &quot;what is the most efficient route I can take to mow my lawn&quot;.&amp;nbsp; It occurred to me that this wasn&#39;t the first time I had this thought.&lt;br /&gt;
&lt;br /&gt;
As I thought about it, I decided that the most efficient route would be the one that maximizes mowing time and minimizes going over the same spots twice.&amp;nbsp; Sharp turns (especially 180 degree turns) will lead to down time.&amp;nbsp; But there is a balance there with going over the same areas more once.&amp;nbsp; Trees and landscaping make it even more interesting.&lt;br /&gt;
&lt;br /&gt;
So, I think the problem is actually an interesting one but I&#39;ve never remembered to look it up when I get inside...until now!&lt;br /&gt;
&lt;br /&gt;
For your reading pleasure, I present to you a thorough discussion of &quot;the lawn mower algorithm&quot;&lt;br /&gt;
&lt;a href=&quot;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1218297610&quot;&gt;http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1218297610&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If that wasn&#39;t enough, I somehow found myself on this related topic as well: &lt;br /&gt;
&lt;a href=&quot;http://arstechnica.com/civis/viewtopic.php?f=23&amp;amp;t=645887&quot;&gt;Mow your yard with lasers!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And finally, to the single image that made it all worth while:&amp;nbsp; &lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg10fd8yaifaYbpnyrcvykZn0FGBJkiTO6OJPF2zC-spwDdGsI3t7_9H-d0HtpmMtrltCp46dhWiLbK6aP-A4VRmbk-wXTn7CLA7iJAqgN3mx6rWEMMsV-3g1_YhGVYGPI7ao3C3ssBjoA/s1600/Laser-grass.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg10fd8yaifaYbpnyrcvykZn0FGBJkiTO6OJPF2zC-spwDdGsI3t7_9H-d0HtpmMtrltCp46dhWiLbK6aP-A4VRmbk-wXTn7CLA7iJAqgN3mx6rWEMMsV-3g1_YhGVYGPI7ao3C3ssBjoA/s400/Laser-grass.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;From http://www.niftythings.org/images/Laser-grass.png&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp;I love the internet.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/7455121021907511894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/7455121021907511894' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7455121021907511894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7455121021907511894'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/10/the-lawn-mower-algorithm.html' title='The Lawn Mower Algorithm'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg10fd8yaifaYbpnyrcvykZn0FGBJkiTO6OJPF2zC-spwDdGsI3t7_9H-d0HtpmMtrltCp46dhWiLbK6aP-A4VRmbk-wXTn7CLA7iJAqgN3mx6rWEMMsV-3g1_YhGVYGPI7ao3C3ssBjoA/s72-c/Laser-grass.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-8285474533340236935</id><published>2011-10-06T21:44:00.000-07:00</published><updated>2013-11-19T21:51:10.192-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ux"/><title type='text'>The Ultimate TV Experience</title><content type='html'>I just saw the following from Time Warner Cable: &lt;a href=&quot;http://www.timewarnercable.com/nynj/learn/cable/TWCableTV/TWCableTV_iPad.html&quot;&gt;http://www.timewarnercable.com/nynj/learn/cable/TWCableTV/TWCableTV_iPad.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Supposedly, they will offer an iPad app which lets you browse the menu of channels without interrupting the program being shown on your main screen (i.e. the tv).&amp;nbsp; This is close, but not exactly, the user experience I&#39;ve always wanted for my TV.&lt;br /&gt;
&lt;br /&gt;
What I&#39;ve always wanted is the ability to browse (or search) on my phone, preview the content right there, and be able to project that channel to the TV with a swiping motion.&lt;br /&gt;
Sort of like picture-in-picture only the second picture is actually on my device.&lt;br /&gt;
&lt;br /&gt;
Anyway, this app is the closest I&#39;ve seen so far, so kudos to Time Warner...I&#39;ll have to check this one out (if they ever release an Android version).&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/8285474533340236935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/8285474533340236935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8285474533340236935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8285474533340236935'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/10/the-ultimate-tv-experience.html' title='The Ultimate TV Experience'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-8676740038474028114</id><published>2011-04-15T21:38:00.000-07:00</published><updated>2013-11-19T21:39:30.403-08:00</updated><title type='text'>A Tip for Running Apache Server on Windows 7</title><content type='html'>You must run htpasswd as &#39;Administrator&#39;.&lt;br /&gt;
&lt;br /&gt;
This is also required for Apache-based derivitives like the IBM HTTP Server.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/8676740038474028114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/8676740038474028114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8676740038474028114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8676740038474028114'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/04/a-tip-for-running-apache-server-on.html' title='A Tip for Running Apache Server on Windows 7'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-2082777376875898365</id><published>2011-04-13T21:32:00.000-07:00</published><updated>2013-11-19T21:38:11.055-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Shipping API Jars Without The Associated JavaDoc: An Antipattern</title><content type='html'>I just tried out the RSA 8.0.2 release and tried to create a new SCA Project.  To my surprise, I was missing any and all documentation for the org.osoa.sca* packages. What&#39;s the point of including SCA support if you don&#39;t include the corresponding JavaDoc?&lt;br /&gt;
&lt;br /&gt;
Here is the solution:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Highlight one of the imports&lt;/li&gt;
&lt;li&gt;Control-click / press f3 to go to the declaration&lt;/li&gt;
&lt;li&gt;Click &#39;Link with Editor&#39; on the Package Explorer view&lt;/li&gt;
&lt;li&gt;Right-click-&amp;gt;Properties / press Alt+Enter on the parent jar (org.apache.tuscany.sca.api.jar)&lt;/li&gt;
&lt;li&gt;Select &#39;Javadoc Location&#39;&lt;/li&gt;
&lt;li&gt;Set the Javadoc URL to http://tuscany.apache.org/doc/javadoc/java-sca-1.6.1/sca-api/&lt;/li&gt;
&lt;li&gt;Validate the location to be sure you didn&#39;t accidentally include index.html at the end (which I always screw up) &lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/2082777376875898365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/2082777376875898365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2082777376875898365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2082777376875898365'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/04/shipping-api-jars-without-associated.html' title='Shipping API Jars Without The Associated JavaDoc: An Antipattern'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-8636488071465030823</id><published>2011-04-13T21:31:00.000-07:00</published><updated>2013-11-19T21:43:53.579-08:00</updated><title type='text'>Possible Eclipse Bug</title><content type='html'>Wondering if this is an Eclipse Bug or not... &lt;br /&gt;
&lt;br /&gt;
When I try using the @org.osoa.sca.annotations.Service annotation on my class, I get a compile error because the package is not imported on my project.&lt;br /&gt;
&lt;br /&gt;
Hovering over the attribute gives me long list of Service classes:&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;javax.xml.ws.Service&lt;/li&gt;
&lt;li&gt;com.ibm.ws.webservices.engine.client.Service&lt;/li&gt;
&lt;li&gt;javax.mail.Service&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
and the following message:&lt;/div&gt;
&lt;div&gt;
&quot;Attribute information for this &#39;@Service&#39; instance:&lt;/div&gt;
&lt;div&gt;
Unspecified attributes:&lt;/div&gt;
&lt;div&gt;
interfaces, value&quot;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
What does that even mean?&lt;br /&gt;
What&#39;s odd is that Ctrl+1 gives me the proper quickfix: to import org.osoa.sca.annotations.Service.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Whats really odd is that, now that the Service annotation class is resolved and the error is gone, hovering over it still gives me the original message!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/8636488071465030823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/8636488071465030823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8636488071465030823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8636488071465030823'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/04/possible-eclipse-bug.html' title='Possible Eclipse Bug'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-9199357244039863668</id><published>2011-02-15T20:52:00.000-08:00</published><updated>2013-11-19T20:59:20.932-08:00</updated><title type='text'>Man vs. Machine</title><content type='html'>I must admit that I&#39;ve gotten quite caught up in the &lt;a href=&quot;http://ibm.com/watson&quot;&gt;IBM Watson Jeopardy challenge&lt;/a&gt;. It makes me proud to work for such an amazing company. That said, and not to take anything away from Watson or the researchers that built it, I can&#39;t help thinking that the match-up isn&#39;t 100% fair...here are a couple reasons:&lt;br /&gt;
&lt;br /&gt;
1. The machine is simply faster on the trigger. &lt;br /&gt;
I think Jennings (and probably Bruce Rutter too, funny how everyone knows Jennings but at least so far Rutter has twice his score) knew a lot of those answers...its just that Watson could consistently beat them to a buzzer (though the guys did win on a couple that Watson clearly knew the answer to as well). I&#39;ve actually read that buzzing too early creates a short time penalty, so that makes it even tougher on the humans.&lt;br /&gt;
What would be really interesting to me is if they would compensate for &lt;a href=&quot;http://www.humanbenchmark.com/tests/reactiontime/stats.php&quot;&gt;human reaction time&lt;/a&gt;, for instance, by accepting all buzzers within the first 300-400ms or so and then randomly select one of the buzzers that made that &quot;instantaneous&quot; benchmark.&lt;br /&gt;
&lt;br /&gt;
2. Two humans, one computer.&lt;br /&gt;
Assuming there are a certain class of questions that are particularly difficult for the computer and easier for humans (perhaps a large assumption?), it isn&#39;t totally fair that there are two human contestants that end up competing with each other for these scraps. Maybe it would be better if the competition was just head-to-head? It kind of reminds me of a 3rd party candidate taking more votes from one of the mainstream candidates than the other. Does that make Rutter the Teddy Roosevelt to Ken Jennings&#39; &lt;a href=&quot;http://en.wikipedia.org/wiki/United_States_presidential_election,_1912&quot;&gt;William Howard Taft&lt;/a&gt;?(surprised I couldn&#39;t find a better example). Anyway, don&#39;t blame me, &lt;a href=&quot;http://en.wikipedia.org/wiki/Treehouse_of_Horror_VII#Citizen_Kang&quot;&gt;I voted for Kodos&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
PS. After Watson finishes these guys off tomorrow (at this point I think that losing overall would be a pretty huge choke job), wouldn&#39;t it be interesting to see Watson compete against other machines...like some kinda of corporate jeopardy tournament? Like, maybe if Jeopardy would run a special machine-contestant day in a year or so?</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/9199357244039863668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/9199357244039863668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/9199357244039863668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/9199357244039863668'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2011/02/man-vs-machine.html' title='Man vs. Machine'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-2322792646340522166</id><published>2010-05-19T21:08:00.000-07:00</published><updated>2013-11-19T21:28:49.419-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ux"/><title type='text'>User Apathy in the Air</title><content type='html'>I just flew from Newark to Boston and was amazed by the percentage of passengers who were content with watching 30 minutes of repetitive commercials 12 inches from their face.&lt;br /&gt;
&lt;br /&gt;
The United (now Continental?) flight offered a free preview of the in-flight directv service.  Having ESPN feeding me the latest NHL and NBA playoff news during the normally tedious boarding process and ascent was an unexpected delight, tiding my ADD mind over until I was allowed to power on my iPhone.  However, shortly after the preview ended (and the plea for $ to continue viewing began), I shut down the display.&lt;br /&gt;
&lt;br /&gt;
Twenty minutes later I noticed that everyone else still had their displays on, still watching the directv advertisements flash before their eyes.  This got me wondering... are consumers really so lazy that they would rather watch an 
endless (and repeating) stream of bad commercials rather than figure out how to turn off 
the screen?&amp;nbsp; Or are they too dumb to realize that you can even turn it off?&amp;nbsp; Try to make a guess...then look at this photo of the controller: &lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzWRTy74FWKxTDxOcb6o43lZ_OQhRF6LMk2NZBx41OJ-aexcAM5sT9YNlr7u5VTEXhg4QZ35CyD-CvzSMbPkZXXoinJ9unSB9OqLP3qXKXY9Qy19u1WlfYVI6oi2GFXzqMuWv9nifiqmk/s1600/20130924_183120&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzWRTy74FWKxTDxOcb6o43lZ_OQhRF6LMk2NZBx41OJ-aexcAM5sT9YNlr7u5VTEXhg4QZ35CyD-CvzSMbPkZXXoinJ9unSB9OqLP3qXKXY9Qy19u1WlfYVI6oi2GFXzqMuWv9nifiqmk/s320/20130924_183120&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Where&#39;s the power button?&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
I wonder if &quot;no power button&quot; was an explicit decision from the 
airline/directv execs...some kind of sneaky ploy to make more money from
 having more eyeballs on more commercials.&amp;nbsp; What do you think?&lt;br /&gt;
&lt;br /&gt;
I guess that isn&#39;t too likely, since it fails to pass the most important test in human behavior reasoning:&lt;br /&gt;
&lt;a href=&quot;http://en.wikipedia.org/wiki/Hanlon%27s_razor&quot;&gt;Hanlon&#39;s razor&lt;/a&gt; - &lt;i&gt;Never attribute to malice that which is adequately explained by stupidity.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/2322792646340522166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/2322792646340522166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2322792646340522166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2322792646340522166'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2010/05/user-apathy-in-air.html' title='User Apathy in the Air'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzWRTy74FWKxTDxOcb6o43lZ_OQhRF6LMk2NZBx41OJ-aexcAM5sT9YNlr7u5VTEXhg4QZ35CyD-CvzSMbPkZXXoinJ9unSB9OqLP3qXKXY9Qy19u1WlfYVI6oi2GFXzqMuWv9nifiqmk/s72-c/20130924_183120" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-2275992422015517380</id><published>2010-05-01T20:21:00.000-07:00</published><updated>2016-05-22T09:00:46.865-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="health IT"/><title type='text'>HIT ME</title><content type='html'>This was an old update that I wrote for my boss.&amp;nbsp; I wrote it with as 
many acronyms and identifiers as possible just to test her :-)&lt;br /&gt;
Is everyone forced to work with this many TLA or is it just me?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The
 Stepstone project&#39;s transition from the SODA subproject of Eclipse OHF 
(moving to RT) to OHT is almost complete.  We have been working on 
support for the ISO/IEEE P11073-20601 PAN protocol and are slowly adding
 support for the various 11073-104xx specializations.  Most of this 
support involves generating the java class model from the ASN.1 model 
and adding support for the MDER encoding.&lt;br /&gt;
&lt;br /&gt;
We have also 
began work on a WAN interface prototype using WS-I Basic (SOAP/HTTP with
 WS-Addressing) to send the XER encoded ASN.1 event reports from the AHD
 to the RMS (WAN Device).  As part of this work, we have analyzed some 
other web service standards including WS-RX (WS-RM and WS-MC), 
WS-Event/WS-Notification, WS-Man/WSDM, and others.&lt;br /&gt;
&lt;br /&gt;
One 
alternative being discussed in Continua is the re-purposing of the IHE 
PCD protocol (HL7 V2.5 over MLLP--a TCP/IP protocol with some extra 
framing characters)&lt;br /&gt;
&lt;br /&gt;
Once the data arrives, it is up to 
the RMS to translate these messages from the IEEE DIM model to HL7 RIM 
in order to generate a CDA-based PHM (CCHIT approved?) and convert the 
IEEE nomenclature to the various medical nomenclature standards like 
SNOMED or LOINC. Once this is complete, the PHM is sent over the xHR 
(x=PHR, EHR, EMR, etc) interface using IHE XDR or XDM (both from the XDS
 family).  If XDS is used instead, such as across a RHIO or HIE, we will
 have to deal with handling patient IDs through profiles like IHE 
PIX/PDQ.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/2275992422015517380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/2275992422015517380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2275992422015517380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/2275992422015517380'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2010/05/hit-me.html' title='HIT ME'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-4274879664565724089</id><published>2010-03-05T06:49:00.001-08:00</published><updated>2013-11-19T20:17:58.007-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="osgi"/><title type='text'>This Just In: Enterprise OSGi Too Messy</title><content type='html'>wab, eba, application.xml, ...&lt;br /&gt;
&lt;br /&gt;
Why do we need to introduce all of these new concepts?  One of the reasons OSGi feels so much nicer than the traditional J2EE stack is that the number of concepts is vastly reduced.  The core is kept to the minimal set of concepts to achieve the properties of modularity, dynamicity, and security.  When I create a plug-in project in eclipse, there is only one meta-data file, MANIFEST.MF, that I need to worry about.&lt;br /&gt;
&lt;br /&gt;
Compare this to a J2EE project which introduces so many files and descriptors in my project that the IDE designers decided they need to hide them from me to make it &#39;usable&#39;.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/4274879664565724089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/4274879664565724089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/4274879664565724089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/4274879664565724089'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2010/03/this-just-in-enterprise-osgi-too-messy.html' title='This Just In: Enterprise OSGi Too Messy'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-7305776885663632578</id><published>2010-02-18T22:01:00.000-08:00</published><updated>2013-11-19T20:15:13.406-08:00</updated><title type='text'>Evil Will Always Win</title><content type='html'>&lt;br /&gt;
Facebook just enabled a &#39;smart lists&#39; feature to help build out their understanding of you and your connections. Certain lists (eg. family) add a profile suggestion for everyone that you add to the list. As a result, I have been bombarded with many family confirmations from fairly distant relatives.&lt;br /&gt;
&lt;br /&gt;
This is a fairly sneaky way to get more information about their users without each user needing to enter stuff...because everyone has that one crazy relative that spends way too much time on facebook, tagging you in all your own photos, and filling out lots of extra relationship details just for you to &#39;confirm&#39;. Its thinking like this that will keep them ahead of competitors like Google who can&#39;t seem to crack the &quot;social&quot; nut, I guess. Its like in spaceballs:&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;&quot; frameborder=&quot;0&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/U7XVcqZodAM&quot; width=&quot;420&quot;&gt;&lt;/iframe&gt;

Anyway, in this case I really would like to acknowledge the relationship, but the exact relationship is not defined on the dropdown box (there&#39;s no such thing as a 2nd-cousin-in-law). So, it seems the system will not let me confirm a relationship exists without picking exactly what that relationship is (for which there is no option). Dear Facebook, please provide a &#39;write-in&#39;, &#39;other&#39;, or &#39;unspecified&#39; option to these confirmation dialogs...I feel bad hitting the &#39;ignore&#39; button like this.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/7305776885663632578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/7305776885663632578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7305776885663632578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/7305776885663632578'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2010/02/evil-will-always-win.html' title='Evil Will Always Win'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1160088509642785752.post-8318839172637785502</id><published>2010-02-03T14:50:00.000-08:00</published><updated>2013-11-19T20:12:25.139-08:00</updated><title type='text'>If you can&#39;t beat &#39;em...</title><content type='html'>One of the things I consider most strange about commercially-tied open source projects is the lack of co-opetition.&lt;br /&gt;
&lt;br /&gt;
Why do we need separate Apache projects for Axis2 and CXF?&lt;br /&gt;
Well that&#39;s because IBM and WSO2 &#39;run&#39; Axis2 while CXF is backed by Progress Software.&lt;br /&gt;
&lt;br /&gt;
Why do we need OpenJPA? Why not just storm (I mean collaborate within) the EclipseLink project?&lt;br /&gt;
&lt;br /&gt;
Its amazing to me how many open source projects have only a single company&#39;s backing. What happens when that company deinvests? I think organizations like Apache and the Eclipse Foundation work hard to get these players to see the light and work hand-in-hand on a common code base (for the good of the community), but I guess its somewhat against the open source ethos of letting &quot;a thousand flowers bloom&quot;.&lt;br /&gt;
&lt;br /&gt;
Maybe it has something to do with whether the companies involved are market leaders or not. Second and third tier companies have the most incentive to collaborate. If you&#39;re not the market leader, its in your best interest to band together to &#39;defeat&#39; (or at least compete with) a common enemy. And open source is the perfect place to do that.</content><link rel='replies' type='application/atom+xml' href='http://parenthetical-thoughts.blogspot.com/feeds/8318839172637785502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1160088509642785752/8318839172637785502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8318839172637785502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1160088509642785752/posts/default/8318839172637785502'/><link rel='alternate' type='text/html' href='http://parenthetical-thoughts.blogspot.com/2010/02/if-you-cant-beat-em.html' title='If you can&#39;t beat &#39;em...'/><author><name>Lee Surprenant</name><uri>http://www.blogger.com/profile/06628367357896203785</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>