<?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: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-15785647</id><updated>2011-08-03T22:39:25.982-07:00</updated><category term='office'/><category term='hummus'/><category term='food'/><title type='text'>Blogging Will Get Me Women And Money</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15785647.post-8794176034636868972</id><published>2010-06-02T21:56:00.000-07:00</published><updated>2010-06-02T22:00:42.208-07:00</updated><title type='text'></title><content type='html'>Hello, other frustrated developers! How to access the sitecore developer toolbar: Right click on the toolbar, and click developer. This is how you get to serialization in sitefore. Thanks to &lt;a href="http://usoniandream.blogspot.com/2007/04/sitecore-531-ui-changes.html"&gt;this guy&lt;/a&gt; for cluing me in on this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-8794176034636868972?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/8794176034636868972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=8794176034636868972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/8794176034636868972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/8794176034636868972'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2010/06/hello-other-frustrated-developers-how.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-7152888450959908999</id><published>2010-04-13T14:44:00.000-07:00</published><updated>2010-04-13T14:47:08.975-07:00</updated><title type='text'></title><content type='html'>Starting up a little .com with The Dad and The Cousin selling wedding music. Dad does the music,  I do the computer stuff, Brian does... I don't know, marketing, analysis, management and occasionally hits me with a stick until I do some work.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://weddingmusicproject.com"&gt;The Wedding Music Project&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-7152888450959908999?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/7152888450959908999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=7152888450959908999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/7152888450959908999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/7152888450959908999'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2010/04/starting-up-little.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-4915504694760103333</id><published>2010-02-06T19:16:00.000-08:00</published><updated>2010-02-07T01:26:44.117-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.circlecityjugglers.com/"&gt;Circle City Jugglers&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The local juggler group, which is basically the remnants of the &lt;a href="http://www.indyjugglers.com/"&gt;Indy Jugglers&lt;/a&gt;, have renamed themselves the Circle City Jugglers and set  up a new web site that will be kept up to date with respect to meeting times and places.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-4915504694760103333?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/4915504694760103333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=4915504694760103333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4915504694760103333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4915504694760103333'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2010/02/circle-city-jugglers-local-juggler.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-4985730382160708239</id><published>2009-04-28T16:11:00.000-07:00</published><updated>2009-04-28T16:24:11.971-07:00</updated><title type='text'></title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Stupid SQL Tricks&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:'trebuchet ms';font-size:18px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I'm really only posting this so I can show Brian later. Purpose is spoilers; see if you can make a wild guess at what it does. (I doubt I'd be able to figure this out. One hundred internets to you if you can.) Hint: The outer subquery helps in &lt;span class="Apple-style-span" style="font-style: italic;"&gt;two&lt;/span&gt; ways; one of them is vital and one is a convenience.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:'trebuchet ms';font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:'trebuchet ms';font-size:13px;"&gt;&lt;div&gt;&lt;div&gt;SELECT ProductFooter, CategoryFooter, Category.Name, Product.Name ProductName, Product.ProductID, Category.* FROM &lt;/div&gt;&lt;div&gt;(&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(SELECT Product.ProductID ProductID, Category.CategoryID, 1 ProductFooter, &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;CASE WHEN Product.ProductID IS NULL THEN 1 ELSE 0 END CategoryFooter &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;FROM Category&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;LEFT JOIN CategoryProducts ON Category.CategoryID = CategoryProducts.CategoryID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;LEFT JOIN Product ON CategoryProducts.ProductID = Product.ProductID&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;WHERE CategoryStatus = 1&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;GROUP BY Category.CategoryID, Product.ProductID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;WITH ROLLUP) &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;UNION &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;(SELECT Product.ProductID ProductID, Category.CategoryID, 0 ProductFooter, 0 CategoryFoooter FROM Category&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;LEFT JOIN CategoryProducts ON Category.CategoryID = CategoryProducts.CategoryID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;LEFT JOIN Product ON CategoryProducts.ProductID = Product.ProductID&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;WHERE CategoryStatus = 1 AND&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;GROUP BY Category.CategoryID, Product.ProductID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;WITH ROLLUP) &lt;/div&gt;&lt;div&gt;)&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;NBRollup&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;LEFT JOIN Product ON Product.ProductID = NBRollup.ProductID&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;LEFT JOIN Category ON Category.CategoryID = NBRollup.CategoryID&lt;/div&gt;&lt;div&gt;WHERE NBRollup.CategoryID IS NOT NULL OR NBRollup.ProductID IS NOT NULL&lt;/div&gt;&lt;div&gt;ORDER BY CategoryID, CategoryFooter, ProductID, ProductFooter&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Any guesses? Spoilers in next paragraph.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is for a situation where I want to display category headings, and then display products in each category. It would be a lot simpler if I was going to just put categories and products in separate tags, but I've gone the distance here so that I can put each category in a div, and put each product &lt;span class="Apple-style-span" style="font-style: italic;"&gt;inside&lt;/span&gt; its category div, without doing anything in the databinding code but distinguishing between row types.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The results I get from this start with a row with a CategoryID and NULL Product ID and "0" for CategoryFooter, meaning header row... So I write something like &lt;div class="category"&gt;. Then, later, when I get the same kind except "1" for CategoryFooter, I wring &lt;/div&gt;. In between, I will get the same thing for each product, with ProductFooter alternating.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beautifully, this approach can be nested any number of levels deep with just a little SQL copying and pasting and a little bit of trouble to set up the XFooter values.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I'm just a little bit obsessed with not doing this sort of thing procedurally; can you tell?&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-4985730382160708239?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/4985730382160708239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=4985730382160708239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4985730382160708239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4985730382160708239'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2009/04/stupid-sql-tricks-im-really-only.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-4741383476717419783</id><published>2008-11-07T08:31:00.001-08:00</published><updated>2008-11-07T08:58:10.808-08:00</updated><title type='text'></title><content type='html'>First off, Blogger, for heaven's sake, couldn't you provide some kind of &lt;span class="Apple-style-span" style="font-style: italic;"&gt;useful&lt;/span&gt; way to interact with code blocks? This is not the first time that the WYSIWYG editor has completely underwhelmed me. I give up.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;On Code Clarity with ActionScript and E4X&lt;/span&gt;&lt;div&gt;Here's a rare example of static typing &lt;span class="Apple-style-span" style="font-style: italic;"&gt;reducing&lt;/span&gt; the reader's knowledge about a line of code:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;var legend:XMLList = info..svg::g.(attribute("id") == "Legend");&lt;/code&gt;&lt;div&gt;&lt;code&gt;if(legend.length() &gt; 0){&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;code&gt;var position:XMLList = legend.g.[and so on and so forth.]&lt;/code&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;The context of this line is that &lt;span class="Apple-style-span" style="font-style: italic;"&gt;info&lt;/span&gt; is an XML document that has an optional "g" elements with the id "Legend". Legend is used to override some default configuration values if it exists. For some reason, though, we're calling this 0-or-1 element a list. Why?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;You might expect the line to simply pick the first item off the list as &lt;span class="Apple-style-span" style="font-style: italic;"&gt;XML&lt;/span&gt;, like so:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;var legend:XML = info..svg::g.(attribute("id") == "Legend")[0];&lt;/code&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;Unfortunately, like I said, it might not exist. So in order to properly get &lt;span class="Apple-style-span" style="font-style: italic;"&gt;XML &lt;/span&gt;out of this, we'd have to first test whether it exists, and only then make a proper assignment, which requires an extra line and an extra variable cluttering things up:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:13px;"&gt;var maybeLegend:XMLList = info..svg::g.(attribute("id") == "Legend");&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;if(maybeLegend.length() &gt; 0){&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;var legend:XML = maybeLegend[0];&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// Do exactly the same crap with legend&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;Whereas the way I've written, I can test the existence via length, which is minutely obfuscated in exchange for less code and less variables.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;So, it appears to me that there is less code and complexity to type single elements as XMLList. Of course, there's a second solution, which is not to provide a type at all; the compiler may give a warning, but at least you wouldn't be decieving future maintainers; the code is also slightly shorter:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;var legend = info..svg::g.(attribute("id") == "Legend");&lt;/code&gt;&lt;div&gt;&lt;code&gt;if(legend.length() &gt; 0){&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;var position = legend.g.[and so on and so forth.]&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style=" ;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;The root of the problem seems to be my attempt to assign types to everything, which is very much the ActionScript 3.0 way; unfortunately, it conflicts with the EcmaScript and E4X philosophy that leads to allowing &lt;span class="Apple-style-span" style="font-style: italic;"&gt;XMLList&lt;/span&gt;s and &lt;span class="Apple-style-span" style="font-style: italic;"&gt;XML&lt;/span&gt;s to act alike when they have the "same" data.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:-webkit-monospace;"&gt;The lesson here may also have to do with the name of the class XMLList. I can't really think of a better name, but why should it called a list if it is meant to trivially act as a single item? (There may be some historic flamewar about this on a w3c mailing list. I'm afraid to look.)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-4741383476717419783?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/4741383476717419783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=4741383476717419783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4741383476717419783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4741383476717419783'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2008/11/on-code-clarity-with-actionscript-and.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-2968189455628532959</id><published>2008-11-06T08:37:00.000-08:00</published><updated>2008-11-06T08:59:35.225-08:00</updated><title type='text'></title><content type='html'>A little advice for those using E4X in ActionScript: don't use "default xml namespace". Save yourself several headaches and manually prefix all of your namespaced elements.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Besides the &lt;a href="http://bugs.adobe.com/jira/browse/ASC-2226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel"&gt;known bug&lt;/a&gt;, the attribute method (see &lt;a href="http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-357.pdf"&gt;the rambling spec&lt;/a&gt;) is &lt;span class="Apple-style-span" style="font-style: italic;"&gt;also&lt;/span&gt; broken. There's really no saying what else is broken, and there's no good way to tell without spending hours manually working out test cases across everything. (Hmm, maybe someone at Adobe should try it!)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-2968189455628532959?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/2968189455628532959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=2968189455628532959' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/2968189455628532959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/2968189455628532959'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2008/11/little-advice-for-those-using-e4x-in.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-6978432652115235262</id><published>2008-10-02T13:48:00.000-07:00</published><updated>2008-10-02T14:02:36.364-07:00</updated><title type='text'></title><content type='html'>&lt;div&gt;A week ago, I ordered a venti half-regular half-decaf skim milk vanilla latte + protein.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yesterday, I actually asked to see the nutrition information on the white chocolate sauce for the Maple White Mochas at Borders. (Incidentally, they contain no chocolate or cocoa butter at all.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Today, I ordered a 2-shot large decaf soy vanilla latte (not too foamy). (At Seattle's Best in Borders, you see, 20 oz. drinks have 3 shots of espresso, not 2. It's no wonder they always taste so... Well, so much like some kind of coffee.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have become one of &lt;span class="Apple-style-span" style="font-style: italic; "&gt;those&lt;/span&gt; people. I actually care about the taste, texture and nutrition of every single caffeinated beverage I imbibe. I often think fondly of simpler times when I would dump hot chocolate mix and french vanilla instant coffee in a mug with marshmallows and just &lt;span class="Apple-style-span" style="font-style: italic;"&gt;enjoy&lt;/span&gt; it. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-6978432652115235262?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/6978432652115235262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=6978432652115235262' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6978432652115235262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6978432652115235262'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2008/10/week-ago-i-ordered-venti-half-regular.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-7757851622753612354</id><published>2008-09-30T10:27:00.000-07:00</published><updated>2008-09-30T12:04:26.194-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hummus'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'></title><content type='html'>I've decided to make a quick inventory of my food and drinks here at the office. This does not include the stuff in my briefcase.&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Starting at the leftmost cupboard above my desk:&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;1 Packet of instant oatmeal, plain&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Wasabi soy nuts, 0.83 lb&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Prunes, 20 oz. bucket&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Baked Lays&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Sun Chips (original flavor)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Triscuits (original flavor)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Skittles, 1-lb bag&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Food Club Crunchy Granola Bars (box of 6)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Caribou Coffee Vanilla Latte granola bars (box of 6)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Kashi TLC Pumpkin Spice Flax granola bars (box of 6)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Thomas Cinnamon Swirl Bagels (6 ct.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Aunt Millie's Sourdough English Muffins (6 ct.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Celestial Seasonings Chamomile tea (box)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Celestial Seasonings Peppermint tea (2 boxes)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Celestial Seasonings Tension Tamer tea (box)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Twinings Black Tea Variety Pack&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Marsh brand Hot Cocoa Mix (20 oz.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;General Foods International Dark Mayan Chocolate instant coffee&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Campbell's Condensed Soup, Minestrone&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Food Club Chunky Class Vegetable soup&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Campbell's Condensed Soup, Old Fashioned Vegetable&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Moving on to what is on the desk itself:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;V8 - Essential Antioxidants&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;4 bananas&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Breton Reduced Fat &amp;amp; Sodium crackers&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Planter's Trail Mix&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;In the CRI refrigerator:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Food Club Cinnamon Rolls (tube of 8)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Pillsbury Orange Flavored Rolls (tube of 8)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;V8 - High Fiber&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Soy Milk, 1 gallon&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Gatorade Rain, Strawberry Kiwi (64 oz.)&lt;/li&gt;&lt;li&gt;Gatorade Rain, something else (64 oz.)&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Food Club natural creamy peanut butter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Tostito's salsa, medium&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Tribes Eggplant Hummus&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;In the office freezer:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Lean Cuisine barbeque chicken pizza&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Lean Cuisine Chicken Carbonara&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Lean Cuisine Chicken Chow Mein&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Lean Cuisine Parmesan Crusted Fish&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Jose Ole Chicken Tacquitos (20 ct.)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Welch's Limeade concentrate&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Food Club California Blend frozen vegetables&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-7757851622753612354?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/7757851622753612354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=7757851622753612354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/7757851622753612354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/7757851622753612354'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2008/09/inventory-of-my-food-supply-at-office.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-5370171681326130203</id><published>2008-08-11T05:31:00.001-07:00</published><updated>2008-08-11T15:10:44.255-07:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;CONCLUSIONS&lt;br /&gt;Acknowledging the limitations of the study, results indicate that consuming caffeinated beverages did not significantly alter hydration status as measured by weight change. It is further concluded that blood and urine indices are insensitive to slight fluctuations in hydration status. &lt;/blockquote&gt;- &lt;a href="http://www.jacn.org/cgi/reprint/19/5/591"&gt;The Effect of Caffeinated, Non-Caffeinated, Caloric and&lt;br /&gt;Non-Caloric Beverages on Hydration&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Now that that is settled, can everyone please quit playing doctor about it? If not, please find some useful evidence before suggesting that I give up chocolate in order to stay hydrated.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-5370171681326130203?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/5370171681326130203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=5370171681326130203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/5370171681326130203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/5370171681326130203'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2008/08/conclusions-acknowledging-limitations.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-6432916545364914205</id><published>2007-09-15T20:22:00.001-07:00</published><updated>2007-09-15T22:21:58.129-07:00</updated><title type='text'></title><content type='html'>I've been playing more World of Warcraft recently. I suppose it's decent entertainment if you don't get sucked into more than a few hours a week. &lt;br /&gt;&lt;br /&gt;Anyhow, I was reading &lt;a href="http://www.gamesanityblog.com/2007-08-28/i-cannot-harvest/"&gt;this post&lt;/a&gt; by Gamerdad and it got me thinking.&lt;br /&gt;&lt;br /&gt;I dealt easily with the whole issue of good guy/bad guy sides in WoW within maybe a day of starting. It's no longer clear, even, that the Horde is the "bad guy". I didn't have any trouble doing whatever had to be done in-game. Now, when I'm stealing dried meat from a bunch of desert dwelling centaurs, I get a sudden mental image of crying, starving centaur children. "We're hungry, daddy!" they cry. "I'm sorry, babies, a zombie stole all our meat."&lt;br /&gt;&lt;br /&gt;/cry&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-6432916545364914205?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/6432916545364914205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=6432916545364914205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6432916545364914205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6432916545364914205'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/09/ive-been-playing-more-world-of-warcraft.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-4906580602355587320</id><published>2007-07-31T09:56:00.001-07:00</published><updated>2007-07-31T10:05:51.177-07:00</updated><title type='text'></title><content type='html'>New Login Stuff&lt;br /&gt;&lt;br /&gt;Blogger, in their infinite wisdom, has determined that people should be able to create a new blog post in less than 10 steps! Here's the old way:&lt;br /&gt;&lt;br /&gt;1. Go to web address of your blog&lt;br /&gt;2. Remember, for hopefully the last time, that you can't log in from there&lt;br /&gt;3. Go to blogger.com&lt;br /&gt;4. Hunt around for the username/password boxes. Blogger could not possibly allow those to have &lt;i&gt;central screen real estate&lt;/i&gt; as if you simply &lt;i&gt;can't do anything useful on that page except log in or sign up...&lt;/i&gt;&lt;br /&gt;5. Select the blog you want to work with&lt;br /&gt;6. Select new post&lt;br /&gt;7. Figure out whether you're in Edit Html mode or Compose mode.&lt;br /&gt;8. Switch if necessary, by clicking appropriate tab&lt;br /&gt;9. Type post into box&lt;br /&gt;10. Click "Publish Post"&lt;br /&gt;11. I can't even remember what comes next. It's certainly &lt;i&gt;not&lt;/i&gt; seeing the post you just made, or seeing the list of posts or the list of blogs or anything like that.&lt;br /&gt;&lt;br /&gt;The new way, you only have to do steps 7 onward, or steps 4 onward if you aren't logged in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-4906580602355587320?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/4906580602355587320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=4906580602355587320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4906580602355587320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/4906580602355587320'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/07/new-login-stuff-blogger-in-their.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-6700618809501981855</id><published>2007-07-03T15:09:00.000-07:00</published><updated>2007-07-06T11:19:19.823-07:00</updated><title type='text'></title><content type='html'>&lt;blockquote&gt;&lt;br /&gt;int errorId = (int) cmdParameters["@ErrorID"].Value;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;What's wrong with this code? Why won't it run?&lt;br /&gt;&lt;br /&gt;How would you code getting an int from a SQL Server stored procedure?&lt;br /&gt;&lt;br /&gt;The corrected version of the above line was this.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;int errorId = (int) (SqlInt32) cmdParameters["@ErrorID"].Value;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This one runs, and the first one doesn't.&lt;br /&gt;&lt;br /&gt;The trouble here is that the type of the Value member of the parameter is not SqlInt32. It's a supertype of SqlInt32; it doesn't really matter which one. The cast from SqlInt32 to int is performed as an overloaded int cast operator on SqlInt32, so that without type information, it won't happen.&lt;br /&gt;&lt;br /&gt;It's not really a surprise, at a technical level, but it's irritating just the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-6700618809501981855?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/6700618809501981855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=6700618809501981855' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6700618809501981855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/6700618809501981855'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/07/int-errorid-int-cmdparameterserrorid.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-1641734214072425144</id><published>2007-06-27T10:57:00.000-07:00</published><updated>2008-02-05T10:58:12.216-08:00</updated><title type='text'></title><content type='html'>I keep hearing about the ECMAScript specification. Steve Yegge, some guy on WorseThanFailure, some... something. Two places. There were others, probably.&lt;br /&gt;&lt;br /&gt;I've seen that thing, and it's awful. I would be hesitant to point it out as a source of specification because it's neither easy to read nor, in most cases, even an adequate description of the language. If you don't believe me, try to figure out (from the spec) what the following program does, assuming that alert works as in a browser.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;b = 'Crepes'&lt;br /&gt;a = {b: 42, m: function(){ alert(this.b) }}&lt;br /&gt;(a.m)()&lt;br /&gt;(f = a.m)()&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;(If you're using Firefox, you can string this together with semicolons and drop it right into the Javascript error console, under tools, and click "Evaluate". Or something like that.)&lt;br /&gt;&lt;br /&gt;If you can demonstrate what it does, my hat is off to you. I got to the section on how function and method execution works, and gave up. It simply doesn't say anything that it is worthwhile for a human to ponder, to try to extract meaning.&lt;br /&gt;&lt;br /&gt;Postscript: I've taken a look at the ECMAScript 3 spec, and it isn't a lot better in terms of structure, but I believe it dictates just enough information to interpret the above statements... However, I don't think it dictates the behavior that is currently in browsers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-1641734214072425144?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/1641734214072425144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=1641734214072425144' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/1641734214072425144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/1641734214072425144'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/06/i-keep-hearing-about-ecmascript.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-8097474331781254401</id><published>2007-05-01T11:30:00.000-07:00</published><updated>2007-06-21T13:44:27.324-07:00</updated><title type='text'></title><content type='html'>I started play World Of Warcraft awhile back, and yeah, it's addictive. But I'm no good measure of that; I played Maplestory for about two weeks straight, and I played Gunbound straight through a period of time I'm afraid to estimate.&lt;br /&gt;&lt;br /&gt;That said, I just finished a run of playing WoW in most of my unclaimed time for about 44 days, according to the length of the original trial (14 days) and the first month of service with the game (30 days). So, yeah, a lot of time. I decided awhile back that I would stop for about two weeks after my subscription ran out, and I plan to at least hold that up. Maybe I'll take up that 10-day trail of Burning Crusade next.&lt;br /&gt;&lt;br /&gt;Here are my mans:&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/#character-sheet.xml?r=Nordrassil&amp;n=Quam"&gt;Quam&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/#character-sheet.xml?r=The+Underbog&amp;n=Neginegi"&gt;Neginegi&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/#character-sheet.xml?r=Nordrassil&amp;n=Ununu"&gt;Ununu&lt;/a&gt;&lt;br /&gt;&lt;a href="http://armory.worldofwarcraft.com/#character-sheet.xml?r=Nordrassil&amp;n=Bundt"&gt;Bundt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note that names corresponding to any ordinary formula for naming (say, ordinary first names, surnames, fictional characters and such) rarely generate usable names, and I consider myself lucky to have "Bundt", even on a fairly low population realm; there are currently &lt;a href="http://armory.worldofwarcraft.com/#search.xml?searchQuery=Bundt&amp;searchType=all"&gt;fourteen other people named Bundt&lt;/a&gt;. There are &lt;a href="http://armory.worldofwarcraft.com/#character-sheet.xml?r=Nordrassil&amp;n=Quam"&gt;twenty-five named Quam&lt;/a&gt;. I pride myself that there is no one else with Neginegi, as it is so much derivative of something Victor Borge said. "Neginegi! Two onions. Very simple language."&lt;br /&gt;&lt;br /&gt;Added note: Amazingly, I managed to claim the name "Desu" on the realm Misha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-8097474331781254401?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/8097474331781254401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=8097474331781254401' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/8097474331781254401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/8097474331781254401'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/05/i-started-play-world-of-warcraft-awhile.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-117503765485837746</id><published>2007-03-27T17:07:00.000-07:00</published><updated>2007-03-28T14:07:22.533-07:00</updated><title type='text'></title><content type='html'>I've been reading stuff about programming interviews a lot, for the last... um... 2 years, I guess. The last few hours, specifically. &lt;br /&gt;&lt;br /&gt;A few things. One, I need to keep a good eye on Coding Horror: &lt;a href="http://www.codinghorror.com/blog/archives/000781.html"&gt;http://www.codinghorror.com/blog/archives/000781.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My FizzBuzz ended up at a whopping 66 characters, but I didn't try too hard. (This is , in fact, Perl.)&lt;br /&gt;&lt;blockquote&gt;print!($_%3)?!($_%5)?FizzBuzz:Fizz:!($_%5)?Buzz:$_,"\n"for 1..100&lt;/blockquote&gt;&lt;br /&gt;Here's a second, by some set of links away from that:&lt;br /&gt;&lt;a href="http://www.kegel.com/academy/getting-hired.html"&gt;http://www.kegel.com/academy/getting-hired.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://gilesbowkett.blogspot.com/2007/03/fizzbuzters.html"&gt;&lt;br /&gt;Unfortunately for me&lt;/a&gt;,&lt;br /&gt;&lt;blockquote&gt;At the risk of raining on their parades, if you aim an idiot detector at your own head, it really doesn't matter what the readout is.&lt;/blockquote&gt;&lt;br /&gt;Whoops.&lt;br /&gt;&lt;br /&gt;And there's a host of them on the only three Blog-type-things I actually watch. Those be &lt;a href="http://www.randsinrepose.com"&gt;Rands&lt;/a&gt;, &lt;a href="http://www.joelonsoftware.com"&gt;Joel&lt;/a&gt; and &lt;a href="http://steve-yegge.blogspot.com/index.html"&gt;Steve&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, I frequently worry what employers might think if they Googled my name. I Google my own name often enough that it might be considered a condition, but at least I know what they'll see. &lt;br /&gt;&lt;br /&gt;First, they'll notice that I died in 1836.&lt;br /&gt;&lt;br /&gt;Second, they'll notice that I co-authored a book with Robert Thornton, Jesse Thornton, and Robert Millikan. Who knew I was so academic?&lt;br /&gt;&lt;a href="http://www.bibliodisia.com/ap_a_e_ed_jesse_millikan_robert_thornton.html"&gt;http://www.bibliodisia.com/ap_a_e_ed_jesse_millikan_robert_thornton.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Actually, first they'll see &lt;a href="http://www.spoj.pl"&gt;Sphere Online Judge&lt;/a&gt;, Alioth (which they probably won't connect with the &lt;a href="http://shootout.alioth.debian.org"&gt;shootout&lt;/a&gt;, unfortunately), and some comments on the Joel On Software forums that don't make me want to go back in time and slap me. Good enough. But that other stuff might throw them off.&lt;br /&gt;&lt;br /&gt;Who knows what horrors they'll find if they Google for "Jesse Milligan" or "Jessie Millikan"? I'm not sure I want to find out. &lt;span style="font-style:italic;"&gt;(Okay, Jessie Milligan is inconsequential and Jesse Milligan &lt;a href="http://www.amazon.com/gp/pdp/profile/A17UL5FY0K66WB"&gt;wrote a critical review of Cryptonomicon&lt;/a&gt;...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-117503765485837746?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/117503765485837746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=117503765485837746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/117503765485837746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/117503765485837746'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2007/03/ive-been-reading-stuff-about.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-115497110170786989</id><published>2006-08-07T10:15:00.000-07:00</published><updated>2006-11-29T08:08:02.170-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://sztywny.titaniumhosting.com/2006/07/23/stiff-asks-great-programmers-answers/"&gt;A Q&amp;A over some famous coder/bloggers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Favorite anime OSTs: Last Exile, Haibane Renmei" - Steve Yegge&lt;br /&gt;&lt;br /&gt;Steve Yegge likes Haibane Renmei? That's almost... I don't know... TMI. It's one thing for &lt;i&gt;me&lt;/i&gt; to like a weird anime about angel-girls and robed people using the Atreides battle language, but famous programmers is a different realm.&lt;br /&gt;&lt;br /&gt;I may have to look at Last Exile now.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Edit: Last Exile was alright... A bit like Blue Submarine No. 6. A bit more compelling, higher budget, worse writing, bad dubbing. Gunslinger Girl, though, was awesome.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-115497110170786989?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/115497110170786989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=115497110170786989' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/115497110170786989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/115497110170786989'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/08/qa-over-some-famous-coderbloggers.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-115496771185479008</id><published>2006-08-07T09:04:00.000-07:00</published><updated>2006-08-08T13:35:20.453-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://msdn2.microsoft.com/en-us/library/system.diagnostics.process_methods.aspx"&gt;Methods for the Process class&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Two issues. &lt;br /&gt;&lt;br /&gt;Issue one: The code to start a process is poorly considered, and in the wrong place entirely. Why is the code to start a process in the "Diagnostics" section? What exactly am I diagnosing by running cacls.exe? And why do I have to spend 4 lines just to kick off a process, without even checking whether it finished, nevermind making sure that it did?&lt;br /&gt;&lt;br /&gt;Issue two: The MSDN page that documents this is over 600KB of HTML. Seriously. Go check. All like MSDN pages seem to be like that. 230KB of this is ViewState. About another 300KB is the text of the menu. Most of the rest seems to be inline styles on spans. My boss gives me crap because I ended up with 80K ViewStates on some minor site that I coded with only two or three months of experience as a programmer, and on .NET. Professionals should not be producing web pages that can barely be tolerated on broadband because of load times, much less pages that need to be navigated quickly and used as a reference.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-115496771185479008?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/115496771185479008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=115496771185479008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/115496771185479008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/115496771185479008'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/08/methods-for-process-class-two-issues.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-114675922804524064</id><published>2006-05-04T08:59:00.000-07:00</published><updated>2006-08-23T12:54:01.310-07:00</updated><title type='text'></title><content type='html'>A favorite quote, which pretty much sums up what I think of [C++/Java/C#] thinking:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[...]in Chapter Two [Bjarne Stroustroup] says that the programming paradigm is "Decide which types you want; provide a full set of operations for each type."&lt;br /&gt;&lt;br /&gt;Everyone believed him, and they went and defined their types, which just stared back balefully.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&amp;#8212;Steve Yegge, &lt;a href="http://opal.cabochon.com/~stevey/blog-rants/singleton-stupid.html"&gt;Singleton Considered Stupid&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Okay. After staring at the actual quote for awhile, writing a little bit of C#, and thinking about the limits of C++, I begin to think that what he meant was "Decide which types you want; provide a full set of operations for each type; and then write your programs, using the types." Another way of saying this is, "Build programs by first writing the bottom-most layer you will need using ADTs. Repeat until the top-most level of the program is trivial."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-114675922804524064?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/114675922804524064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=114675922804524064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114675922804524064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114675922804524064'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/05/favorite-quote-which-pretty-much-sums.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-114667845822267066</id><published>2006-05-03T10:33:00.000-07:00</published><updated>2006-05-03T10:48:43.273-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;On ORMs and stored procedures and embedded SQL and so on and so forth&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ORM is different things to different people, depending on how heavily it is used...&lt;br /&gt;&lt;br /&gt;My observation is that in a lot of simple applications, the majority of the logic *is* inherent in the structure of the database if it is well designed. Poor database design is hat often begets the need for a lot of work that would go into stored procedures, or a library in the application. (Understand that by simple, I mean things like company web sites with simple CM, etc.)&lt;br /&gt;&lt;br /&gt;In the case of well designed databases, therefore, the method of access to the data is not a big issue. Embedded SQL is a then mostly a minor maintenance/debugging time-wasting problem, not a design flaw. The ORM mostly acts as a thin layer equivalent to the relational design, but more malleable, and stored procedures solutions are convenient but dispensable. In cases where the table scheme captures all of the important logic, method of access is fungible.&lt;br /&gt;&lt;br /&gt;On the other hand, some applications require a lot of business logic on top of the database table design. That's when you really don't want any kind of non-abstract access to data outside of a single layer--It's a layering/orthogonality/abstraction problem, not necessarily a question of where technically to put that one layer.&lt;br /&gt;&lt;br /&gt;In that second case (some or lots of business logic), sometimes stored procedure-type work is the right solution and sometimes not.  Some applications are composed of a lot of relational or set-oriented work where SQL is simply the best language and environment for doing the work. In some othe projects, the major mutations are not on sets, or not complicated in terms of sets, and are composed mostly of branching logic with CRUD operations. Those can be done (and maybe should be done) in a good procedural/functional/OO environment outside the database.&lt;br /&gt;&lt;br /&gt;So, in my mental model, methods of implementing business logic would be judged on one basic criterion. Can all of the important logic be placed in the table design? If so, how and where the database is accessed is not important, and the database-correctness is orthogonal to how and where the data is accessed. Otherwise, you &lt;span style="font-style: italic;"&gt;must&lt;/span&gt; carefully construct a business logic layer and route all data access through that.&lt;br /&gt;&lt;br /&gt;The point is different to different crowds. The whole "business logic layer" thing is foreign to some people who aren't reading thing. On the other hand, some people insist on the vital importance of ORMs or the business logic layer or stored procedures, et cetera. The message that "the logic is in the database" is for &lt;span style="font-style: italic;"&gt;those&lt;/span&gt; people who aren't reading this.&lt;br /&gt;&lt;br /&gt;Anyways. Time for food.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-114667845822267066?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/114667845822267066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=114667845822267066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114667845822267066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114667845822267066'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/05/on-orms-and-stored-procedures-and.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-114502562063548403</id><published>2006-04-14T06:50:00.000-07:00</published><updated>2006-06-19T15:34:50.853-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-style:italic;"&gt;I've had some time to mess with C# 2.0, and it  may not be a breath of fresh air, but it's farther from the dung wagon.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The two silver bullets mentioned by Fred Brooks in "The Mythical Man-Month" are high-level languages and unified programming environments. He identified some other potential silver bullets at the time, but disregard those for a moment. Let's ask, are we &lt;span style="font-style:italic;"&gt;using&lt;/span&gt; those main two bullets?&lt;br /&gt;&lt;br /&gt;My answers are no and no.&lt;br /&gt;&lt;br /&gt;I should explain what I use for a living. I use C# in VS.NET 2003, mostly, but I'm moving into VS.NET 2005.&lt;br /&gt;&lt;br /&gt;Under most circumstances, C# would be called a "High-level language", and VS.NET would be called a "Unified programming environment". The fundamental problem here is &lt;span style="font-style:italic;"&gt;problem domain&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;That's the main point. The rest of this article is going to be sacked. Quit reading.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you view the term "High-level language" as denoting a specific, objective set of features--classes, garbage collection, and a large standard library--then quit reading this. You're either brainwashed or just not smart enough to understand the discussion.&lt;br /&gt;&lt;br /&gt;Unfortunately, identifying what is meant by "high-level" is difficult. Some people think it means "Reads like English." Gosh, arithmetic must then be a low-level language. "Compact representation of the problem solution" is another suggestion. That one has more merit than the "English" one. Some other people would probably say that it means "Ability to build new high-level languages on top of it." The definitions and preferences vary by what they center on--How people percieve it, how hard it is to write it, how hard it is to build new meta-levels right on top of it...&lt;br /&gt;&lt;br /&gt;As an amalgamation of the salient points of the above ideas and some others, here is my definition:&lt;br /&gt;&lt;br /&gt;A hight level language is a language which is concieved and designed for the purpose of doing a certain set of tasks with the greatest possible ease.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Buzz, buzz.&lt;/span&gt; Okay.&lt;br /&gt;&lt;br /&gt;Corollary: A high-level language is a language in which its vocabulary of constructs closely match and model the vocabulary of the problem domain.&lt;br /&gt;&lt;br /&gt;The first high-level language that comes to mind is APL, for being the most high-level of any language I know of in its own problem domain. Some markup languages ought to be mentioned here. SQL would be in the top ten.&lt;br /&gt;&lt;br /&gt;I feel like Lisp and Smalltalk ought to be in there, but &lt;span style="font-style:italic;"&gt;no general purpose language fits this bill.&lt;/span&gt; I can't justify it based on my own definition. Therefore, a second definition is in order:&lt;br /&gt;&lt;br /&gt;A potential high-level language (meta-high-level language?) is a high-level language for creating high-level languages, which is to say that it has data, data structures, processes and such expression that it is easy to build a fitting domain-specific language or vocabulary on top of it.&lt;br /&gt;&lt;br /&gt;Lisp, Smalltalk, Javascript... Whatever. I think I would count any solid functional language with good expressivity, and any OO language with at least the brains of Javascript (Python, Ruby, others). &lt;span style="font-style:italic;"&gt;This, not the first definition, is what I feel Fred Brooks was talking about&lt;/span&gt;, though the man did like his APL. (J, at least, would probably fall into this category. I can't $%^&amp;* get it to work at the moment.)&lt;br /&gt;&lt;br /&gt;Part of the argument here is that &lt;span style="font-style:italic;"&gt;stratified development&lt;/span&gt; is a vital part of the silver bullet; if you establish a high-level language for dealing with a domain, your work speeds up by an integral factor. If it turns out that you can do so again, creating an even higher-level language that uses the old one or ties together multiple high-level vocabularies, then, well... you just keep gaining power and speed.&lt;br /&gt;&lt;br /&gt;I would say from experience that C# is not a close fit for creating or maintaining web applications. None of the data, data structures, processes or anything else in it are well-concieved for the purpose of dealing shortly with trivial web programming problems. The only way to combat this would obviously be to create a template language, a giant web framework, and so forth, and it &lt;span style="font-style:italic;"&gt;still&lt;/span&gt; doesn't qualify after that, as hard as the ASP.NET people and ADO.NET people and lots of others &lt;span style="font-style:italic;"&gt;tried&lt;/span&gt; to fix the basic problem that C# was not concieved for being anywhere near high-level programming in web applications except in the most trivial cases. So C# does not fit the first definition, in my opinion. &lt;br /&gt;&lt;br /&gt;It is not easy or even possible to create a new such language or module within C#--you get buried in creating new classes and structs and special constructors and writing for-loops, and &lt;span style="font-style:italic;"&gt;oh the humanity!&lt;/span&gt;, don't even try it. It's so close you can smell it, but it isn't there. You can't get from C# to a real, high-level expression of any idea more complicated that buttons and textboxes on forms, unless you're trying to express a Pet Store and you have Visual Studio.&lt;br /&gt;&lt;br /&gt;I haven't even talked about the second bullet yet. I have things to say, but they can wait.&lt;br /&gt;&lt;br /&gt;Here is the point:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;Fred Brooks knew 40 years ago that high-level languages and meta-high level languages are basic, necessary tools for solving problems at reasonable speeds, and C# is not such a tool, so we should use something else.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-114502562063548403?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/114502562063548403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=114502562063548403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114502562063548403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114502562063548403'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/04/ive-had-some-time-to-mess-with-c-2.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-114502260027569563</id><published>2006-04-14T06:48:00.000-07:00</published><updated>2007-06-28T12:58:27.964-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blog.quux.info/uploaded_images/msleadbullets-789691.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://blog.quux.info/uploaded_images/msleadbullets-786903.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Postscript: What the heck is this road doing here? Where's the picture &lt;span style="font-style:italic;"&gt;I&lt;/span&gt; put here? Blogger, you got some 'splaining to do!&lt;br /&gt;&lt;br /&gt;P.S.S.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Groucho: Anything I retain now is velvet.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-114502260027569563?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/114502260027569563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=114502260027569563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114502260027569563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114502260027569563'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/04/what-heck-is-this-road-doing-here.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-114078937998787857</id><published>2006-02-24T05:54:00.000-08:00</published><updated>2006-04-14T07:52:54.990-07:00</updated><title type='text'></title><content type='html'>&lt;blockquote&gt;The patient typically finds himself impelled by some deep, inner conviction that something is true, or right, or virtuous: a conviction that doesn't seem to owe anything to evidence or reason, but which, nevertheless, he feels as totally compelling and convincing.&lt;/blockquote&gt;&lt;br /&gt;-- Richard Dawkins&lt;br /&gt;&lt;br /&gt;Wow! Words of wisdom. That &lt;span style="font-style:italic;"&gt;perfectly&lt;/span&gt; describes... Well... everyone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-114078937998787857?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/114078937998787857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=114078937998787857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114078937998787857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/114078937998787857'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2006/02/patient-typically-finds-himself.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-112777420124364981</id><published>2005-09-26T15:28:00.000-07:00</published><updated>2006-04-14T08:20:39.616-07:00</updated><title type='text'></title><content type='html'>&lt;h3&gt;Notes on &lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;I swear that I will &lt;i&gt;eventually&lt;/i&gt; quit blogging about my cat and write something real. Until then, I have some general thoughts on &lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt;, which is a Javascript library that intended for use in &lt;a href="http://www.web2con.com/"&gt;Web 2.0&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt;/Googlish web applications.&lt;/p&gt;&lt;h4&gt;First thought: Prototype doesn't do very much.&lt;/h4&gt;&lt;p&gt;Prototype has three weakly related uses:&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The first is to provide a consistent cross-browser platform for asynchronous requests, event handling, and other common tasks. This includes creating new objects, as well as enhancing the built-in Javascript objects.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The second is to provide shortcuts and minor abstractions for common tasks, such as the '$' function for finding elements.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The third is to invent some tools for an object-oriented programming style closer to that of the curly-brace languages. An example is the class function and the surrounding conventions.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;p&gt;Second thought: I have already implemented some of what Prototype does. Many web programmers have.&lt;/p&gt;&lt;p&gt;Third thought: The strength of Prototype is probably in libraries like Scriptaculous that use it or, more appropriately, &lt;i&gt;require&lt;/i&gt; it.&lt;/p&gt;&lt;p&gt;Fourth thought: $('whatDoesThisDo')? F$('whatDoesThisDo')? Oh, goody, APL. &lt;i&gt;(Note: I've since found out that I like APL.)&lt;/i&gt;&lt;/p&gt;&lt;p&gt;I'll fill this in later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-112777420124364981?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/112777420124364981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=112777420124364981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112777420124364981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112777420124364981'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2005/09/notes-on-prototypei-swear-that-i-will.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-112641823987116358</id><published>2005-09-10T22:26:00.000-07:00</published><updated>2005-09-11T13:09:18.726-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;a href="http://www.elivecd.org/"&gt;Elive&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've just finished installing and configuring Elive 0.3 on our old emachine. I'm very impressed with what they are calling a 0.3 version. I am equally impressed with &lt;a href="http://www.enlightenment.org/"&gt;Enlightenment&lt;/a&gt; 17. It just doesn't &lt;span style="font-style: italic;"&gt;feel&lt;/span&gt; like pre-release, unstable software. This contrasts with my last install on that machine, which was &lt;a href="http://kanotix.com/info/index.php"&gt;Kanotix&lt;/a&gt;, which is known to have some trouble with GNOME; I should have known better. (That also contrasts with the &lt;a href="http://www.netbsd.org/"&gt;NetBSD&lt;/a&gt; install, in which I could not get the ethernet to work.) (Update: After a few days of using it, I've noticed that the cursor flickers and shakes sometimes. That's the worst I've seen.)&lt;br /&gt;&lt;br /&gt;I should mention that I am partial to &lt;a href="http://www.morphix.org/"&gt;Morphix&lt;/a&gt;, having used several of those including &lt;a href="http://linuks.mine.nu/gnustep/"&gt;GNUStep&lt;/a&gt;. It seems to me that "normal" distributions are almost certainly on the way out, as far as the desktop is concerned; it just isn't fitting to force the user to spend hours installing before they can see what they are getting. The Morphix installer seems to have grown up some since I saw it last, too.&lt;br /&gt;&lt;br /&gt;The Elive team built the package set for ordinary users. The distro comes with lots of desktop software. There are no development tools other than the absolute necessities; I found gcc, python and perl, but no ruby or any IDEs. Anything could be installed from the repositories, though, and synaptic is included. (I worry that the special sources in sources.list will become defunct, as happens to many Debian-based distros.)&lt;br /&gt;&lt;br /&gt;OpenOffice.org 2.0 beta was included; unfortunately, Java is not available by default. But, it is packaged specially for elive such that "apt-get install java" will bring it to life, fully formed. This is unique among Debian distributions as far as I know.&lt;br /&gt;&lt;br /&gt;There was one critical flaw in the install, which has the symptom that when you try to log in, the screen flashes and returns you to the login prompt. &lt;span style="font-style: italic;"&gt;Whoops.&lt;/span&gt; That one should be gone soon. It was diagnosed for me in #elive on FreeNode; the solution is to remove the blank line from the top of "/etc/environment".&lt;br /&gt;&lt;br /&gt;I am also constantly frustrated that distributions think 1024x768 is &lt;span style="font-style: italic;"&gt;enough pixels for you, mister&lt;/span&gt;. Perhaps the emachines monitor resists proper probing. Anyway, I modified XF86Config-4 to force 1280x1024. Problem solved.&lt;br /&gt;&lt;br /&gt;Did I mention that E17 is groovy? It just looks really nice, and the themes are pleasant.&lt;br /&gt;&lt;br /&gt;Hurrah for everyone involved in Linux, Debian, Knoppix, Morphix, Enlightenment and Elive. I guess this means I'm not NetBSD only anymore.&lt;br /&gt;&lt;a href="http://www.elivecd.org/"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-112641823987116358?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/112641823987116358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=112641823987116358' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112641823987116358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112641823987116358'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2005/09/elive-ive-just-finished-installing-and.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-112624097665568462</id><published>2005-09-08T21:40:00.000-07:00</published><updated>2005-10-07T06:24:33.266-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;Blogger is without clothes, and is embarrassed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Found in the source of a post:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2334/1473/1600/bloggerspans1.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/2334/1473/400/bloggerspans.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; this?&lt;br /&gt;&lt;br /&gt;Also, there is no obvious way to paste XHTML into the editor; hence the image.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-112624097665568462?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/112624097665568462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=112624097665568462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112624097665568462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112624097665568462'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2005/09/blogger-is-without-clothes-and-is.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-112623362735630833</id><published>2005-09-08T19:37:00.000-07:00</published><updated>2005-10-07T06:26:09.573-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2334/1473/1600/I_Want_To_Believe1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/2334/1473/400/I_Want_To_Believe.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;I've only been a commercial web developer for a scant 2 years, including my internship at CRI. I would say that my biggest frustration, above and beyond exclusively using the Microsoft toolchain for development, has been IE6. There is an added dose of IE/Mac in there, but IE6 is the major bit.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.positioniseverything.net/explorer/threepxtest.html"&gt;3 pixel gap?&lt;/a&gt; What kind of oversight could produce that bug? Did they catch that before it was released? 4 years without an update? &lt;a href="http://www.quirksmode.org/css/display.html"&gt;No position: fixed&lt;/a&gt;? Who comes up with this garbage? Microsoft is supposed to be a &lt;span style="font-style: italic;"&gt;mighty&lt;/span&gt; &lt;span style="font-style: italic;"&gt;army&lt;/span&gt; of ingenius coders! It seems like the product of unbridled hate from the direction of Microsoft. I don't know the exact history, but I doubt it could dissuade me that someone at Microsoft &lt;span style="font-style: italic;"&gt;really does &lt;/span&gt;&lt;span style="font-style: italic;"&gt;hate web developers&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I do hope Microsoft fixes their bugs. I have struggled constantly to achieve consistent design without using any CSS hacks of great importance, so I am not afraid of what will happen when The New Version comes out. Regardless of whether I am still in web programming when the event happens, I'm sure sometime in the next few years I will sit down at a computer with a &lt;span style="font-style: italic;"&gt;large collection&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;of browsers of &lt;span style="font-style: italic;"&gt;great integrity,  &lt;/span&gt;including Internet Explorer; I will sit, and I will read the CSS 2 spec, and I will create a floating menu with "position: fixed", and I shall approach floats without fear; I shall even make use of transparent PNG files to decorate my masterpiece; I will make a gloriously simple and remarkable style sheet, and I shall marvel at the sight.&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And then, I will continue to groan and moan about all the things that Internet Explorer &lt;span style="font-style: italic;"&gt;still&lt;/span&gt; doesn't support. Come on, Bill, &lt;span style="font-style: italic;"&gt;Firefox &lt;/span&gt;supports CSS 3 selectors! Why not you guys?&lt;br /&gt;&lt;br /&gt;To change the subject immensely:&lt;br /&gt;I'm going to make the off-the-cuff prediction that IE7 will be somehow ill-concieved in order to hurt Google's advertising revenue. Google is Microsoft's largest threat right now; they aren't just cutting in on Microsoft's web email and map businesses. They are launching a null attack on Windows, simply by drawing users to the web as a platform. (Google Earth and Google Talk notwithstanding.)&lt;br /&gt;&lt;br /&gt;For instance, what if IE7 inflicts a &lt;span style="font-style: italic;"&gt;dire&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;drastic&lt;/span&gt; security warning upon the use of XmlHttpRequest? Immediately, users fear Gmail and Google Maps. &lt;span style="font-style: italic;"&gt;Come back to the safe haven of Hotmail, little ones.&lt;/span&gt;  There is a danger that these pages could be used to &lt;span style="font-style: italic;"&gt;haxxor your interweb.&lt;/span&gt; This would not surprise me at all. (Update: Okay, I was wrong, there gung-ho on AJAX. Hmm.)&lt;br /&gt;&lt;br /&gt;They could also add in a "Block text advertisements" feature.&lt;br /&gt;&lt;br /&gt;Either way, &lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;IE7 will make web programming harder.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;We still have to support IE6 and all of the rest of the popular browsers. IE7 is going to fix bugs that are featured in current pages, and it is going to support parts of the CSS2 spec that web page designers did not intend for IE to see. Meanwhile, it will still have backwards-compatibility with hacks like 'filter:' and 'expression()' which have there place in my code. &lt;span style="font-style: italic;"&gt;Now we're not going to have any safe tools for putting IE6 in its proper place.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And yet, there is something to celebrate about in the world of browsers, and web developers don't seem to care! It is a change that will make everyone's lives better! It may even have a &lt;span style="font-style: italic;"&gt;higher impact&lt;/span&gt; on web design than IE7!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;IE5 and IE/Mac are going to dissappear soon.&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;99% of web browsers will be "Version 6 browsers."&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Altogether: Yippee!&lt;br /&gt;&lt;br /&gt;It could be that some web designers are already ignoring both of these. Unfortunately, for some reason, &lt;span style="font-style: italic;"&gt;graphic designers&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;executives of large companies&lt;/span&gt; think these browsers are very, very important. Firewhat? Whofari? &lt;span style="font-style: italic;"&gt;There's a glitch in IE/Mac! Fixing that is your highest priority right now.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;So, there's good news, and bad news, and good news. Despite all the excitement, I hope I will be out of web development by the time any of it comes to pass.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-112623362735630833?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/112623362735630833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=112623362735630833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112623362735630833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112623362735630833'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2005/09/ive-only-been-commercial-web-developer.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15785647.post-112558553978847090</id><published>2005-09-01T09:40:00.000-07:00</published><updated>2005-09-01T12:52:51.000-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.theaustralian.news.com.au/common/story_page/0,5744,16417002%255E30417,00.html"&gt;Revolution in mouse technology&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;While every one else on Earth will be yammering on and on about ethics and whether this will be used on humans, I have better things to discuss - what this means for the pet industry.&lt;br /&gt;&lt;br /&gt;For starters, obviously a regenerating mouse would be the perfect pet for children who have damaging tendencies toward pets. Chopped the tail off? It's back! Tore an eye out? *Pop* Looky there!&lt;br /&gt;&lt;br /&gt;But, this &lt;span style="font-style: italic;"&gt;remarkable&lt;/span&gt; discovery could have dire effects on the pet industry. Mice and other pets that won't ever have serious health problems will last longer and provide &lt;span style="font-style: italic;"&gt;far &lt;/span&gt;more potential entertainment for customeres. Obviously, pet stores can charge more for regerating mice, but they would have to resort to illegal CD-retailer type of tactics in order to keep prices on these mice higher than the price for normal ones. The alternate route for the pet industry would be to lobby for the creation of a government regulatory body that puts an immense tax on all regenerating pets. (A distant third option would be to wine &amp;amp; dine leaders of all major religions and turn them against bio-engineered pets.)&lt;br /&gt;&lt;br /&gt;Another positive aspect: Biology class dissections. Dead cats? Frogs in formaldehyde? Forget it! Bring in your regen-mice tomorrow everyone, we're going to do some chopping! Tie it down, open it up, inspect it, then sew it back together. It'll be right as rain in a couple days!&lt;br /&gt;&lt;br /&gt;Last application: Giant armies of supermice. &lt;a href="http://www.news.com.au/story/0,10117,15739502-13762,00.html"&gt;Scientists have already discovered how to freeze animals and re-animate them&lt;/a&gt;. If you think you may need a giant army of mice in the next few months, there is a simple way to prepare: First, throw a few adults into a very large cage with lots of food and mousephrodisiacs and watch them go at it. Repeat as necessary until you have thousands of mice. Then, as the mice reach maturity, you send them through a short but rigorous battle-training simulation program, weed out the weak ones, and freeze the rest for later use. Now you are prepared! Whenever you need a giant army, you load all of the frozen little Rambo-critters onto helicopters, and begin the reanimation process. By the time the aircraft are ready to drop hordes of parachute laden-mice on your enemies, they will be unfrozen and ready to fight! Go conquer yourself a small country. Do Lithuania. Tell them I sent you.&lt;br /&gt;&lt;br /&gt;I'm going to have to get me one of these mice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15785647-112558553978847090?l=jmillikan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jmillikan.blogspot.com/feeds/112558553978847090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15785647&amp;postID=112558553978847090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112558553978847090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15785647/posts/default/112558553978847090'/><link rel='alternate' type='text/html' href='http://jmillikan.blogspot.com/2005/09/revolution-in-mouse-technology-while.html' title=''/><author><name>Jesse Millikan</name><uri>http://www.blogger.com/profile/14904929098102943693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
