<?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-5064459391707841087</id><updated>2011-09-01T11:28:46.999-04:00</updated><category term='cooking'/><category term='lifestyle'/><category term='meme'/><category term='technology'/><category term='business'/><category term='weight loss'/><category term='Yeast Bread'/><category term='tall'/><category term='book review'/><category term='rants'/><category term='Cycling'/><category term='philosophy'/><category term='charcuterie'/><title type='text'>Twenty One Times Two</title><subtitle type='html'>Random thoughts on Life, the Universe, and Everything.
Confessions of a geek and serial hobbyist.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>89</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7161776591397468536</id><published>2011-08-25T13:46:00.000-04:00</published><updated>2011-09-01T11:28:47.018-04:00</updated><title type='text'>New Paleo Blog</title><content type='html'>I've decided to start a new blog where I can talk just about nutrition and the paleo diet. If you are interested, go here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ancestrallyinspired.blogspot.com/"&gt;http://ancestrallyinspired.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I will keep this blog for all other random topics. &lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;function alert(m) {}&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7161776591397468536?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7161776591397468536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7161776591397468536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7161776591397468536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7161776591397468536'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2011/08/new-pale-blog.html' title='New Paleo Blog'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1963160689373815432</id><published>2011-05-29T19:30:00.002-04:00</published><updated>2011-05-29T19:41:16.665-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>On Scientific Knowledge, Weight Loss, and Being Very Wrong</title><content type='html'>I have been wrong, &lt;b&gt;very wrong&lt;/b&gt;, about diet and nutrition for my whole life. I hate being wrong.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;As a critical thinker and trained research scientist with a Ph.D. in biology I feel that I should have done better. My only defense is that when one is an expert in a field, one tends to trust the opinions of experts in other fields.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;I know I have the tools and ability to become an expert at many things, but it takes some serious motivation. If I was diagnosed with cancer, I would devour the literature and trust no one until I mastered it. But for everyday matters like nutrition I have always just done what I was told. &lt;br&gt;&lt;br /&gt;&lt;br /&gt;I have been blogging on and off about my weight loss efforts (roller coaster) since 2007 (read the whole mess in reverse chronological order &lt;a href="http://twentyonetimestwo.blogspot.com/search/label/weight%20loss"&gt;here&lt;/a&gt; if you want), but the roller coaster actually started much earlier. The short version goes like this: 300-220, 270-213, 280-220, 285-225, 270-219 (current). As you can see I am really very good at losing weight, but pathetic at keeping it off.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;So what is different about this time? Why do I finally think I have found the answer? Easy: I am not on a diet this time. Oh, it started out as a diet (Slow Carb from The Four Hour Body), but it has morphed into a simple and hopefully permanent lifestyle change.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;The change is this: no grains and no sugar and no starchy vegetables. Or more prosaically no bird food or hippopotamus food (hippopotami eat sugar cane). &lt;br&gt;&lt;br /&gt;&lt;br /&gt;OK, that's a little over-simplified, but the whole thing really is just to minimize insulin production - eat few enough carbs (especially fructose! - no fructose that doesn't come from whole fruit!) so that you are losing or not gaining weight and stop worrying about fat intake, especially saturated fat. Other than that, eat anything in any quantity, especially meat and vegetables. But beware things that can cause insulin spikes even if they are non-caloric like artificial sweeteners.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;I weigh less than I have in ages. I have more energy than I have had in ages. My teeth feel cleaner. I am less irritable and more positive. I am never hungry. I don't have to measure or record what I eat. I get to eat lots of things I love (bacon, eggs, cheese, steak, broccoli, kale, collard greens). I do miss a few things (bread, beer, sweets), but there is no formula for weight loss that doesn't require some changes/sacrifice - I should know, I've done enough of them.&lt;br&gt; &lt;br /&gt;&lt;br /&gt;So do I have my own brilliance to thank for this? Alas, no. I must give full credit to Gary Taubes who devoured the literature for me and laid out the arguments in a clear logical fashion. I can't overstate this - my entire view of nutrition, science, and even human history has been altered in the last few months as I digested these ideas and then proved them out on my own body.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;A huge fraction of the conventional nutritional wisdom is wrong. Demonstrably wrong. Scientifically wrong. Gary certainly isn't the first person to espouse reducing carbs (neither was Atkins), but he lays out the history and arguments extremely well. From a scientific perspective we don't even really know that carbs are the problem (the telling experiments have not been done), but I now believe that the carbohydrate hypothesis is highly compelling and most likely true (with a fructose hypothesis as a close second - but that's another post).&lt;br&gt;&lt;br /&gt;&lt;br /&gt;Gary Taubes is a an excellent science writer who frequently writes for Science magazine, often on the topic of bad science. He has written two books and some articles on the carbohydrate hypothesis. You can see him speak &lt;a href="http://www.youtube.com/playlist?p=PL4427DBF43190B080&amp;utm_source=Current+Members&amp;utm_campaign=eb29f08d65-Late_May_Update5_27_2011&amp;utm_medium=email"&gt;here&lt;/a&gt;. if you are going to read just one book, it should be &lt;a href="http://www.amazon.com/Why-We-Get-Fat-About/dp/0307272702/ref=sr_1_1?ie=UTF8&amp;qid=1306707768&amp;sr=8-1"&gt;Why We Get Fat: And What To Do About It&lt;/a&gt;. His other book, &lt;a href="http://www.amazon.com/Good-Calories-Bad-Controversial-Science/dp/1400033462/ref=sr_1_3?ie=UTF8&amp;qid=1306707768&amp;sr=8-3"&gt;Good Calories, Bad Calories&lt;/a&gt;, is excellent, but be warned that it is dense with literature references and the like - it is very complete - doctors and scientists will likely want to read this one. &lt;br&gt;&lt;br /&gt;&lt;br /&gt;These books and the seminar are all top notch stuff. Two thumbs up. Go watch. Go read. &lt;i&gt;Why We Get Fat&lt;/I&gt; is also available on &lt;a href="http://www.audible.com/pd/ref=sr_1_1?asin=B004D5K512&amp;qid=1306712054&amp;sr=1-1"&gt;audible.com&lt;/a&gt;, so you can listen too.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;These are not diet books, so don't expect that. You'll have to go elsewhere for low carb diet advice (or make up your own as I did - the principles are easy).&lt;br&gt;&lt;br /&gt;&lt;br /&gt;I do not believe that a thinking person can read Why We Get Fat without changing their diet, so be warned about that as well. If you'd rather live with your head buried in the sand, stay far away.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;The really scary thing is that if the carbohydrate hypothesis is correct, we are royally screwed. Only a tiny fraction of the planet can afford to eat properly and our entire global food production system is set up almost exactly wrong to address it. But that too will have to be another post.&lt;br&gt;&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1963160689373815432?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1963160689373815432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1963160689373815432' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1963160689373815432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1963160689373815432'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2011/05/on-scientific-knowledge-weight-loss-and.html' title='On Scientific Knowledge, Weight Loss, and Being Very Wrong'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3016278305314362208</id><published>2010-11-15T12:30:00.005-05:00</published><updated>2010-11-16T13:40:36.426-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tall'/><category scheme='http://www.blogger.com/atom/ns#' term='Cycling'/><title type='text'>Tall Man On a Bike</title><content type='html'>This post is about tall men on bicycles, not about tall bikes. Possibly tall women and anyone on the fringes of normalcy of size and body proportion will find something useful here too, or at least someone to commiserate with.&lt;br /&gt;&lt;br /&gt;Let me start off by admitting up front that I am no bike expert. Everything I have learned about bicycles comes from a few months of focussed obsession. If you think I have something wrong, feel free to point it out in the comments.&lt;br /&gt;&lt;br /&gt;I'm 6'7" tall. Readers of my blog already know this, but I expect that this post will get a lot of visits from search engines. My own experience tells me that it is almost impossible to find advice on bikes for the tall using google, so I am intentionally including some text to make this more findable. This advice is tailored for those, say, 6'5" and up. If you are 6'2" (and male) normal bike buying mostly applies unless you are oddly proportioned - go to your local bike shop (LBS) and they will take care of you (or go to a couple and pick the one that seems most competent to go back to). In between 6'2" and 6'5" it kind of depends on your proportions.&lt;br /&gt;&lt;br /&gt;I haven't had a bike since I was a kid. One day a few months ago I decided that I wanted a bike, so I did what anyone would do. I went to my most bike knowledgeable friends and sought their advice. They almost unanimously told me to go to my LBS. So I did. A couple. A few. A bunch. And I went to REI. And it wasn't all that helpful.&lt;br /&gt;&lt;br /&gt;Here is some math for you that illustrates the problem. About one person in ten thousand is my height or taller. Let's imagine an extremely experienced bike shop owner who has sold five thousand bikes. What are the odds that he has sold bikes to enough really tall people to be considered knowledgeable about the problem (say 3 tall people)? I won't bother you with the actual number because it is vanishingly close to zero. There is in fact a 99.5% chance that he has &lt;i&gt;never&lt;/i&gt; sold a bike to even &lt;i&gt;one&lt;/i&gt; person my height or taller.&lt;br /&gt;&lt;br /&gt;Here is what will happen. You'll walk in and say, "I'm 6'7", what kind of bike should I get?" They will ask you some questions about what kind of riding you want to do and perhaps take some measurements. If they are honest they will at some point tell you that there isn't really anything and you should go custom. But eventually all of them, even the honest ones, will try to sell you a mass produced bike.&lt;br /&gt;&lt;br /&gt;They'll find the biggest bike they have or can get and talk to you about adjusting it to fit you. They'll talk to you about sliding the saddle back and getting a longer seat post and adjusting the bar and stem and so on. If you go this route you will spend a thousand dollars on a bike that doesn't really fit. It might work OK. It might cause you back aches. It might handle super funky. It might rattle your teeth. It might fall to bits in a few years, crushed under your weight and mangled by the stresses you put on it.&lt;br /&gt;&lt;br /&gt;Here's the thing: there is no mass produced bike that will fit you. Let me say that again. &lt;b&gt;There is no mass produced bike that will fit you&lt;/b&gt;. If anyone reading this knows of one, please do us all a favor and post a comment. But there isn't one. Really.&lt;br /&gt;&lt;br /&gt;When I finally came to this conclusion I was very annoyed, even angry. But I have mellowed a bit. I don't go into a mall expecting to be able to buy clothing, so why should I go into a bike shop expecting to be able to buy a bike? As with many things you are going to have to pay more than most people. I call this the "tall tax" when I am in a good mood and "bullshit" when I am in a bad mood.&lt;br /&gt;&lt;br /&gt;OK, so what are the options?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Get the new mass produced bike anyway. Look for a strong frame and fork - I advise steel. Larger frames that use the same strength tubing are intrinsically weaker and tall people are intrinsically heavier. Get strong wheels too. Skip the suspension or get a super strong one that you can lock out. Get something as adjustable as possible - threadless &lt;a href="http://en.wikipedia.org/wiki/Headset_(bicycle_part)"&gt;headsets&lt;/a&gt; are your mortal enemy.&lt;/LI&gt;&lt;li&gt;Find the biggest used frame you can and fix it up yourself with adjustable parts (long seat post, long quill stem). This still won't fit, but it will cost a lot less. Look for strong. Look for adjustable. It will be hard to find a good large frame, so expect the search to take some time. Craigslist is your friend. You should consider being your own &lt;a href="http://www.amazon.com/Park-Tool-BBB-2-Bicycle-Repair/dp/B001B6NAW2/ref=sr_1_2?ie=UTF8&amp;qid=1289821876&amp;sr=8-2"&gt;bike&lt;/a&gt; &lt;a href="http://www.amazon.com/Park-Tool-AK-37-Advanced-Mechanic/dp/B000VX7H0C/ref=sr_1_1?ie=UTF8&amp;s=sporting-goods&amp;qid=1289821911&amp;sr=8-1"&gt;mechanic&lt;/a&gt;.&lt;/LI&gt;&lt;li&gt;Find a stock frame from a smaller company that fits. There aren't a ton of these, but &lt;a href="http://www.rivbike.com"&gt;Rivendell Bicycle Works&lt;/a&gt; has two frames that fit me - a 71cm A. Homer Hilsen and a 68cm Bombadil. This is the way I went and I'll let you know how it turns out in future posts (I ordered an A. Homer Hilsen - they had &lt;i&gt;three&lt;/i&gt; of these in stock, bless their tall-friendly souls).&lt;/LI&gt;&lt;li&gt;Go custom. There is a lot of good news here. A custom frame designer is much more likely to know how to help you. You can build what makes sense for you.&lt;/LI&gt;  &lt;/UL&gt;How much are the last two going to cost? A lot. It is going to be at least $1,000 for a frame and fork and probably a good deal closer to $2,000 (and up). And then you have to turn that into a bike. You can buy cheap parts, but I at least couldn't bring myself to do that after buying a high end frame. If you don't put it together yourself there will be a fee associated with that. If you do put it together yourself you will have shipping fees from all of the places you source the parts from and you'll need a bunch of tools. You might be able to put together a bike for $1,800, but it would be quite challenging and I'm not sure what you would end up with, so probably a bit more than that at a minimum. You can put together a very nice bike for twice that.&lt;br /&gt;&lt;br /&gt;But wait, you say what you really want is a folding bike? An electric bike? Some form of technical mountain bike that I've never heard of? My advice: want something else - you'll be happier. &lt;br /&gt;&lt;br /&gt;If you get a custom frame you can have it made with couplers that will make it foldable, but it will be "fold it for air travel" foldable, not "commute to the office, collapse the bike, and carry it to your office" foldable.&lt;br /&gt;&lt;br /&gt;There are kits for converting bikes to electric. The geek in me kind of wants to try this on some old used frame, but they aren't cheap and I certainly don't need anything like this. But maybe you do.&lt;br /&gt;&lt;br /&gt;Here is some stuff you might find useful:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Rivendell on &lt;a href="http://www.rivbike.com/article/bike_fit/choosing_a_frame_size"&gt;picking a frame size&lt;/a&gt;.&lt;/LI&gt;&lt;li&gt;Zinn on &lt;a href="http://velonews.competitor.com/2003/11/bikes-tech/technical-qa-with-lennard-zinn-a-question-of-crank-length_5257"&gt;crank length&lt;/a&gt;. I myself didn't take this advice, largely because of cost. I will have a 180mm crank, but the article says I should have a 216mm crank.&lt;/LI&gt;&lt;li&gt;Sheldon Brown on &lt;a href="http://www.sheldonbrown.com/frame-sizing.html"&gt;bike sizing&lt;/a&gt;. This has links to even more resources. Sheldon's site is a wealth of information.&lt;/LI&gt;&lt;li&gt;&lt;a href="http://zinncycles.com"&gt;Zinn Cycles&lt;/a&gt; actually specializes in bikes for the &lt;a href="http://zinncycles.com/Zinn/index.php/archives/1465"&gt;big and tall&lt;/a&gt;. I went with a &lt;a href="http://www.rivbike.com"&gt;Rivendell&lt;/a&gt; because I want an all-purpose bike, but if your tastes run to something more modern and fit for purpose this looks good to me.&lt;/LI&gt; &lt;/UL&gt;Good luck in your bike hunt!&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3016278305314362208?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3016278305314362208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3016278305314362208' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3016278305314362208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3016278305314362208'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2010/11/tall-man-on-bike.html' title='Tall Man On a Bike'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2819817544894978783</id><published>2010-07-02T10:56:00.001-04:00</published><updated>2010-11-16T13:41:23.939-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tall'/><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><title type='text'>Book Review: The Tall Book</title><content type='html'>There are three things that absolutely define me. Three things that anyone who meets me knows within seconds. Three things that I could not hide from the world if I wanted to. 1) I am very tall (6' 7"), 2) I am a redhead, 3) I am a nerd.&lt;br /&gt;&lt;br /&gt;Of these three things, the one that has defined my life as most different from the norm (whatever that is) is being tall.&lt;br /&gt;&lt;br /&gt;There are many benefits to being tall, to be sure. I am never ignored at a counter while waiting for service. People remember me. It is comparatively easy for me to project a powerful confident presence. I am very rarely threatened or lashed out at.&lt;br /&gt;&lt;br /&gt;And there are many disadvantages to being tall. Some would be obvious even to the non-tall (difficulty buying clothing, hitting my head on doorways, getting jammed into airline seats while some 5' 2" business woman stretches out in the exit row). And some probably have to be lived to be appreciated (ultra low toilets and urinals (actually almost everything about bathrooms), low ceilings, low kitchen counters, cars designed for the comfort of someone a foot shorter than me, foot boards on beds, the non-stop, "Do you play basketball?" Or alas the increasingly frequent, "Did you play basketball?").&lt;br /&gt;&lt;br /&gt;When I saw &lt;a href="http://www.amazon.com/Tall-Book-Celebration-Life-High/dp/B003L1ZX2A/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1278082168&amp;amp;sr=8-1"&gt;&lt;i&gt;The Tall Book&lt;/i&gt;&lt;/a&gt; by Ari Cohen I immediately bought a copy (for the Kindle iPad app, of course - see (3) above). But I must confess that I bought it more as a show of tall moral support than because I thought I would get anything out of it. I mean, I was six feet tall on my twelfth birthday. That's 33 years of being indisputably tall. What could a book possibly teach me about it?&lt;br /&gt;&lt;br /&gt;I was wrong, of course. I learned a bunch of interesting tidbits. I certainly learned more about tall female psychology than I had ever managed to uncover on my own. Tall people and the curious will enjoy this book. Tall teens will find a bunch of useful advice for dealing with life. And if you know a tall teen girl, stop reading right now and go order her this book. Ditto if you know a tall teen boy who wants to date tall teen girls.&lt;br /&gt;&lt;br /&gt;My favorite thing about the book, though, isn't the book at all. It is the fact that Ari has devoted some space to tall activism on the &lt;a href="http://tallbook.com/"&gt;tall book website&lt;/a&gt;. That joins &lt;a href="http://www.6footsix.com/colleenify/"&gt;colleenification&lt;/a&gt; and the &lt;a href="http://tallclothingmall.blogspot.com/"&gt;Tall Clothing Mall blog&lt;/a&gt; as one of my favorite tall resources. There just aren't enough tall resources out there. I would love for there to be a place where I could go to find cars I might fit in before I go shopping for them or find out whether that expensive home gym will be usable before I spend thousands of dollars.&lt;br /&gt;&lt;br /&gt;Anyway, I'm rambling. It's a good book. It's on sale on amazon ($7.60 for the hardcover as I write this). Go buy it.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2819817544894978783?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2819817544894978783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2819817544894978783' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2819817544894978783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2819817544894978783'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2010/07/book-review-tall-book.html' title='Book Review: The Tall Book'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3723925509696342596</id><published>2010-01-19T14:36:00.001-05:00</published><updated>2010-01-19T18:59:19.605-05:00</updated><title type='text'>Do Not Call Lists Need Serious Improvement</title><content type='html'>I am so angry right now that I can barely see straight. My answering machine has just filled to capacity for the &lt;i&gt;&lt;b&gt;third&lt;/b&gt;&lt;/i&gt; time in the last several days. Before this, I wasn't even really aware that my answering machine &lt;i&gt;had&lt;/i&gt; a capacity. The MA senate race is out of control on the phone calls.&lt;br /&gt;&lt;br /&gt;So hear this Martha Coakley and Scott Brown - the only way I would visit the polls today is if I could find a way to vote against both of you so that we could run the election over with people who are not intrinsically evil. I'm seriously going to see if I can start a movement to get a reset button included in all elections, "Push this button if you think all of these people suck and we should try again."&lt;br /&gt;&lt;br /&gt;I hope that both of you and all of the people who worked on and helped plan your campaigns rot in hell for all eternity.&lt;br /&gt;&lt;br /&gt;And the evil politician who carved out an exemption for political calls for the Do Not Call registry? He or she can bloody well join you.&lt;br /&gt;&lt;br /&gt;I suppose that there is nothing I can do about the fact that one of you is going to be elected today. So, if the winner should happen to read this, know that you can redeem yourself by making the Do Not Call registry just what it claims to be.&lt;br /&gt;&lt;br /&gt;Do that and you'll even get my vote next time.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3723925509696342596?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3723925509696342596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3723925509696342596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3723925509696342596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3723925509696342596'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2010/01/do-not-call-lists-need-serious.html' title='Do Not Call Lists Need Serious Improvement'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6920372004291096883</id><published>2009-06-21T19:30:00.001-04:00</published><updated>2009-06-21T19:48:40.251-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>My New Toy</title><content type='html'>I got a new toy the other day.&lt;br /&gt;&lt;br /&gt;It took a fair bit of effort to get it working. It is electrical and it works outdoors, so I had to crawl around under the house playing electrician and install a GFI outdoor covered outlet.&lt;br /&gt;&lt;br /&gt;Then I got the thing unpacked, washed the components, plugged it in, turned it on, and wouldn't you know it? The thing started billowing smoke.&lt;br /&gt;&lt;br /&gt;Fortunately, that is what was supposed to happen, because the new toy is an original &lt;a href="http://www.bradleysmoker.com/"&gt;Bradley Smoker&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/Bradley-BTIS1-Original-Smoker-Black/dp/B000FK2DNM/ref=sr_1_1?ie=UTF8&amp;amp;s=home-garden&amp;amp;qid=1245504030&amp;amp;sr=8-1"&gt;&lt;img style="cursor: pointer; width: 280px; height: 280px;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SjzjG9fqVyI/AAAAAAAALN4/ucgLFptue2A/s400/BradleySmoker.jpg" alt="" id="BLOGGER_PHOTO_ID_5349400166135387938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a seriously ingenious device and a major upgrade from my little water smoker. The main things that frustrated me about the water smoker were that it was super hard to maintain a consistent temperature and it is impossible to cold smoke. And of course capacity - you can't put very much on the single rack of a water smoker.&lt;br /&gt;&lt;br /&gt;The Bradley Smoker uses compressed hardwood piece pellets that it feeds continuously onto a burner, generating smoke. Another electric element controls the temperature of the chamber and it can be turned completely off for cold smoking. So you just set the temperature with a little slider, load up the feeder with pellets, put your food on the four racks, and go away until it is cooked. The cost of the pellets runs about a dollar an hour, which is a lot more expensive than cutting mesquite in your back yard, but not much more than buying hardwood pieces for smoking at Lowe's. And I don't have a lot of mesquite in my back yard.&lt;br /&gt;&lt;br /&gt;The Bradley appealed to me because it places maximum emphasis on control, especially temperature control. There are even digital versions, but my research seemed to indicate that this was not really worth it and if I want to get really anal about it later I can always add an &lt;a href="http://auberins.com/index.php?main_page=product_info&amp;amp;cPath=8&amp;amp;products_id=72"&gt;external digital controller&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The cold smoking ability was also key for me. What is the point in being able to smoke if you can't make perfect bacon or smoke your &lt;a href="http://twentyonetimestwo.blogspot.com/2008/07/salty-lox-and-more.html"&gt;lox&lt;/a&gt;? And I don't even really need to bring up jerky, do I? Of course not.&lt;br /&gt;&lt;br /&gt;The Bradley works spectacularly well. I made some smoked chicken thighs that I pulled and served with a vinegar sauce, some turkey legs, and some heads of garlic. It was really easy to use even though it rained the entire time (I covered the chute to keep the pellets from getting wet, but otherwise didn't worry about the rain). And the food came out quite nice. Quite nice indeed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/Sj7AqgGzZyI/AAAAAAAALQo/ZrN7WLLtJG0/s1600-h/SmokedStuff.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/Sj7AqgGzZyI/AAAAAAAALQo/ZrN7WLLtJG0/s400/SmokedStuff.jpg" alt="" id="BLOGGER_PHOTO_ID_5349925243768235810" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6920372004291096883?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6920372004291096883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6920372004291096883' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6920372004291096883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6920372004291096883'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/06/my-new-toy.html' title='My New Toy'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/SjzjG9fqVyI/AAAAAAAALN4/ucgLFptue2A/s72-c/BradleySmoker.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2147828284551112931</id><published>2009-05-01T06:24:00.002-04:00</published><updated>2009-05-01T07:12:21.216-04:00</updated><title type='text'>Smashingly Good Burgers</title><content type='html'>Anyone who knows me or reads my blog already knows that my favorite kind of burger is &lt;a href="http://twentyonetimestwo.blogspot.com/2008/06/best-hamburger-ever.html"&gt;a big thick lean rare burger made from freshly ground beef&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The problem with that burger, though, is that it takes a lot of effort to prepare. Mostly because you have to grind the meat. I simply don't trust store-ground meat cooked rare, so what to do when you want a burger faster?&lt;br /&gt;&lt;br /&gt;Well, there are fundamentally two kinds of burgers in the world (with lots of variation of course): thick and thin. Or in the words of &lt;a style="font-style: italic;" href="http://aht.seriouseats.com/"&gt;A Hamburger Today&lt;/a&gt;, &lt;a href="http://aht.seriouseats.com/archives/2009/04/where-to-get-bostons-best-burger.html"&gt;East Coast and West Coast&lt;/a&gt;. I like some thin burgers. I like Kidd Valley in Seattle. I like UBurger in Boston. I like 5 Guys. I long to try In-N-Out.&lt;br /&gt;&lt;br /&gt;So, while fresh ground beef would obviously be better, I decided to experiment with the store bought stuff and the &lt;a href="http://aht.seriouseats.com/archives/2008/12/blogwatch-the-paupered-chef-investigates-the-smash-technique.html"&gt;smash&lt;/a&gt; &lt;a href="http://aht.seriouseats.com/archives/2008/10/video-how-the-shake-shack-manhattan-nyc-makes-its-hamburgers.html"&gt;method&lt;/a&gt; to see how good a burger I could make.&lt;br /&gt;&lt;br /&gt;How good a burger did I make? Frickin' awesome, that's how good. And it is FAST. Blazing fast.&lt;br /&gt;&lt;br /&gt;I think the home cook actually has some advantages in making really good burgers this way, the biggest of which is cast iron. For browning meat cast iron kicks the butt of all of the big commercial griddles out there - no one makes them out of cast iron any more. Plus I've watched the 5 Guys cooks smashing burgers - they leave an awful lot of the crust (i.e. flavor) on the grill the way they transfer the meat around. All of the flavor on mine stays with the burger.&lt;br /&gt;&lt;br /&gt;What do you need? A cast iron pan or griddle (not grill), a cast iron press, a &lt;a href="http://www.duebuoi.it/x/uk_usd/catalog/p/spatulas%7E805-16x10.html"&gt;really good/sturdy spatula&lt;/a&gt;, and some parchment paper. The parchment paper keeps the meat from sticking to the press and pulling back up off the griddle, so you get superior browning every time and as a bonus you don't need to keep washing the press.&lt;br /&gt;&lt;br /&gt;The procedure:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Preheat your cast iron. You want it HOT.&lt;/li&gt;&lt;li&gt;Oil it if you need to (if it is really well seasoned, you don't need to)&lt;/li&gt;&lt;li&gt;Plop a ball of meat on it. Yes, I mean a sphere. 85% lean, please. You &lt;span style="font-style: italic;"&gt;need&lt;/span&gt; the fat to make this good.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wait a minute, put the parchment paper over the meat and smash it flat with the press. (and remove the parchment paper)&lt;/li&gt;&lt;li&gt;Season liberally with salt and pepper.&lt;/li&gt;&lt;li&gt;Wait until you see signs of the cooking coming through the cracks in the patty and there is a really good crust on side A and flip, keeping as much of the crust on the meat (as opposed to the pan) as possible (this is why you need a sturdy spatula). You get bonus points for flipping it to a fresh hot spot on the griddle.&lt;/li&gt;&lt;li&gt;Season again and put cheese on if you want it. When cooked through and cheese has started to melt, transfer to a bun.&lt;/li&gt;&lt;/ul&gt;The irony is that grilling season just started and I no longer have any desire to grill my burgers. Doh!&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2147828284551112931?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2147828284551112931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2147828284551112931' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2147828284551112931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2147828284551112931'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/05/smashingly-good-burgers.html' title='Smashingly Good Burgers'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1520765303060142740</id><published>2009-02-21T09:35:00.001-05:00</published><updated>2009-02-21T09:40:02.710-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Weight Loss And The iPhone</title><content type='html'>I had a few extra pounds after the holidays. OK, a few more than a few. But not as many as some &lt;a href="http://twentyonetimestwo.blogspot.com/search/label/weight%20loss"&gt;previous times&lt;/a&gt;. I'll leave my efforts to get off the diet roller coaster for another post (&lt;a href="http://www.amazon.com/Can-Make-You-Thin-Revolutionary/dp/1402765711/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1235225770&amp;amp;sr=8-1"&gt;current thinking&lt;/a&gt;), but suffice it to say that I have once again managed to shed some poundage.&lt;br /&gt;&lt;br /&gt;In late December I realized that I was going to have to buy a new wardrobe if I didn't do something. Sure, I used to have clothes one size up (and two sizes up and three sizes up...), but I got optimistic and threw them out after the last time I lost weight.&lt;br /&gt;&lt;br /&gt;So my plan was to do the &lt;a href="http://twentyonetimestwo.blogspot.com/2007/07/diet-update-success-so-far.html"&gt;diet journal &lt;/a&gt;thing &lt;a href="http://twentyonetimestwo.blogspot.com/2007/06/on-weight-loss.html"&gt;again&lt;/a&gt;. Set a goal, calculate a calorie budget, write everything down in a Moleskine Cahier and generally keep myself on track.&lt;br /&gt;&lt;br /&gt;Then it occurred to me that I have a shiny new iPhone. Like a Moleskine Cahier and Space Pen, it can always be with me. Unlike a Moleskine it has the potential to do portion size calculations and easy numerical tracking. Plus since I am a gadget freak using the iPhone adds considerably to my motivation.&lt;br /&gt;&lt;br /&gt;So I downloaded most of the apps in the App Store that I thought might do what I want. What I want is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ability to track calories by meal&lt;/li&gt;&lt;li&gt;A database of foods to replace my trusty Calorie King book&lt;/li&gt;&lt;li&gt;Ability to track weight over time&lt;/li&gt;&lt;li&gt;Ability to add my own foods to the database&lt;/li&gt;&lt;li&gt;Ability to track just calories (so I don't always HAVE to add something to the database)&lt;/li&gt;&lt;/ul&gt;I eventually settled on &lt;a href="http://www.ishape.se/"&gt;iShape&lt;/a&gt;. It does all of these things except that the database isn't complete by any means and doesn't replace Calorie King. It has some other nice features too. You set a goal weight and activity level and it calculates a target calorie limit for you and estimates when you will meet your goal. You can customize many elements (like set your own daily calorie target) and you can add in the effects of exercise and track your waist measurement and BMI. Plus tons of features that I never used (track water, fat, protein, exercise, etc).&lt;br /&gt;&lt;br /&gt;I also added WeightBot for some additional weight tracking because I really like the user interface. And the sounds. Slick. But it lacks the one graph view I really want (start to finish), so it ended up not being quite what I wanted. iShape does it all.&lt;br /&gt;&lt;br /&gt;Anyway the iPhone is a pretty good system for the diet journal approach. I always had it with me. I always had the ability to google for things that weren't in the database. I could snap a photo of a meal if I didn't feel like estimating it right that moment. It is slower than a notebook to add new foods, but much faster to deal with your favorites. The calorie tracking graph in iShape kept me honest and allowed me to try to make up for some bad days with some good days. The weight tracking (in both apps) kept me motivated as I saw the changes.&lt;br /&gt;&lt;br /&gt;If you are a nerd and you have an iPhone and you are overweight (are those three things completely redundant?), give it a try. I guarantee calorie tracking works if you commit to it.&lt;br /&gt;&lt;br /&gt;I hit my goal this morning. I have officially been under the "overweight" line for a few days, but it feels really nice to actually hit the target.&lt;br /&gt;&lt;br /&gt;I hit my goal just in time to absorb the extra calories from my fresh homemade doughnut breakfast this morning. Did I mention that I got a &lt;a href="http://www.amazon.com/Emerilware-FR7009001-7-Liter-Fryer-T-Fal/dp/B000J6DXHW/ref=sr_1_1?ie=UTF8&amp;amp;s=home-garden&amp;amp;qid=1235226122&amp;amp;sr=8-1"&gt;deep fryer&lt;/a&gt;? All things in moderation.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z2EF6PGeXYw/SaAOi6wXTfI/AAAAAAAAF30/8ixRCAslGZU/s1600-h/image4.jpg"&gt;&lt;img style="cursor: pointer; width: 267px; height: 400px;" src="http://1.bp.blogspot.com/_Z2EF6PGeXYw/SaAOi6wXTfI/AAAAAAAAF30/8ixRCAslGZU/s400/image4.jpg" alt="" id="BLOGGER_PHOTO_ID_5305256354092895730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(for anyone reading this who has never met me,  those numbers are correct - I'm 6' 7")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1520765303060142740?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1520765303060142740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1520765303060142740' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1520765303060142740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1520765303060142740'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/02/weight-loss-and-iphone.html' title='Weight Loss And The iPhone'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z2EF6PGeXYw/SaAOi6wXTfI/AAAAAAAAF30/8ixRCAslGZU/s72-c/image4.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3681382596258474282</id><published>2009-01-30T09:33:00.003-05:00</published><updated>2009-01-30T09:37:16.218-05:00</updated><title type='text'>A Sign of the Times</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SYMPzVQz43I/AAAAAAAAFCE/bdSpUEFTriE/s1600-h/photo.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SYMPzVQz43I/AAAAAAAAFCE/bdSpUEFTriE/s400/photo.jpg" alt="" id="BLOGGER_PHOTO_ID_5297094961273234290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Grand Opening Sale/Store Closing&lt;br /&gt;&lt;br /&gt;This store is a couple doors down from the Apple store in the &lt;a href="http://www.natickcollection.com/"&gt;Natick Collection&lt;/a&gt; mall.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3681382596258474282?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3681382596258474282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3681382596258474282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3681382596258474282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3681382596258474282'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/01/sign-of-times.html' title='A Sign of the Times'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z2EF6PGeXYw/SYMPzVQz43I/AAAAAAAAFCE/bdSpUEFTriE/s72-c/photo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7913445683775123147</id><published>2009-01-24T06:59:00.003-05:00</published><updated>2009-01-30T09:37:43.713-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Programmer's View of Self Checkout</title><content type='html'>&lt;a href="http://www.codinghorror.com/blog/"&gt;Jeff Atwood&lt;/a&gt; has a &lt;a href="http://www.codinghorror.com/blog/archives/001215.html"&gt;blog post&lt;/a&gt; up comparing the open source software model with self-service check out lines at the supermarket.&lt;br /&gt;&lt;br /&gt;But as a developer, that is &lt;span style="font-weight: bold; font-style: italic;"&gt;not&lt;/span&gt; what I think about when I use the self-service lines (which I almost always do).&lt;br /&gt;&lt;br /&gt;I think about how farking &lt;span style="font-weight: bold; font-style: italic;"&gt;awful&lt;/span&gt; the software is.&lt;br /&gt;&lt;br /&gt;I shop at one of several local Super Stop and Shop stores that have mobile scanners. You scan your Stop and Shop card at the entrance on a rack of mobile scanners. This presumably identifies you as a trusted (or at least registered) customer. A mobile bar code scanner lights up, you pull it off the rack, and away you go to do your shopping.&lt;br /&gt;&lt;br /&gt;This is great (even with the software complaints) because I can bag my groceries into sturdy reusable bags as I go and push my whole cart through at checkout. In effect this lets me parallelize bagging/checkout with my shopping, which saves me huge chunks of time. When you are usually shopping with a tired 3-year old, you seriously want to spend the minimum time possible in the store. This process is made even more attractive by the fact that they have let go almost all of their dedicated baggers, so normal checkout is now considerably slower than it used to be.&lt;br /&gt;&lt;br /&gt;Every once in a while you get "audited" by a clerk who enters a special code and scans several items to make sure that you didn't slip anything in to your bags. Even this doesn't take too long if the clerk wasn't halfway across the store when they get the page to audit you.&lt;br /&gt;&lt;br /&gt;I have three major problems with the software:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The scales are slow&lt;/li&gt;&lt;li&gt;The checkout is slow&lt;/li&gt;&lt;li&gt;There is huge disparity between stores&lt;/li&gt;&lt;/ol&gt;First the scales. The way the store deals with the problem of having to weigh produce is you weigh it at a special scale, then print a bar code, attach it to your bag of broccoli, scan the bar code, then drop it in your bag. Elegant and simple.&lt;br /&gt;&lt;br /&gt;OK, but how do you look up "broccoli"? Well, there is a search screen and you can start typing "b-r-o" and as you type a set of icons will appear that match your input. This is a nice UI design. But you have to wait 4-5 seconds between each letter typed. It does not cache your typing so it won't catch up, and there is no feedback that your typing is pointless.&lt;br /&gt;&lt;br /&gt;Think about this problem space for a moment. There are at most a few hundred items in the produce section. Even on most embedded systems you should be able to fit the whole searchable database in RAM. Even if you store it in a horribly inefficient way. How on earth can this be so slow? I am reasonably confident that I could write a vastly superior search implementation on my 2002 era java enabled phone. My blackberry and iPhone could both do this without breaking a sweat.&lt;br /&gt;&lt;br /&gt;Fortunately there is a shortcut. If you know the PLU code you can enter that. I occasionally skip purchases if I can't easily find the PLU code, though. It's just not worth the pain.&lt;br /&gt;&lt;br /&gt;OK, on to the checkout. When you are done shopping you go to one of several special lines and scan a special barcode that signals that you are done shopping. This triggers the unit to start downloading data (or notifies the central system if the downloading happens as you shop - whatever). You place the scanner in a holder by the checkout stand and scan your Stop and Shop card at the register.&lt;br /&gt;&lt;br /&gt;The register then starts ringing up your order. &lt;span style="font-style: italic;"&gt;One. Item. At. A. Time.&lt;/span&gt; At about a second or a second and a half per item. What? They have all this data for what you purchased at their finger tips and it has to go this slow? Think about this problem space for a moment. Is this a different problem from recalculating a spreadsheet? No, it isn't. How would you feel if your spreadsheet took 1-1.5 seconds per line to recalculate? You would throw your computer through the window - that's how you would feel.&lt;br /&gt;&lt;br /&gt;OK, now my last problem - disparity between stores. A little over a year ago I went to a different local Stop and Shop and used the same system. It isn't as close to me, but it is near a favorite liquor store and a Starbucks so I find myself in the neighborhood from time to time needing to do some shopping.&lt;br /&gt;&lt;br /&gt;Well, imagine my surprise and delight when I got to the register and my entire shopping cart rang up instantly. Not. One. Item. At. A. Time. &lt;span style="font-weight: bold;"&gt;Sweet&lt;/span&gt;! They fixed the bug.&lt;br /&gt;&lt;br /&gt;It has been over a year and my store still hasn't updated their system. What? Who does Stop and Shop hire to do IT project management? What are they thinking? If you have a known bug that is likely to drive people nuts and you have fixed it, for goodness sake put it out there for your users. You look like a total idiot if you don't.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7913445683775123147?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7913445683775123147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7913445683775123147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7913445683775123147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7913445683775123147'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/01/programmers-view-of-self-checkout.html' title='Programmer&apos;s View of Self Checkout'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7000835962016176157</id><published>2009-01-14T10:19:00.003-05:00</published><updated>2009-01-14T10:27:42.085-05:00</updated><title type='text'>Cinnamon Scones</title><content type='html'>I experimented with a cinnamon variant of my &lt;a href="http://twentyonetimestwo.blogspot.com/2007/10/scone-recipe.html"&gt;basic scone recipe&lt;/a&gt; for a group meeting today and it seemed to go over fairly well. I was again asked for the recipe.&lt;br /&gt;&lt;br /&gt;I used just the basic recipe, but substituted &lt;a href="http://www.kingarthurflour.com/shop/detail.jsp?select=C78&amp;amp;byCategory=C124&amp;amp;id=1327"&gt;these cinnamon chips&lt;/a&gt; (Cinnamon Flav-R-Bites from the Baker's Store) for the dried fruit and sprinkled cinnamon/sugar on the top instead of raw sugar.&lt;br /&gt;&lt;br /&gt;They were pretty tasty. If you are a fan of cinnamon scones, I highly recommend this approach. Do not attempt with the basic store bought cinnamon chips that are the consistency of chocolate chips - you won't be happy.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7000835962016176157?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7000835962016176157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7000835962016176157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7000835962016176157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7000835962016176157'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/01/cinnamon-scones.html' title='Cinnamon Scones'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2406653537143612707</id><published>2009-01-01T10:41:00.000-05:00</published><updated>2009-01-02T18:20:13.431-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>My New iPhone</title><content type='html'>Everything interesting about the iPhone has probably already been written, but I got a new iPhone for Christmas and I am going to make a few comments anyway.&lt;br/&gt;&lt;br/&gt;I am totally hooked on my iPhone and I wish I had gotten one sooner. I didn't because I couldn't convince myself that I wanted an iPod on my phone or a phone on my iPod.&lt;br/&gt;&lt;br/&gt;I had it all wrong. The iPhone is the best mobile computing platform ever and it just happens to have a phone and an iPod. They are almost incidental.&lt;br/&gt;&lt;br/&gt;I owned my iPhone for two days before I even plugged in the earphones. It is a great iPod, but doesn't hold a candle to my 120g classic for capacity and variety. I don't really like the idea of sucking my phone's battery with music, either.&lt;br/&gt;&lt;br/&gt;But I am doing most of my personal email, most of my RSS reading, and most of my web searching/surfing and social networking on the iPhone.&lt;br/&gt;&lt;br/&gt;The keyboard took a little getting used to, but I type almost as fast on the iPhone as I do on my blackberry now. I typed this entry with it. (iBlogger)&lt;br/&gt;&lt;br/&gt;It is also a great gaming platform. Fieldrunners isn't just a "great game for the iPhone." It is a great game. Period.&lt;br/&gt;&lt;br/&gt;It isn't a replacement for a sketchbook, but one can do simple doodles and contour drawings on it. (No. 2)&lt;br/&gt;&lt;br/&gt;It is a brilliant calculator. Sci-15c and i41CX+ are both excellent apps. The fact that I feel the need for both probably says a lot about me - but I'd rather not examine that too closely. :-) &lt;br/&gt;&lt;br/&gt;I have been spoiled for a while by having a blackberry with GPS and Google Maps and I am no longer willing to live without that functionality. The iPhone is better.&lt;br/&gt;&lt;br/&gt;It is a great Twitter client - I am using Tweetie for almost everything Twitter.&lt;br/&gt;&lt;br/&gt;It is a brilliant wifi locator (WiFinder).&lt;br/&gt;&lt;br/&gt;Plus there are lots of totally new things you can do. Mobile Pandora is cool. As are SnapTell and midomi.&lt;br/&gt;&lt;br/&gt;And in a pinch it is even a kitchen timer, diet aid, eBook reader, white noise generator, binaural beat machine, clock, flashlight, level, or a ruler.&lt;br/&gt;&lt;br/&gt;I use my computers less now.&lt;br/&gt;&lt;br/&gt;David&lt;br/&gt;&lt;div class="iblogger-footer"&gt;&lt;br clear="all"/&gt;&lt;p style="text-align:right;font-size:10px;"&gt;[Posted with &lt;a href="http://illuminex.com/iBlogger/index.html"&gt;iBlogger&lt;/a&gt; from my iPhone]&lt;/p&gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2406653537143612707?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2406653537143612707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2406653537143612707' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2406653537143612707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2406653537143612707'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2009/01/my-new-iphone.html' title='My New iPhone'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7262616936664471200</id><published>2008-12-06T08:37:00.003-05:00</published><updated>2009-12-28T16:27:28.808-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Best Soup Ever</title><content type='html'>I don't really know why I have never made Split Pea Soup With Ham before. I guess I thought it would be hard or something. But I had a big ham bone and a bunch of spiral sliced ham that needed to get used and I wasn't up to doing a ham stock to be used for something else (like Jambalaya).&lt;br /&gt;&lt;br /&gt;So when I was at the store I picked up two pounds of green split peas, some onions, celery heart, and carrots to go with my ham bone + an approximately equal volume of ham meat.&lt;br /&gt;&lt;br /&gt;I chopped up a big pile of onions (3 medium large), thinly sliced 5 or 6 outer stalks from the celery heart + 3 medium large carrots, and cut the the ham meat small bites.&lt;br /&gt;&lt;br /&gt;I sautéed the onions a bit and dumped them in the soup pot. Then I did the same for the ham. Threw in everything else (including the split peas), topped with water, brought to a boil, stirred a couple times, and tossed on the cover for a slow simmer. I checked it and stirred it a few times to make sure it didn't dry out. A couple of hours later when the peas had basically vanished it was done and I fished out the bone.&lt;br /&gt;&lt;br /&gt;There are no missing ingredients here. I didn't add any salt, or pepper, or a bay leaf or anything. Just the three aromatic veggies, the ham, and the peas.&lt;br /&gt;&lt;br /&gt;It is the best soup I have ever tasted. Far and away the best split pea soup I have ever had. My wife, who claims to hate split pea soup, ate a huge bowl of it for dinner. It is so good that I may never buy a boneless ham again.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7262616936664471200?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7262616936664471200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7262616936664471200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7262616936664471200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7262616936664471200'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/12/best-soup-ever.html' title='Best Soup Ever'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6351348997545694743</id><published>2008-11-19T06:30:00.003-05:00</published><updated>2008-11-19T07:39:12.799-05:00</updated><title type='text'>Conversations with Genius on my iPod</title><content type='html'>I finally upgraded my iPod. I've been needing more space for ages, but when the Classic came out it had user interface issues (stutters) and the price point for the 160GB version was a tad high. I played with one of the new 120GBs, though, and they fixed both the stutter and the price point, so I bought. This iPod has built-in &lt;a href="http://twentyonetimestwo.blogspot.com/2008/09/thoughts-on-genius.html"&gt;Genius&lt;/a&gt; playlist building. I thought that would be fun to play with. It went like this...&lt;br /&gt;&lt;br /&gt;Me: "OK, let's see what you've got. I figure if I start with 'Escape (The Pina Colada Song)' you should hit Jimmy Buffet within 3 songs. Go"&lt;br /&gt;&lt;br /&gt;iPod: "Steve Miller Band - The Joker"&lt;br /&gt;&lt;br /&gt;Me: "That works."&lt;br /&gt;&lt;br /&gt;iPod: "Gary Wright - Dream Weaver"&lt;br /&gt;&lt;br /&gt;Me: "Umm, OK."&lt;br /&gt;&lt;br /&gt;iPod: "Jimmy Buffett - Margaritaville"&lt;br /&gt;&lt;br /&gt;Me: "There it is. Well done."&lt;br /&gt;&lt;br /&gt;iPod: "Joan Jett &amp;amp; The Blackhearts - I Love Rock and Roll"&lt;br /&gt;&lt;br /&gt;Me: "What? That's not even close. Are you insane?"&lt;br /&gt;&lt;br /&gt;iPod: "Me insane? You're the one having a conversation with an iPod."&lt;br /&gt;&lt;br /&gt;Me: "Bite me.  New genre. Coal Chamber - Fiend. Go."&lt;br /&gt;&lt;br /&gt;iPod: "Korn - Wake Up Hate, then Kittie - In Winter, then Dope's cover of You Spin Me 'Round."&lt;br /&gt;&lt;br /&gt;Me: "Whoa. That last one I never would have thought of, but it totally works. Well done."&lt;br /&gt;&lt;br /&gt;iPod: "Well, I am a Genius."&lt;br /&gt;&lt;br /&gt;Me: "OK Genius, try this. Jocelyn Pook - Masked Ball."&lt;br /&gt;&lt;br /&gt;iPod: "WTF is that?"&lt;br /&gt;&lt;br /&gt;Me: "It's that really cool dark brooding music from the masked ball in Eyes Wide Shut."&lt;br /&gt;&lt;br /&gt;iPod: "Like that helps. You do know that I don't watch movies, right? Anyway, not only does it not sound like anything else in your collection, I don't think it sounds like anything else period. So here, have a list of completely random songs."&lt;br /&gt;&lt;br /&gt;Me: "Sigh. OK, another new genre. The Crystal Method - Murder. Go."&lt;br /&gt;&lt;br /&gt;iPod: "Leftfield - Song of Life, then Propellerheads - Bang On!, the Goldfrapp - Hairy Trees."&lt;br /&gt;&lt;br /&gt;Me: "Nicely done."&lt;br /&gt;&lt;br /&gt;iPod: "Thanks."&lt;br /&gt;&lt;br /&gt;Me: "Another new genre. In-Grid - Pour Toujours. Go"&lt;br /&gt;&lt;br /&gt;iPod: "French electronic? Seriously?"&lt;br /&gt;&lt;br /&gt;Me: "Why are you being judgemental?"&lt;br /&gt;&lt;br /&gt;iPod: "I'm not. You do know that you are having this conversation with yourself, right? Anyway, how about Bond - Hungarian, then Bond - Samba, then Aurora - Real Life."&lt;br /&gt;&lt;br /&gt;Me: "OK, that works, I guess. But do you have something against French music or something? Edith Piaf - L' Homme A La Moto. Go."&lt;br /&gt;&lt;br /&gt;iPod: "Genius is unavailable for the selected song."&lt;br /&gt;&lt;br /&gt;Me: "Ha! Got you. At least that's better than random songs. OK, let's try something different. Alien Ant Farm's cover of Smooth Criminal. Go."&lt;br /&gt;&lt;br /&gt;iPod: "OK, how about System of a Down - Chop Suey!, then Disturbed - Land of Confusion, then Dead or Alive - You Spin Me 'Round."&lt;br /&gt;&lt;br /&gt;Me: "Another cover of You Spin Me 'Round? It works I guess, but why?"&lt;br /&gt;&lt;br /&gt;iPod: "Why? It's your music, Bub."&lt;br /&gt;&lt;br /&gt;Me: "Sigh. Chris Thile - Stealing Second."&lt;br /&gt;&lt;br /&gt;iPod: "Sheryl Crow - Steve McQueen"&lt;br /&gt;&lt;br /&gt;Me: "Huh? I give you instrumental bluegrass and you give me Sheryl Crow?"&lt;br /&gt;&lt;br /&gt;iPod: "R.E.M. - Rockville"&lt;br /&gt;&lt;br /&gt;Me: "Still not even close."&lt;br /&gt;&lt;br /&gt;iPod: "Neil Young - Sugar Mountain? The Grateful Dead - Franklin's Tower? Kings of Convenience - I'd Rather Dance With You? You know - it's not my fault if you don't have any similar music."&lt;br /&gt;&lt;br /&gt;Me: "I have a dozen instrumental bluegrass albums and a couple dozen instrumental celtic albums that would be way closer than anything you've shown me."&lt;br /&gt;&lt;br /&gt;iPod: "Yeah, whatever."&lt;br /&gt;&lt;br /&gt;Me: "OK, one more. Yo-Yo Ma - Elgar Cello Concerto."&lt;br /&gt;&lt;br /&gt;iPod: "Yo-Yo Ma - Gershwin Prelude #1, then Jian Wang - Suite No 2 in D Minor, then Hayley Westenra - Wuthering Heights."&lt;br /&gt;&lt;br /&gt;Me: "The first two are great, the last one though? That's a cover of a Kate Bush song."&lt;br /&gt;&lt;br /&gt;iPod: "By a classical musician."&lt;br /&gt;&lt;br /&gt;Me: "That's the tie? That's stupid."&lt;br /&gt;&lt;br /&gt;iPod: "Whatever."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Note: The idea of turning this into a conversation with my iPod was totally stolen from &lt;a href="http://wilwheaton.typepad.com/wwdnbackup/"&gt;Wil Wheaton's&lt;/a&gt; &lt;a href="http://twitter.com/wilw"&gt;twittering&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/5064459391707841087-6351348997545694743?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6351348997545694743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6351348997545694743' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6351348997545694743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6351348997545694743'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/conversations-with-genius-on-my-ipod.html' title='Conversations with Genius on my iPod'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-5655037567819363593</id><published>2008-11-13T21:30:00.004-05:00</published><updated>2008-11-13T21:43:42.326-05:00</updated><title type='text'>Faith in Humanity, Restored</title><content type='html'>Will and I were munching on some tasty &lt;a href="http://www.kellysroastbeef.com/"&gt;Kelly's Roast Beef&lt;/a&gt; sandwiches tonight. We were almost done when a woman walks up and says, "Do you have a green Legacy parked outside?"&lt;br /&gt;&lt;br /&gt;Oops. That can't be good.&lt;br /&gt;&lt;br /&gt;"Yes, I do."&lt;br /&gt;&lt;br /&gt;"I am afraid that I backed into it. I don't see any damage, but  maybe you should come out and look for yourself. I was going to leave a note, but it is raining and I was afraid the note would dissolve."&lt;br /&gt;&lt;br /&gt;So we went out and looked. I think she scraped a little dust off my bumper. Seriously, no damage at all.&lt;br /&gt;&lt;br /&gt;"I don't see anything. Forget about it."&lt;br /&gt;&lt;br /&gt;"Are you sure? You could take my name and number in case you notice something later."&lt;br /&gt;&lt;br /&gt;I've never seen this woman before and we were eating in the back corner of the restaurant, so she must have walked through the whole place asking people if they had a green Legacy.&lt;br /&gt;&lt;br /&gt;Apparently someone actually totaled her car once in a parking lot and just took off, so she is particularly sensitive to parking lot incidents. But still, what a great thing to do.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-5655037567819363593?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/5655037567819363593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=5655037567819363593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5655037567819363593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5655037567819363593'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/faith-in-humanity-restored.html' title='Faith in Humanity, Restored'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1874970248659168459</id><published>2008-11-13T09:25:00.003-05:00</published><updated>2008-11-13T09:52:20.534-05:00</updated><title type='text'>Thoughts On Software Testing</title><content type='html'>I have read a bunch of blogs lately about software testing, unit testing, functional testing, etc, including &lt;a href="http://www.developerfusion.com/column/8314/creating-a-culture-of-quality-part-1/"&gt;this&lt;/a&gt; and &lt;a href="http://www.developerfusion.com/column/9184/can-developers-test-their-own-code/"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are circular arguments out there that go like this: "Developers can't possibly test their own software because they understand it too well." - "Yes, but developers have to test their own software because only they truly understand it (plus those tests make changes easier)."&lt;br /&gt;&lt;br /&gt;These are both true of course.&lt;br /&gt;&lt;br /&gt;In my view there are three kinds of testing and people confuse them all of the time.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Unit testing. This is testing written by the developer at the object or module level that proves that the code does &lt;span style="font-style: italic;"&gt;what the developer intended&lt;/span&gt; it to do. Ideally you should inject dependencies and make the tests fairly shallow.&lt;/li&gt;&lt;li&gt;Integration testing. This is testing that proves that the objects/modules/bits of the software work together as expected. It proves that &lt;span style="font-style: italic;"&gt;the internal contracts are being met&lt;/span&gt;. This can be written by the developer, but it doesn't have to be. They should probably be written by whoever decided on the contracts. Writing integration tests using JUnit doesn't make them unit tests. These tests can and should be deep. Call stuff at the highest level and prove that everything works all the way down to the lowest level.&lt;/li&gt;&lt;li&gt;Functional testing. This is testing that demonstrates that the software &lt;span style="font-style: italic;"&gt;works as it is supposed to&lt;/span&gt;. This should never be done by the developer because they do indeed know too much about the software. If the developer tries to do functional testing, they can only prove that the software works as they intended and that is &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; the point here at all.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;These are different things and you need all of them. Automate them if you can with a priority of 1, then 2, then 3.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1874970248659168459?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1874970248659168459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1874970248659168459' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1874970248659168459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1874970248659168459'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/thoughts-on-software-testing.html' title='Thoughts On Software Testing'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4173658067149539410</id><published>2008-11-13T07:01:00.005-05:00</published><updated>2008-11-13T07:10:04.554-05:00</updated><title type='text'>Test Post</title><content type='html'>At the moment I am getting an error when attempting to access any "blogspot.com" address (below), but I am able to log into "blogger.com" and get to the post creation page. Weird.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SRwYsPXQECI/AAAAAAAAAUM/W-RwVyOjqKg/s1600-h/BlogError.jpg"&gt;&lt;img style="cursor: pointer; width: 600px; height: 600px;" src="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SRwYsPXQECI/AAAAAAAAAUM/W-RwVyOjqKg/s400/BlogError.jpg" alt="" id="BLOGGER_PHOTO_ID_5268112812434001954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4173658067149539410?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4173658067149539410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4173658067149539410' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4173658067149539410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4173658067149539410'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/test-post.html' title='Test Post'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z2EF6PGeXYw/SRwYsPXQECI/AAAAAAAAAUM/W-RwVyOjqKg/s72-c/BlogError.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4943383238450671890</id><published>2008-11-11T21:25:00.002-05:00</published><updated>2008-11-11T21:26:46.564-05:00</updated><title type='text'>Disney Photos</title><content type='html'>Most of you won't care, but some of you will. &lt;a href="http://picasaweb.google.com/flopmeister/DisneyWorld2008?authkey=ZqcwBuCzP-o#"&gt;Here are photos from the Disney trip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4943383238450671890?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4943383238450671890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4943383238450671890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4943383238450671890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4943383238450671890'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/disney-photos.html' title='Disney Photos'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6733800630754524407</id><published>2008-11-10T07:27:00.003-05:00</published><updated>2008-11-10T08:45:33.060-05:00</updated><title type='text'>David's Unofficial Guide To Disney World (For Adults)</title><content type='html'>The last time I was in Disney World was the early to mid '70s. When I was last there, there was only one theme park, so I wasn't really prepared for how HUGE it has become.&lt;br /&gt;&lt;br /&gt;When you are in Vegas, you often hear people saying things like, "Vegas is just Disney for adults." I have always understood this to mean that Vegas is where adults go to play and Disney is where kids go to play. But the similarity is actually much more substantial. All of the changes to Vegas since, say, 1986, represent a real disney-fication of the place. When I was in Disney, I could not help but constantly think, "This is just like Vegas, only bigger."&lt;br /&gt;&lt;br /&gt;Anyway, back to Disney World. How huge is it? Disney World is easily bigger than all of Las Vegas put together. It is mind numbingly large. It is mile after mile of fabulously cool imitation reality or pseudo-reality.&lt;br /&gt;&lt;br /&gt;There are a few things that adult visitors might want to keep in mind when visiting, though. The biggest is simply the observation that it is an entirely closed system. If you stay at one of the resorts on the Disney property, you will never leave the reach of a single company. Like other closed systems (airports, isolated casinos, etc) you should expect to pay more than normal and have fewer choices. Disney World is big enough that you still have a bewildering array of choices, but not in everything.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Coffee at Disney World&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For example, the coffee in Disney World is absolutely wretched. The regular brewed coffee is pretty variable. At its best it only really makes it up to the level of "pretty fair diner coffee", but on the whole you can choke it down if you have to. The espresso is a complete disaster. They have tons of fully automated espresso machines in various locations, but they are not great machines, they contain inferior beans, and they are run by completely untrained "cast members". The "espresso" they put out is almost impossible to swallow. To add insult to injury, the pricing of espresso drinks is outrageous. To add two shots of espresso to a latte, for example, they will charge you the full cost of a double espresso. On the whole, the espresso drinks end up costing about twice as much as Starbucks, but they are about 1/10th as good (if that). This makes the espresso I consumed in the last few days the worst and most expensive coffee I have ever had, bar none. Oh, and did I mention that most places only have non-dairy creamer?&lt;br /&gt;&lt;br /&gt;Deb did tons of internet research on the coffee situation before we went, so we went prepared with a pound of &lt;a href="http://www.peets.com/default.asp?rdir=1&amp;amp;ftv=n"&gt;Peets&lt;/a&gt; coffee and my &lt;a href="http://www.aerobie.com/Products/aeropress.htm"&gt;AeroPress&lt;/a&gt;. At least the first cup of the day was decent that way. The coffee maker in our room took the small basket filters and our resort gift shop (Wilderness Lodge) actually sold the filters, so we could have gotten away with just bringing the coffee.&lt;br /&gt;&lt;br /&gt;I can confirm that there are two places with decent coffee. At the Kona Cafe in the Polynesian Resort, they will bring a french press of decent coffee to your table. This doesn't appear on the menu for some reason, so you have to ask for it. Also there is a coffee/desert bar in the Morocco section of Epcot that serves actual handmade espresso. It isn't the best in the world, but it is decent. If you get the Moorish coffee they add some cinnamon and nutmeg to the espresso making it both decent and novel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Beer at Disney World&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was not expecting to find decent beer (or even any beer) at Disney, but there are a few areas that are actually remarkably good for the beer drinker.&lt;br /&gt;&lt;br /&gt;I was surprised and pleased that the various countries in the country showcase offered "local" beer at outdoor stands and you can take a cup to go. This means that it is actually possible to do a round the world walking beer tour. The beers present don't always represent a nation's best, but some are pretty decent. Ironically, the best selection was actually at the American Adventure which was sponsored by the Boston Beer Company who (again ironically) put a better selection of their beer in place there than you can find in all but a few pubs in Boston itself. I had a tasty Black Lager. I also had Guiness, Beck's, and Spaten Optimator (by the liter at the Biergarten) and skipped many more. It is possible that the beer selection is not always as good as my experience, though, since the &lt;a href="http://www.slashfood.com/2008/09/30/epcot-international-food-and-wine-festival/"&gt;Food and Wine Festival&lt;/a&gt; was underway while we were there.&lt;br /&gt;&lt;br /&gt;There is a nice outdoor pub (Raglan Road) at Downtown Disney too. I had a fine pint of Guiness while munching on tasty fish and chips from the next door chip shop.&lt;br /&gt;&lt;br /&gt;I never made it to the brewpub on the Boardwalk, but I have to have something to go back for.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6733800630754524407?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6733800630754524407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6733800630754524407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6733800630754524407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6733800630754524407'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/11/davids-unofficial-guide-to-disney-world.html' title='David&apos;s Unofficial Guide To Disney World (For Adults)'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1430262403184491670</id><published>2008-10-07T05:42:00.002-04:00</published><updated>2008-10-07T06:33:02.220-04:00</updated><title type='text'>Mark To Market</title><content type='html'>Let me start by saying that I am no accountant or financial expert so there is no reason whatsoever to think that anything I say here makes any sense. On the other hand it makes complete sense to me and I can't see how any reasonable thinking person could disagree with what I say. If you know better, please, &lt;span style="font-style: italic;"&gt;pretty please&lt;/span&gt; take the time to educate me.&lt;br /&gt;&lt;br /&gt;I have seen a &lt;a href="http://can-turtles-fly.blogspot.com/2008/10/michael-page-on-why-marking-to-market.html"&gt;whole&lt;/a&gt; &lt;a href="http://news.google.com/news/url?sa=t&amp;amp;ct=:ePkh8BM9EwLbwQq0w4CFOFuMBFgtHnhtsBX5WvwoWWH1itk3AE2vDxc/5-0&amp;amp;fp=48ebf7e734dde6fa&amp;amp;ei=4jDrSIfdEJ-EyQTg78T-CA&amp;amp;url=http%3A//www.ft.com/cms/s/82a390b2-8f50-11dd-946c-0000779fd18c.html&amp;amp;cid=1253571525&amp;amp;usg=AFQjCNGU__7KTfskHZTrGayhZbt1SYAxuA"&gt;bunch&lt;/a&gt; of &lt;a href="http://news.google.com/news/url?sa=t&amp;amp;ct=:ePkh8BM9EwLbwQq0w4CFOFuMBFgtHnhtsBX5WvwoWWH1itk3AE2vDxc/1-0&amp;amp;fp=48ebf7e734dde6fa&amp;amp;ei=4jDrSIfdEJ-EyQTg78T-CA&amp;amp;url=http%3A//www.usatoday.com/money/companies/regulation/2008-10-03-bailout-sec-mark-to-market-rules_N.htm&amp;amp;cid=1252704008&amp;amp;usg=AFQjCNEsRQN6XlDR0-pw5mMzcMu1LPcSKw"&gt;articles&lt;/a&gt; and &lt;a href="http://meganmcardle.theatlantic.com/archives/2008/10/issue_of_the_day_mark_to_marke.php"&gt;blogs&lt;/a&gt; lately that claim that Mark to Market (M2M) accounting is to blame, or partly to blame, for the bubble that caused our current financial crisis. Some of these call for a suspension of M2M, others call for a ban of M2M, and still others think that M2M is critical and should be left alone.&lt;br /&gt;&lt;br /&gt;OK, so what the heck is M2M? Also sometimes called fair market accounting, it is the practice of putting assets on the books at their market value. So if I own 100 shares of company X and those shares are trading at $100, then I would put the value on the books as $10,000. This makes total sense to me. In fact the only thing that doesn't make sense to me is the fact that this is relatively new. M2M accounting rules were only put in place in response to the Enron fiasco. It is crystal clear to me that if I am an investor, I want to see the best possible approximation of the value of the company I am investing in and M2M accounting is the best way to show that real value.&lt;br /&gt;&lt;br /&gt;Or at least it is when the assets are liquid. But what happens when you think the market value of an asset is $10,000, but there is no way in Hell that you could sell it to anyone at the moment? Well, that's a problem. It clearly isn't really worth $10,000 in that case. You could only estimate the value by estimating when you could sell for $10,000 and subtracting the associated opportunity costs.&lt;br /&gt;&lt;br /&gt;Or what happens if &lt;a href="http://www.sandmansplace.com/Mr_Market.html"&gt;Mr. Market&lt;/a&gt; is temporarily insane and wants to pay $10,000 for something that is only really (intrinsically) worth $1000? This is the heart of the argument that M2M caused the bubble. Irrational exuberance caused book values to be hugely inflated, leading to big loans that couldn't possibly be paid back and so forth.&lt;br /&gt;&lt;br /&gt;OK, so you need to have M2M accounting in order to tell investors what the real value is, but if you have M2M accounting it can lead to different problems in illiquid or irrational markets. What can be done?&lt;br /&gt;&lt;br /&gt;In my opinion, we should just require &lt;span style="font-style: italic;"&gt;full&lt;/span&gt; disclosure. We should stop letting corporations hide things in spreadsheets that assume that there is a single rational value for all assets. There is not and never will be a single accounting method that is even a vague representation of the truth.&lt;br /&gt;&lt;br /&gt;I would like to see assets reported as M2M &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; cost (price paid) &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; an estimate of intrinsic value (when possible, perhaps a liquidation value or an arbitrage value), &lt;span style="font-style: italic;"&gt;along with&lt;/span&gt; estimates of liquidity. If I am a shareholder, then I am an owner of your company and I&lt;span style="font-style: italic;"&gt; insist&lt;/span&gt; on knowing how you run &lt;span style="font-style: italic;"&gt;my&lt;/span&gt; business.&lt;br /&gt;&lt;br /&gt;Would this prevent bubbles? Of course not. People are intrinsically irrational. But at least you could look at what they did and laugh at them for being stupid.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1430262403184491670?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1430262403184491670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1430262403184491670' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1430262403184491670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1430262403184491670'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/10/mark-to-market.html' title='Mark To Market'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2635018198380733542</id><published>2008-09-18T16:29:00.004-04:00</published><updated>2008-09-18T16:36:16.777-04:00</updated><title type='text'>Pretty Sourdough</title><content type='html'>I am totally jealous that &lt;a href="http://macdhonnchaidh.blogspot.com/2008/09/brotforms.html"&gt;John got brotforms&lt;/a&gt;, but you can make pretty loaves freehand too. :-P&lt;br /&gt;&lt;br /&gt;My standard white sourdough.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SNK6e1_TYGI/AAAAAAAAAFo/RqmeY-9R8iU/s1600-h/pretty_sourdough.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SNK6e1_TYGI/AAAAAAAAAFo/RqmeY-9R8iU/s320/pretty_sourdough.jpg" alt="" id="BLOGGER_PHOTO_ID_5247461554891481186" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2635018198380733542?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2635018198380733542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2635018198380733542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2635018198380733542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2635018198380733542'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/09/pretty-sourdough.html' title='Pretty Sourdough'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z2EF6PGeXYw/SNK6e1_TYGI/AAAAAAAAAFo/RqmeY-9R8iU/s72-c/pretty_sourdough.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-8740093242129395840</id><published>2008-09-13T10:25:00.003-04:00</published><updated>2008-09-13T15:57:22.911-04:00</updated><title type='text'>Thoughts on Genius</title><content type='html'>I just installed iTunes 8 with the new Genius music recommendation/playlist feature. I have played around with similar functionality for years in the form of &lt;a href="http://www.pandora.com/"&gt;Pandora&lt;/a&gt; and &lt;a href="http://musicbrainz.org/"&gt;MusicBrainz&lt;/a&gt;. These tools are how I find new music anymore (combined with iTunes own recommendation system and Amazon's recommendations). I have not listened to the radio in a few years at least.&lt;br /&gt;&lt;br /&gt;Genius is pretty cool when it works. It instantly generates a very mood appropriate playlist from a selected song, which is nice. The Genius side bar shows a whole bunch of recommendations too - this function blows away the old school iTunes recommendation system since it allows you to look for specific &lt;span style="font-style: italic;"&gt;kinds&lt;/span&gt; of music.&lt;br /&gt;&lt;br /&gt;But it completely fails on obscure tracks and obscure genres. Even on obscure tracks and genres purchased from the iTunes store. It is useless for classical music, usless for traditional irish music, usless for some classically influenced electronica (where useless is defined as not recognizing a large enough fraction of similar songs to build interesting playlists, not as the complete inability to recognize anything at all). It doesn't work for music videos at all, unfortunately, either (come on Apple - that should be easy to solve for videos purchased in the iTunes store).&lt;br /&gt;&lt;br /&gt;Still it works for some surprisingly obscure stuff and it is &lt;span style="font-style: italic;"&gt;wicked fast&lt;/span&gt;. I'll definitely be using it.&lt;br /&gt;&lt;br /&gt;But if you find yourself getting the message, "Genius is unavailable for the song..." frequently, do yourself a favor and install MusicBrainz.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;P.S. I have also discovered that it works differently for music purchased from iTunes vs. other music. Even if the tracks are identical otherwise (different formats, but the same sound signature).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-8740093242129395840?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/8740093242129395840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=8740093242129395840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8740093242129395840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8740093242129395840'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/09/thoughts-on-genius.html' title='Thoughts on Genius'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7559032598559901073</id><published>2008-09-11T14:32:00.003-04:00</published><updated>2008-09-11T14:42:40.491-04:00</updated><title type='text'>Programming's  Dirtiest Secret</title><content type='html'>&lt;a href="http://steve-yegge.blogspot.com/"&gt;Stevey&lt;/a&gt; has up a &lt;a href="http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html"&gt;brilliant rant&lt;/a&gt; about developers and touch typing. But touch typing ability (or lack thereof)  isn't &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; the dirtiest secret about programming. Even though I can touch type, I am going to use a lot fewer words than Stevey did. Ready?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;People are, on average, pretty darn average. Developers are no exception.&lt;br /&gt;&lt;br /&gt;In most endeavors average is pretty bad. Software development is no exception.&lt;br /&gt;&lt;br /&gt;Telling the difference between an average developer and a great one in an interview is really &lt;span style="font-style: italic;"&gt;hard&lt;/span&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7559032598559901073?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7559032598559901073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7559032598559901073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7559032598559901073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7559032598559901073'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/09/programmings-dirtiest-secret.html' title='Programming&apos;s  Dirtiest Secret'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6014083412597059470</id><published>2008-09-11T14:00:00.002-04:00</published><updated>2008-09-11T14:26:48.082-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Developer Best Practices</title><content type='html'>I have been thinking about best practices at work and I am going to throw some ideas out here to help me think them through and to get feedback if any of you have opinions. This isn't complete or well organized - I am just trying to get the juices flowing.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Do not rely on this or any other document to provide a complete list of best practices. There are too many and some seem too obvious to talk about. You are a professional software developer - learn the craft. Don't stop learning. Aim for &lt;a href="http://blogs.construx.com/blogs/stevemcc/archive/2008/03/27/productivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx"&gt;10X&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is no absolute "best" way to do anything. Think about what you are trying to accomplish. Be pragmatic.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Design applications &lt;a href="http://twentyonetimestwo.blogspot.com/2008/09/what-does-good-software-look-like.html"&gt;in layers&lt;/a&gt;. Create distinct modules or blocks of function. Design the module interfaces first. Design by contract.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Write unit tests.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;     At a minimum write unit tests of the module interfaces.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;     Ideally write the tests before the code.&lt;/li&gt;&lt;li&gt;     If you are about to debug something, stop and write a unit test for it first.&lt;/li&gt;&lt;li&gt;     Don't create mindless unit tests. The auto-generated ones your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;IDE&lt;/span&gt; makes for you are only stubs - don't rely on them for coverage.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Dependency_injection"&gt;Inject your dependencies&lt;/a&gt; as a matter of course. This will greatly simplify unit testing. You don't actually need a framework for this - understand the underlying principle instead.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Keep stuff in source control (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SVN&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CVS&lt;/span&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do frequent check-ins.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;     Comment your commits.&lt;/li&gt;&lt;li&gt;Don't rely on your &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;IDE&lt;/span&gt; to do builds. Have a build script instead.&lt;/li&gt;&lt;li&gt;     Have an independent environment where the build script can be run that is not a developers personal space. Ideally do continuous integration here, but at a minimum regularly check that this build environment still works. Use this environment to build releases.&lt;/li&gt;&lt;li&gt;Settle on a layout style for the team. It doesn't matter which style, it matters more that everyone is consistent. Or just agree to do it differently and people can reformat their code using their IDEs. But make sure everyone is on the same page.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Optimize code only when you have demonstrated that it performs poorly. Make a regular practice of benchmarking modules. Run the benchmarks with your unit tests so you know when something gets really out of whack.&lt;/li&gt;&lt;li&gt;Employ regular peer review of some kind. Internal code reviews. Pair programming. Whatever works for your team. This is how bad code gets found and how developers learn to get better.&lt;/li&gt;&lt;li&gt;Also have occasional external code reviews that involve more than just the immediate team.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Encourage zero code ownership. Everyone owns all of the code. Anyone can change/fix anything. Any bug is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;everyone's&lt;/span&gt; responsibility.&lt;/li&gt;&lt;li&gt;Use tools regularly to check for common bugs/problems. If I review your Java code I am going to run &lt;a href="http://findbugs.sourceforge.net/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;findbugs&lt;/span&gt;&lt;/a&gt; on it - so you should too.&lt;/li&gt;&lt;li&gt;Minimize local configuration information in multi-tier applications. An ideal java &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;midtier&lt;/span&gt; should only need to know one thing - a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;JNDI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;datasource&lt;/span&gt; from which all other configuration information can be derived. An ideal thick client should get global configuration from the server.&lt;/li&gt;&lt;li&gt;Always close resources. Take full advantage of try/finally blocks.&lt;/li&gt;&lt;li&gt;Don't reinvent the wheel. Use the core libraries of your platform. If you are writing in Java and you think you need to write a sort routine, or a string to date routine, or an array copy routine: STOP. Find good adjunct libraries and use them.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Have a well thought out strategy for handling exceptions and logging. All errors should be logged, preferably once. The log entry should give enough information to lead back to the root cause. It should be time stamped. It should contain a stack trace if applicable. It should have a context appropriate message that can be understood by someone not intimately familiar with the code.&lt;/li&gt;&lt;li&gt;Do your release cycles faster. I don't care how fast you are doing them now, go faster.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It is OK to make pragmatic short term compromises in your code, but make sure you go back and fix them very soon. Do not fall into the boiled frog trap.&lt;/li&gt;&lt;li&gt;Eat your own dog food. If you design a service interface and never actually use it, chances are it will actually be unusable in some way. The same for a user interface.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Recommended reading for best practices:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X"&gt;The Pragmatic Programmer&lt;/a&gt; - if you program at all in any language and you haven't read this book, go read it now.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1221073279&amp;amp;sr=1-1"&gt;Effective Java&lt;/a&gt; - if you program in Java, you need to read this.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670"&gt;Code Complete&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Any thoughts out there?&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6014083412597059470?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6014083412597059470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6014083412597059470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6014083412597059470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6014083412597059470'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/09/developer-best-practices.html' title='Developer Best Practices'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6230361405624281892</id><published>2008-09-04T09:15:00.003-04:00</published><updated>2008-09-04T09:26:09.133-04:00</updated><title type='text'>What Does Good Software Look Like?</title><content type='html'>Good software looks and feels like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z2EF6PGeXYw/SL_fg6TEWWI/AAAAAAAAAFI/gYfXzFxX4tA/s1600-h/GoodSoftware.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_Z2EF6PGeXYw/SL_fg6TEWWI/AAAAAAAAAFI/gYfXzFxX4tA/s320/GoodSoftware.png" alt="" id="BLOGGER_PHOTO_ID_5242154247780587874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(I drew this - feel free to make fun of my artistic abilities)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And bad software looks and feels a lot more like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.enm.bris.ac.uk/anm/summerschools/complexity/imagery/images/129_big01.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://www.enm.bris.ac.uk/anm/summerschools/complexity/imagery/images/129_big01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.enm.bris.ac.uk/anm/summerschools/complexity/imagery/129.html"&gt;(image credit)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Far too much of the code that I look at invokes the latter image. Stop it please.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6230361405624281892?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6230361405624281892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6230361405624281892' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6230361405624281892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6230361405624281892'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/09/what-does-good-software-look-like.html' title='What Does Good Software Look Like?'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z2EF6PGeXYw/SL_fg6TEWWI/AAAAAAAAAFI/gYfXzFxX4tA/s72-c/GoodSoftware.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6261543452599429227</id><published>2008-08-19T05:54:00.005-04:00</published><updated>2008-12-08T10:34:09.721-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>On JavaFX</title><content type='html'>&lt;a href="http://javafx.com/"&gt;JavaFX&lt;/a&gt; has the potential to be a really cool technology, but it has a little ways to go yet.&lt;br /&gt;&lt;br /&gt;At work we are trying to figure out what we want to do in the &lt;a href="http://en.wikipedia.org/wiki/Rich_Internet_application"&gt;Rich Internet Application&lt;/a&gt; space and I was asked to review JavaFX to ensure that it could perform one really critical niche function - that it can be used with existing libraries to display chemical structures. The simple answer is that it can. I had no trouble at all writing very thin plain Java wrapper classes around &lt;a href="http://www.mdli.com/products/framework/chimepro/index.jsp"&gt;ChimePro&lt;/a&gt;, &lt;a href="http://www.chemaxon.com/marvin/download-dev.html"&gt;Marvin Beans&lt;/a&gt;, and &lt;a href="http://jmol.sourceforge.net/"&gt;JMol&lt;/a&gt; so that I could use them in a JavaFX script.&lt;br /&gt;&lt;br /&gt;The more complicated answer, though, is that there are still lots of gotchas.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The API has been in a state of flux, so code examples that you can google up tend to be unusable (ignore anything dated 2007 or that has an import for javafx.ui.*).&lt;/li&gt;&lt;li&gt;The API is still fluxing, so you can expect lots of changes soon. One critical bit that relates to my Swing component test is that the base display (container) classes are changing. To get the cool "drag from the browser" behavior you need to  start with the Application class (or maybe Applet) and add Nodes to the Scene, but to use Swing components you have to use the older containers (that work fine for a JNLP application). And you can't easily subclass Node to fix this yourself because it is an abstract class that has an abstract method that returns an object in the com.sun.* hierarchy - something you probably shouldn't mess with.&lt;/li&gt;&lt;li&gt;There isn't a lot of good information out there. There is &lt;a href="http://www.apress.com/book/view/1590599454"&gt;one book&lt;/a&gt;. It is a decent book, but it tried to hit a moving target so it isn't perfect. Combine the book with the &lt;a href="http://learnjavafx.typepad.com/weblog/"&gt;author's blog&lt;/a&gt; and you have one good source of information. The &lt;a href="http://java.sun.com/javafx/reference/"&gt;API documentation and related Sun documents&lt;/a&gt; is the other good source of information, but it is still far less complete than, say, the Java documentation.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; integration is not complete. It is really well done, it just isn't quite finished. The visual constructor/previewer is brilliant, but there isn't support yet for fixing problems (e.g. fixing imports) - you just get a red (!) and you have to figure out why (and the compiler messages aren't really all that informative ("I got confused by...")).&lt;/li&gt;&lt;/ul&gt;The language itself, though, is kind of neat once you get past the declarative style. It makes it easier than plain Java2D to create spiffy new graphical content. But you can't do anything in JavaFX that you can't do in Java2D if you know what you are about.&lt;br /&gt;&lt;br /&gt;One of the central powers of JavaFX is that it can use any Java library, but that might also be its downfall, especially if it gets widely adopted by mediocre Java programmers. One of the reasons that Applets have gone the way of the Dodo bird is that people had a tendency to bloat the jar downloads to the point that the Applets were slow and finicky and painful to use. The same is certainly possible with JavaFX. Don't do this. Keep the presentation layer as thin and clean as you possibly can.&lt;br /&gt;&lt;br /&gt;The allure of a declarative scripting language for rich application development that harnesses all of the power of the Java platform is undeniable and I will continue to play with the technology as it matures. But it isn't quite ready for prime time yet.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;correction: Where I said Scene I should have said Stage. My memory tricked me. I am referring to javafx.application.Stage.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;In answer to a question in the comments, here is an example of how to turn JMol into a JComponent. Note that although you don't see long lines in the blog, when you copy/paste the text you seem to get it all. I'm not sure why and I am open to suggestions for better ways to include code.&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span class="keyword-directive"&gt;package&lt;/span&gt; fxstructurerendertest;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword-directive"&gt;import&lt;/span&gt; javax.swing.*;&lt;br /&gt;&lt;span class="keyword-directive"&gt;import&lt;/span&gt; java.awt.*;&lt;br /&gt;&lt;span class="keyword-directive"&gt;import&lt;/span&gt; java.awt.event.*;&lt;br /&gt;&lt;span class="keyword-directive"&gt;import&lt;/span&gt; org.jmol.api.*;&lt;br /&gt;&lt;span class="keyword-directive"&gt;import&lt;/span&gt; org.jmol.adapter.smarter.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;class&lt;/span&gt; JMolDisplay &lt;span class="keyword-directive"&gt;extends&lt;/span&gt; JComponent &lt;span class="keyword-directive"&gt;implements&lt;/span&gt; ActionListener {&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;static&lt;/span&gt; &lt;span class="keyword-directive"&gt;final&lt;/span&gt; &lt;span class="keyword-directive"&gt;long&lt;/span&gt; serialVersionUID = -5404266974773735194L;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JmolViewer viewer;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JmolAdapter modelAdapter;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JPopupMenu popup = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JPopupMenu();&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem dotsItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Dots&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//dots on/dots off&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem spaceItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Spacefill&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//spacefill on/spacefill off&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem ribbonItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Ribbon&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;); &lt;span class="comment"&gt;//ribbon on/ribbon off&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem colorAminoItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Color Amino&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//color amino/color NONE&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem colorChainItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Color Chain&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//color chain/color NONE&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem bondItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Bonds&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//wireframe 25/wireframe off - SELECTED&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JCheckBoxMenuItem atomItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JCheckBoxMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Atoms&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//cpk 25/cpk 0 - SELECTED&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; JMenuItem resetItem = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JMenuItem(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Reset&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;span class="comment"&gt;//reset&lt;/span&gt;&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; JMolDisplay() {&lt;br /&gt;    modelAdapter = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; SmarterJmolAdapter(&lt;span class="keyword-directive"&gt;null&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.setPreferredSize(&lt;span class="keyword-directive"&gt;new&lt;/span&gt; Dimension(100, 100));&lt;br /&gt;    viewer = JmolViewer.allocateViewer(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;, modelAdapter);&lt;br /&gt;    viewer.setJmolDefaults();&lt;br /&gt;    viewer.setColorBackground(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;BLACK&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.addMouseListener(&lt;span class="keyword-directive"&gt;new&lt;/span&gt; PopupListener());&lt;br /&gt;    bondItem.setSelected(&lt;span class="keyword-directive"&gt;true&lt;/span&gt;);&lt;br /&gt;    popup.add(dotsItem);&lt;br /&gt;    popup.add(spaceItem);&lt;br /&gt;    popup.add(ribbonItem);&lt;br /&gt;    popup.add(colorAminoItem);&lt;br /&gt;    popup.add(colorChainItem);&lt;br /&gt;    popup.add(bondItem);&lt;br /&gt;    popup.add(atomItem);&lt;br /&gt;    popup.add(resetItem);&lt;br /&gt;    dotsItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    spaceItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    ribbonItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    colorAminoItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    colorChainItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    bondItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    atomItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    resetItem.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  @Override&lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; actionPerformed(ActionEvent e) {&lt;br /&gt;    Object c = e.getSource();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == dotsItem) dots();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == spaceItem) spacefill();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == ribbonItem) ribbon();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == colorAminoItem) amino();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == colorChainItem) chain();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == bondItem) bond();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == atomItem) atoms();&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (c == resetItem) {&lt;br /&gt;      &lt;span class="keyword-directive"&gt;if&lt;/span&gt; ((e.getModifiers() &amp;amp; ActionEvent.ALT_MASK) != 0) {&lt;br /&gt;        ScriptDialog d = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; ScriptDialog();&lt;br /&gt;        d.pack();&lt;br /&gt;        d.setVisible(&lt;span class="keyword-directive"&gt;true&lt;/span&gt;);&lt;br /&gt;      } &lt;span class="keyword-directive"&gt;else&lt;/span&gt; reset();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; reset() {&lt;br /&gt;    runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;reset&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; atoms() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;cpk toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (atomItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;cpk 100&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;cpk 0&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; bond() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;bond toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (bondItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;wireframe 25&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;wireframe off&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; chain() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;chain color toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (colorChainItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;color chain&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;color NONE&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; amino() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;amino color toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (colorAminoItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;color amino&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;color NONE&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; ribbon() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;ribbon toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (ribbonItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;cartoon on&lt;/span&gt;&lt;span class="ST0"&gt;\n&lt;/span&gt;&lt;span class="character"&gt;color cartoons structure&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;cartoon off&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; spacefill() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;spacefill toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (spaceItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;spacefill on&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;spacefill off&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; dots() {&lt;br /&gt;    &lt;span class="comment"&gt;//log.debug(&amp;quot;dots toggle&amp;quot;);&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (dotsItem.isSelected()) runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;dots on&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;    &lt;span class="keyword-directive"&gt;else&lt;/span&gt; runScript(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;select all;dots off&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; JmolViewer getViewer() {&lt;br /&gt;    &lt;span class="keyword-directive"&gt;return&lt;/span&gt; viewer;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;class&lt;/span&gt; PopupListener &lt;span class="keyword-directive"&gt;extends&lt;/span&gt; MouseAdapter {&lt;br /&gt;    @Override&lt;br /&gt;    &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; mousePressed(MouseEvent e) {&lt;br /&gt;      showPopupIfNeeded(e);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; mouseReleased(MouseEvent e) {&lt;br /&gt;      showPopupIfNeeded(e);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span class="keyword-directive"&gt;private&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; showPopupIfNeeded(MouseEvent e) {&lt;br /&gt;      &lt;span class="keyword-directive"&gt;if&lt;/span&gt; (e.isPopupTrigger()) {&lt;br /&gt;        popup.show(e.getComponent(),&lt;br /&gt;          e.getX(), e.getY());&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; runScript(String script) {&lt;br /&gt;    viewer.evalString(script);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="keyword-directive"&gt;class&lt;/span&gt; ScriptDialog &lt;span class="keyword-directive"&gt;extends&lt;/span&gt; JDialog &lt;span class="keyword-directive"&gt;implements&lt;/span&gt; ActionListener {&lt;br /&gt;    JTextArea scriptArea;&lt;br /&gt;    ScriptDialog() {&lt;br /&gt;      scriptArea = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JTextArea();&lt;br /&gt;      scriptArea.setPreferredSize(&lt;span class="keyword-directive"&gt;new&lt;/span&gt; Dimension(200,200));&lt;br /&gt;      &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);&lt;br /&gt;      &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.getContentPane().setLayout(&lt;span class="keyword-directive"&gt;new&lt;/span&gt; BorderLayout());&lt;br /&gt;      &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.getContentPane().add(scriptArea, BorderLayout.CENTER);&lt;br /&gt;      JButton runButton = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; JButton(&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;&lt;span class="character"&gt;Run&lt;/span&gt;&lt;span class="character"&gt;&amp;quot;&lt;/span&gt;);&lt;br /&gt;      &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.getContentPane().add(runButton, BorderLayout.SOUTH);&lt;br /&gt;      runButton.addActionListener(&lt;span class="keyword-directive"&gt;this&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; actionPerformed(ActionEvent e) {&lt;br /&gt;      runScript(scriptArea.getText());&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="comment"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;   *&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;   * &lt;/span&gt;&lt;span class="ST1"&gt;@param&lt;/span&gt; &lt;span class="comment"&gt;structure&lt;/span&gt;&lt;br /&gt;   &lt;span class="comment"&gt;*/&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; setStructure(String structure) {&lt;br /&gt;    viewer.openStringInline(structure);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  &lt;span class="comment"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;   *&lt;/span&gt;&lt;br /&gt;   &lt;span class="comment"&gt;*/&lt;/span&gt;&lt;br /&gt;  @Override&lt;br /&gt;  &lt;span class="keyword-directive"&gt;public&lt;/span&gt; &lt;span class="keyword-directive"&gt;void&lt;/span&gt; paint(Graphics g) {&lt;br /&gt;    Rectangle rectClip = &lt;span class="keyword-directive"&gt;new&lt;/span&gt; Rectangle();&lt;br /&gt;    g.getClipBounds(rectClip);&lt;br /&gt;    viewer.renderScreenImage(g, &lt;span class="keyword-directive"&gt;this&lt;/span&gt;.getSize(), rectClip);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6261543452599429227?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6261543452599429227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6261543452599429227' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6261543452599429227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6261543452599429227'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/08/on-javafx.html' title='On JavaFX'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7189112940270606720</id><published>2008-08-04T05:00:00.001-04:00</published><updated>2009-11-04T05:33:21.308-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Sourdough Recipe Conversion</title><content type='html'>In principle it seems like converting a yeast recipe to sourdough should be very straightforward. But given my limited success with the &lt;a href="http://twentyonetimestwo.blogspot.com/2008/06/five-minute-sourdough-bread-experiment.html"&gt;attempt to convert&lt;/a&gt; the basic &lt;span style="font-style: italic;"&gt;Artisan Bread in Five Minutes a Day&lt;/span&gt; recipe to sourdough I felt I needed to validate the principle with a more normal recipe.&lt;br /&gt;&lt;br /&gt;Let's start with how I think it &lt;span style="font-style: italic;"&gt;should&lt;/span&gt; work. I think you should be able to convert any recipe by simply calculating the water and flour contribution of the starter and subtract those amounts from your recipe. In my case 238g of the starter always equals 125g of flour and 0.5 cups of water (because that's how I feed it). And of course you need to add time for the slower growing culture to do its thing.&lt;br /&gt;&lt;br /&gt;I have been baking a lot of typical sourdough bread and I wanted to try this technique with something very different. On the bread spectrum, not much could be more different from a crusty free form hearth baked bread than an American sandwich bread baked in a bread pan. My favorite sandwich bread recipe is the &lt;span style="font-style: italic;"&gt;American Sandwich Bread&lt;/span&gt; from &lt;a href="http://www.amazon.com/New-Best-Recipe-All-New-Recipes/dp/0936184744/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1217811162&amp;amp;sr=8-1"&gt;&lt;span style="font-style: italic;"&gt;The New Best Recipe&lt;/span&gt;&lt;/a&gt; cookbook, so that is my starting point.&lt;br /&gt;&lt;br /&gt;I decided to start with 238g of starter, because this is the amount I normally feed. This is more or less equivalent to a cup of starter. The original recipe calls for 532g of flour: 532-125=407g flour. It calls for 1/3C warm water that I normally dissolve the yeast in, this gets removed. It normally calls for a cup of milk, but we need to decrease the liquid a bit more, call it 7oz of milk.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;238g fed starter (fed overnight at room temperature just before using)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;407g King Arthur all-purpose flour&lt;/li&gt;&lt;li&gt;7oz 2% milk, warmed to tepid&lt;/li&gt;&lt;li&gt;3T butter, melted and cooled a bit&lt;/li&gt;&lt;li&gt;63g honey&lt;/li&gt;&lt;li&gt;1T kosher salt&lt;/li&gt;&lt;/ul&gt;Put everything in the KitchenAid bowl. Mix with the dough hook until combined, then turn up to medium speed and knead for about 10 minutes until satiny, scraping the dough off the hook a couple of times. Allow to double. Punch down, pat into a rectangle, fold into thirds to make a cylinder and pinch the seam tightly. Place seam down in a greased loaf pan and press the loaf flat and into the corners. Allow to double. Bake with steam at 350 degrees F for 35-45 minutes until the internal temperature is 195 degrees F.&lt;br /&gt;&lt;br /&gt;I ended up needing to add a couple tablespoons of flour during kneading to get the right consistency, but this is within normal variability.&lt;br /&gt;&lt;br /&gt;One thing that surprised me is how long the rises took. My normal sourdough recipe takes about 2 hours, this took 4 hours. That is for each of two rises, so 8 hours of total rising time. I might try this again with double the starter, but if I do I will probably need to use nonfat dried milk to get any of the milk character into the dough (because that will double the amount of water also and force me to reduce the milk further).&lt;br /&gt;&lt;br /&gt;The bread turned out very well. The loaf is just slightly shorter and the crumb slightly denser than the standard recipe, but the difference isn't huge. It doesn't taste like sourdough at all, it just tastes like very nice normal sandwich bread. That was a bit surprising as I would expect 8 hours of rising to generate lots of sour flavor - maybe the honey counters it.&lt;br /&gt;&lt;br /&gt;Was it worth it? No, probably not. Eight hours for a result you can get in two is kind of silly. But it validates the conversion principle and I expect I'll try this with other recipes to see what kind of effect I get.&lt;br /&gt;&lt;br /&gt;Get out your calculator and try your favorite recipe with sourdough starter. You might like it. But leave yourself plenty of time.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7189112940270606720?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7189112940270606720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7189112940270606720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7189112940270606720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7189112940270606720'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/08/sourdough-recipe-conversion.html' title='Sourdough Recipe Conversion'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3153642334742387570</id><published>2008-08-03T08:41:00.002-04:00</published><updated>2008-08-03T09:53:10.282-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Yes, I Think Your Project Sucks</title><content type='html'>I am a software/systems architect in a very large corporation for which software and IT are not core business. In this role and previous roles I have frequently been called upon to participate in project code reviews.&lt;br /&gt;&lt;br /&gt;When I perform these reviews I usually generate pages of notes and constructive criticisms that I share with the project team. I don't pull punches in these reviews. If I spot some code that is smelly I will highlight it and explain why it is wrong. I will call out shoddy code organization and poorly thought out build scripts and stupid package naming and bad error handling and crappy unit tests and useless comments and other details &lt;span style="font-style: italic;"&gt;ad nauseum&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But all of these details are the trees. What makes me like or dislike a project is the overview of the forest. To be sure, one element is the sheer number of details that I have to call out. An overgrown forest stands no chance. Here are some other higher level things that I look for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Evidence of a professional developer attitude&lt;/li&gt;&lt;li&gt;Evidence that the end goals are understood&lt;/li&gt;&lt;li&gt;Evidence of higher order design/architecture&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Evidence of a professional developer attitude&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Show me that you have a process. That you care about the quality of the project and the code. That you care what other developers think. That you are trying to set a good example. Some indicators:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clean, well organized repository&lt;/li&gt;&lt;li&gt;Repository is up to date and has regular check-ins (with comments!)&lt;/li&gt;&lt;li&gt;Clear build scripts that serve as documentation for the build process and dependencies&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unit tests and TDD thinking (even if you don't &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; TDD)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Continuous build (or at least nightly)&lt;/li&gt;&lt;li&gt;A single central build environment (NOT your IDE, doofus!)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Evidence that the end goals are understood&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Show me that you understand the user. That you aren't going to show the user error messages like, "Database Error: Code 5387". That the user interface doesn't freeze or time out. That you have processes in place so that you can quickly debug problems in production. If this is an API, show me that it is clear and understandable and that the contract utterly explicit. Some indicators:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A system for handling errors/exceptions that is logical, that logs details, that presents the user with a message that is clear and simple.&lt;/li&gt;&lt;li&gt;Asynchronous UI processes&lt;/li&gt;&lt;li&gt;Sensible timeout logic where appropriate&lt;/li&gt;&lt;li&gt;Integration/unit tests that monitor task time and alert when changes to the code may have slowed something down&lt;/li&gt;&lt;li&gt;For APIs do the error messages contain the extra details that a developer would need?&lt;/li&gt;&lt;li&gt;Do you eat your own dog food?&lt;/li&gt;&lt;li&gt;Are you logging in such a way and at an appropriate level of verbosity such that you can troubleshoot unexpected problems?&lt;/li&gt;&lt;li&gt;Documentation for any APIs. Yes, documentation. If you can't clearly explain in a document how to use your API, then what good are you (or it)?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;Evidence of higher order design/architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Show me that you have thought about reusability. That you understand the value of layered abstractions. That you understand what an object is and what a process is. Every time you look for a library to do X for you and don't find it, do you then write a decent library to do X? Or do you just hack some code to do X into the middle of some poor unsuspecting class? Some indicators:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you are writing a service that does Y, do you have a well orchestrated class/library that does Y, upon which you have layered a service? (as opposed to building the functionality directly into the service classes/methods)&lt;/li&gt;&lt;li&gt;Are complex tasks broken down into small logical slices? (as opposed to long confusing methods)&lt;/li&gt;&lt;li&gt;Are things that could/should be reusable actually reusable? (as opposed to having unnecessary interdependencies with the rest of the project)&lt;/li&gt;&lt;li&gt;Are your objects named like (and function like) nouns?&lt;/li&gt;&lt;li&gt;Are your method and object names indicative of actual behavior?&lt;/li&gt;&lt;li&gt;Is the project an assembly of small pieces that fit neatly into a bigger picture? (as opposed to a monolithic beast)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;It isn't shocking to me that I have never seen a project that scores perfect on all of these indicators. Perfection should be rare. But it &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; shocking to me how many projects I have seen that score zero.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3153642334742387570?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3153642334742387570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3153642334742387570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3153642334742387570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3153642334742387570'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/08/yes-i-think-your-project-sucks.html' title='Yes, I Think Your Project Sucks'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-259359234173223486</id><published>2008-08-02T09:01:00.003-04:00</published><updated>2008-08-02T11:32:38.961-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Back Up Your Online Content!!</title><content type='html'>It is kind of ironic that I am writing this post now as I have just been doing research for myself on how best to do the opposite (put my back-ups online on e.g. &lt;a href="http://aws.amazon.com/s3"&gt;S3&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;It recently came to my attention (via a &lt;a href="http://sirfwalgman.blogspot.com/2008/08/mother-fucking-google-on-mother-fucking.html"&gt;poker blogger&lt;/a&gt; who was irate that &lt;a href="http://taopoker.blogspot.com/"&gt;Tao of Poker&lt;/a&gt; got locked) that some blogs on Blogger got improperly locked by a spam detection bot. I did a little investigation to see how big the problem was and it is big. Really big. Here is a small sampling of what I found:&lt;br /&gt;&lt;a href="http://mcgrupp.blogspot.com/2008_08_01_archive.html#6375102621404301618"&gt;a&lt;/a&gt; &lt;a href="http://tootiesbong.blogspot.com/2008/08/flagged-by-bot-im-in-exile.html"&gt;b&lt;/a&gt; &lt;a href="http://www.carbwire.com/2008/08/01/regina_wilshire_the_latest_lowcarb_victim_of_bloggers_spamseeking_robots"&gt;c&lt;/a&gt; &lt;a href="http://dougharvey.blogspot.com/2008/07/blocked-by-bloggers-spam-protection.html"&gt;d&lt;/a&gt; &lt;a href="http://exchristian.net/exchristian/2008/08/is-blogger-google-shutting-down-atheist.html"&gt;e&lt;/a&gt; &lt;a href="http://rantsfromtherookery.blogspot.com/2008/08/google-blogger-on-rampage.html"&gt;f&lt;/a&gt; &lt;a href="http://www.bloggerbuster.com/2008/08/has-your-blog-been-flagged-as-spam-here.html"&gt;g&lt;/a&gt; &lt;a href="http://foodanddrinkireland.blogspot.com/2008/08/cuppa-and-some-spam-please.html"&gt;h&lt;/a&gt; &lt;a href="http://canadiancynic.blogspot.com/2008/08/blogopolitical-dirty-tricks.html"&gt;i&lt;/a&gt; &lt;a href="http://chucksadventures.blogspot.com/2008/08/locked-out.html"&gt;j&lt;/a&gt; &lt;a href="http://carletongarden.blogspot.com/2008/08/i-can-post-again.html"&gt;k&lt;/a&gt; &lt;a href="http://reflectionsonfilmandtelevision.blogspot.com/2008/08/spam-lot.html"&gt;l&lt;/a&gt; &lt;a href="http://madbookseller.blogspot.com/2008/08/blogger-goes-insane.html"&gt;m&lt;/a&gt; &lt;a href="http://www.thirtydaychallenge.com/forums/general-internet-marketing-chat/6589-blogger-mis-flagged-my-30dc-site-spam-link-farm-currently-down.html"&gt;n&lt;/a&gt; &lt;a href="http://laycockdesigns.com/uncategorized/did-you-get-locked-out-of-your-blogger-blog/"&gt;o&lt;/a&gt; &lt;a href="http://adventuresofelastigirl.blogspot.com/2008/08/friday-five-lock-me-out-lock-me-in.html"&gt;p&lt;/a&gt; &lt;a href="http://yankeephilip.blogspot.com/2008/08/spam-spam-egg-and-spam.html"&gt;q&lt;/a&gt; &lt;a href="http://rallianceblog.blogspot.com/2008/08/blogger-meltdown.html"&gt;r&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google has admitted that this is a mistake &lt;a href="http://buzz.blogger.com/2008/08/spam-fridays.html"&gt;here&lt;/a&gt; and &lt;a href="http://knownissues.blogspot.com/2008/08/some-blogs-have-been-mistakenly-marked.html"&gt;here&lt;/a&gt;. Fair enough. Mistakes happen. But what if it hadn't been a mistake? What if it happened and you were on a three week vacation and were offline? What if you lost all of your writing?&lt;br /&gt;&lt;br /&gt;This got me thinking about how much I have been trusting online companies with my content. Probably too much given that they have absolutely no obligation to me at all. The only thing keeping me "safe" is the character of the folks actually working at Google et al. and the corporate fear of bad publicity. If my gmail account contents were lost I would be devastated. Possibly crippled.&lt;br /&gt;&lt;br /&gt;So I did some long overdue back-ups. And you should too.&lt;br /&gt;&lt;br /&gt;The best way to back up gmail is to turn on POP3 support with the "Enable POP for &lt;span class="KPbg7b"&gt;all mail" flag set. Then fire up a POP client and sync. It actually takes multiple syncs apparently because Google throttles the number of messages you can get in one go, so make sure that you have it all.&lt;br /&gt;&lt;br /&gt;The best way to back up your Blogger content is to formulate a link like this:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="KPbg7b"&gt;http://twentyonetimestwo.blogspot.com/search?max-results=10000&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="KPbg7b"&gt;Where you replace "twentyonetimestwo" with your blog name and "10000" with a number that is more than the total number of posts you have written (if necessary). Then do a "Save Page As" from Firefox. If you choose "web page, complete" as the type you will get your images too.&lt;br /&gt;&lt;br /&gt;Do it now.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-259359234173223486?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/259359234173223486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=259359234173223486' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/259359234173223486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/259359234173223486'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/08/back-up-your-online-content.html' title='Back Up Your Online Content!!'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3647747762068737852</id><published>2008-07-30T07:30:00.003-04:00</published><updated>2008-07-30T08:01:18.130-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>SOAP and REST and Tools and Consequences</title><content type='html'>&lt;a href="http://console-stuff.blogspot.com/"&gt;Jeff&lt;/a&gt; makes some interesting &lt;a href="http://console-stuff.blogspot.com/2008/07/pragmatic-services.html"&gt;points about SOAP and REST&lt;/a&gt;. SOAP is probably dead. R.I.P. But I want to take the conversation a step further.&lt;br /&gt;&lt;br /&gt;He points out that vendors haven't really jumped on the REST bandwagon and I agree - they haven't. But I think that this is a Very Good Thing (TM).&lt;br /&gt;&lt;br /&gt;First of all REST is simple enough that (especially on the client side) you don't really need tools. This is where a lot of the utility comes from.&lt;br /&gt;&lt;br /&gt;Secondly and more importantly REST hasn't beaten SOAP because the protocol is massively superior. REST has beaten SOAP because of SOAP's complexities and incompatibilities. But it isn't the protocol that is complex and incompatible, &lt;span style="font-weight: bold;"&gt;it is the tools&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;If you want to build a successful service protocol I think you have two choices:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Build something simple enough that normal inconsistencies can easily be dealt with on a project by project basis. (e.g. REST or basic HTML request/response)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build something that is absolutely specced out to the nth level of detail so that there is absolutely no ambiguity and produce several reference implementations (e.g. &lt;a href="http://en.wikipedia.org/wiki/Interface_description_language"&gt;IDL&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/IIOP"&gt;IIOP&lt;/a&gt;)&lt;/li&gt;&lt;/ol&gt;Anything in between these two extremes is doomed. I claim that tools (especially mediocre tools) could, if widely adopted, push REST out of category 1 and into the middle territory. Either that or the tools would die. Either way I don't see the long term value and I hope that the vendors stay away for a while longer.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3647747762068737852?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3647747762068737852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3647747762068737852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3647747762068737852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3647747762068737852'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/soap-and-rest-and-tools-and.html' title='SOAP and REST and Tools and Consequences'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1832366441554142885</id><published>2008-07-29T19:56:00.002-04:00</published><updated>2008-07-29T20:23:57.286-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>You Make PB&amp;J Wrong</title><content type='html'>How can that be, you ask? All you have to do is take two slices of bread, spread some peanut butter on one slice, some jam on the other and slap them together, right?&lt;br /&gt;&lt;br /&gt;That might be acceptable if you consume it immediately, but otherwise, no, you aren't doing it right. If you pack your lunch, you will very much regret your casual attitude towards PB&amp;amp;J.&lt;br /&gt;&lt;br /&gt;I won't even go into the advanced math required to get the amount of filling right. Suffice it to say that you want as much filling as possible without any squirting out when you bite.&lt;br /&gt;&lt;br /&gt;What I really want to talk about is the long term effects of jam on bread. It isn't pretty people.&lt;br /&gt;&lt;br /&gt;jam + bread + time = goo.&lt;br /&gt;&lt;br /&gt;Over the centuries there have been countless attempts to solve this problem, but most people don't even bother. This is wrong. But then most of the well known solutions aren't ideal. My grandmother used to spread room temperature butter on the jam side. This nicely solves the jam and bread problem, but unfortunately the result is no longer actually a PB&amp;amp;J sandwich, it is a PBB&amp;amp;J sandwich.&lt;br /&gt;&lt;br /&gt;But there is a (nearly*) perfect solution. Spread a &lt;span style="font-style: italic;"&gt;very very thin&lt;/span&gt; layer of creamy peanut butter on the jam side slice of bread before applying the jam. Really, this works great.&lt;br /&gt;&lt;br /&gt;Why do I care how you make PB&amp;amp;J sandwiches? I don't. Not one bit. I don't even care if you agree with my solution. I am using PB&amp;amp;J as a metaphor.&lt;br /&gt;&lt;br /&gt;But I'm not going to tell you what the metaphor is. That is an exercise for the reader.&lt;br /&gt;&lt;br /&gt;I will, however, make the claim that if you read all of that and actually &lt;span style="font-style: italic;"&gt;thought&lt;/span&gt; about whether that was a good solution to the problem, then you just might have the capacity to be a good software designer.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;* - The solution is only &lt;span style="font-style: italic;"&gt;nearly&lt;/span&gt; perfect because it slightly changes the slipperiness of the bread and the advanced filling calculations have to be redone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1832366441554142885?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1832366441554142885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1832366441554142885' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1832366441554142885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1832366441554142885'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/you-make-pb-wrong.html' title='You Make PB&amp;J Wrong'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-639865303625779283</id><published>2008-07-26T10:27:00.003-04:00</published><updated>2008-07-26T10:36:06.674-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Jumper Cables</title><content type='html'>I am not normally a political activist, but I'm going to make a rare exception.&lt;br /&gt;&lt;br /&gt;Let's see if we can bring the 4th amendment back to life and send a message to our elected representatives that we do not want to live in a police state.&lt;br /&gt;&lt;br /&gt;Pledge here if you agree. I'll forgive you if you don't.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.accountabilitynowpac.com/" target="_blank"&gt;&lt;img src="http://www.accountabilitynowpac.com/images/SBF-300x250.jpg" alt="Become a StrangeBedfellow!" style="border: 1px solid black;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-639865303625779283?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/639865303625779283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=639865303625779283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/639865303625779283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/639865303625779283'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/jumper-cables.html' title='Jumper Cables'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-8759373709733077122</id><published>2008-07-25T07:02:00.005-04:00</published><updated>2008-12-11T08:18:02.275-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Klatte's Law</title><content type='html'>I was just listening to the 6/30 episode of &lt;a href="http://thisweekintech.com/"&gt;TWiT&lt;/a&gt; (yes, I am way behind in my podcasts - blame my &lt;a href="http://www.audible.com/"&gt;audible.com&lt;/a&gt; addiction).&lt;br /&gt;&lt;br /&gt;This is the episode where they talk about Bill Gates' retirement and the contributions he made to the world and the industry. Their conclusion was that his biggest contribution was a strategy based on an understanding of Moore's Law. The thesis is that he understood that if you release something as soon as it will run (even if it runs badly), Moore's Law will bail you out shortly and that is more efficient than trying to make something that runs tight in the first place. I agree that this strategy was a huge part of the success of Microsoft and it was clearly both the correct strategy in hindsight and a forseeably correct strategy given Moore's Law.&lt;br /&gt;&lt;br /&gt;But I think that strategy is failing now and I think that this is a huge part of the reason why Vista is tanking. It doesn't have much to do with why Vista is not of interest to me (that is more around DRM and a closed mentality), but I think it is a big part of the greater market failure.&lt;br /&gt;&lt;br /&gt;Why is the strategy failing? I have to introduce a concept for a minute here and for the purposes of this article, let's call it "Klatte's Law". Klatte's Law states that at any moment in time, a user's computational needs can be represented as a gently sloping linear increase. This will stagger up as the user discovers whole new categories of computational need (i.e. if someone who just does word processing starts doing video editing, there will be an enormous jump, but both before and after the jump it is a gentle slope).&lt;br /&gt;&lt;br /&gt;Klatte's Law applies to mass market computing, but not to specialized niches like high performance computing.&lt;br /&gt;&lt;br /&gt;If you were to plot a zoomed in view of Moore's Law plotted with Klatte's Law, it might look something like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SIm2qAyisyI/AAAAAAAAAEo/GdRNMj3meDs/s1600-h/klattes_law.gif"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SIm2qAyisyI/AAAAAAAAAEo/GdRNMj3meDs/s320/klattes_law.gif" alt="" id="BLOGGER_PHOTO_ID_5226909675422921506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The strategy of ignoring tight code in favor of the depending upon Moore's Law works as long as you are to the left of the intersection of Moore's Law and Klatte's Law, but it starts to break down as you approach the intersection and fails completely to the right of the intersection.&lt;br /&gt;&lt;br /&gt;Fundamentally, I think that the market as a whole is currently to the right of this intersection. This could change at some point if a killer app comes out that requires tons of computational power (but this killer app &lt;span style="font-style: italic;"&gt;will not&lt;/span&gt; &lt;span style="font-style: italic;"&gt;be an operating system&lt;/span&gt;). You can depend on Moore's Law to bail you out if you think you have that killer app, or if you are so far to the left of the intersection that the user already wants to upgrade their system.&lt;br /&gt;&lt;br /&gt;But if you do not have a killer app and if the user is satisfied with their current system, you are toast.&lt;br /&gt;&lt;br /&gt;"What do you mean I need a quad core machine with twice as much ram to run Vista well? My core2 duo machine does everything I need just fine!"&lt;br /&gt;&lt;br /&gt;Microsoft understands Moore's Law, but they don't understand Klatte's Law at all.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-8759373709733077122?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/8759373709733077122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=8759373709733077122' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8759373709733077122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8759373709733077122'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/klattes-law.html' title='Klatte&apos;s Law'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Z2EF6PGeXYw/SIm2qAyisyI/AAAAAAAAAEo/GdRNMj3meDs/s72-c/klattes_law.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6169425290771246663</id><published>2008-07-22T20:24:00.000-04:00</published><updated>2008-12-11T08:18:02.411-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='charcuterie'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Salty Lox (and more)</title><content type='html'>Also called "regular" or "belly" lox.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SIZ4UjjpH7I/AAAAAAAAAEg/dyF4_VEA574/s1600-h/lox.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SIZ4UjjpH7I/AAAAAAAAAEg/dyF4_VEA574/s320/lox.jpg" alt="" id="BLOGGER_PHOTO_ID_5225996712147492786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have no idea why people don't make this all the time. Lox is delicious and utterly trivial to make. Plus you can't even find the old New York deli salty lox anywhere outside the city any more (and it can be hard to find it in the city). It has been mostly replaced with the milder Nova lox that has been pre-sliced and pre-packaged at the factory.&lt;br /&gt;&lt;br /&gt;Here is the general procedure for making &lt;span style="font-style: italic;"&gt;any&lt;/span&gt; kind of lox:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Take a cure, which is a mixture of salt and sugar and optionally some spices or herbs.&lt;/li&gt;&lt;li&gt;Cover the fully de-boned salmon fillet (including pin bones) and spread the cure over it. You need more cure on the flesh side than the skin side. The objective is to do this in a container that is right sized for the piece of fish, so that you can use less cure. I like heavy weight zip lock bags. On the other hand if you aren't doing production volumes of the stuff, the cure is pretty cheap.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Press the fish with a weight to aid the expression of juices. Some kind of flat plate or pan with some cans or water bottles in it works well. For this last batch I put two pieces of salmon in two plastic zip lock bags on top of each other into one loaf pan, then topped with another loaf pan with weights. Store the whole thing in the fridge. The dry cure will turn into a brine as it cures, but there should always be some undissolved cure so you know that your solution is saturated.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Periodically check the fish for done and redistribute or add cure as necessary. It is done when you press it and it doesn't feel squishy, but feels kind of "cooked". A few days is usually about right.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Rinse off the cure and pat dry with paper towels. Wrap in freezer paper and store in the fridge (or serve immediately).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Slice thinly on the bias to serve. This takes a &lt;a href="http://twentyonetimestwo.blogspot.com/2008/06/book-review-edge-in-kitchen.html"&gt;sharp knife&lt;/a&gt; and some practice, but it isn't hard.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;You can optionally cold smoke this for some styles of lox. The cure can be can be anywhere from 1/3 salt and 2/3 sugar to 2/3 salt and 1/3 sugar (by weight). Use any kind of salt, as long as you measure by weight, but I use kosher salt.&lt;br /&gt;&lt;br /&gt;Salty lox is the ultra minimalist version. 2/3 salt and 1/3 sugar, no other spices, no smoking. It is done in about three days. Really easy. It is sort of a gateway to &lt;a href="http://www.amazon.com/Charcuterie-Craft-Salting-Smoking-Curing/dp/0393058298/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1216740808&amp;amp;sr=8-1"&gt;charcuterie&lt;/a&gt; (the next thing you should make is duck breast prosciutto, or maybe duck confit). My nephew called it "salmon bacon" - yup, that's about right. Yum.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6169425290771246663?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6169425290771246663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6169425290771246663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6169425290771246663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6169425290771246663'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/salty-lox-and-more.html' title='Salty Lox (and more)'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/SIZ4UjjpH7I/AAAAAAAAAEg/dyF4_VEA574/s72-c/lox.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-38099513417841789</id><published>2008-07-17T07:28:00.004-04:00</published><updated>2009-11-04T05:33:21.308-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>KitchenAids and Volume</title><content type='html'>I always have exactly twice the amount of sourdough starter that I need when I make bread. This is just a consequence of the need to feed it and the limit of size that my vessels have. It's not a huge deal - I just throw a bit out.&lt;br /&gt;&lt;br /&gt;But the other day I decided to try doubling the recipe instead.&lt;br /&gt;&lt;br /&gt;I reasoned that although this technically exceeds the "flour power" of my kitchenaid, the dough isn't really all that tough and kneading a double recipe is only fractionally harder than a single recipe. So I wasn't worried about burning out my motor. And the volume of the bowl is large enough to just hold the doubled dough (with maybe a little doming at the top), so I figured I was also OK on volume.&lt;br /&gt;&lt;br /&gt;Well all of those assumptions are probably correct. But what I did not consider is that the action of the dough hook is very volume sensitive.&lt;br /&gt;&lt;br /&gt;Let me save you the trouble of this experiment. The dough creeps rapidly over the top of the dough hook and you have to stop and unstick everything about every 10 seconds.&lt;br /&gt;&lt;br /&gt;Plus it is quite challenging to form 6 pounds of dough into two large loaves (that barely fit onto a large baking stone) and get them into the oven and baked. I managed it, but only just.&lt;br /&gt;&lt;br /&gt;The bread turned out well, but I won't be doing this again.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-38099513417841789?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/38099513417841789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=38099513417841789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/38099513417841789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/38099513417841789'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/kitchenaids-and-volume.html' title='KitchenAids and Volume'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3317744050010674447</id><published>2008-07-16T15:14:00.004-04:00</published><updated>2008-07-16T15:41:26.535-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Charities Suck</title><content type='html'>OK, that's a terrible thing to say and I don't really mean it, but GOD they can be annoying.&lt;br /&gt;&lt;br /&gt;About 12 or 13 years ago I joined PBS. We lived in Chicago at the time and I joined with a largish donation that entitled me to a &lt;a href="http://jacquespepin.net/"&gt;Jacques Pepin&lt;/a&gt; book. I mean I love the programming (Jacques, Dr. Who, Monty Python, etc) and I felt good about contributing to make the programming possible. I was very happy to contribute and I would have happily renewed my membership year after year,  occasionally taking advantage of interesting offers and making larger donations.&lt;br /&gt;&lt;br /&gt;But then they started to call and ask for money. Mind you, when I first signed up they asked me if it was OK for them to call me and I said, "No." Every time they called I asked them to remove me from their call list. After a while I started asking for supervisors. Nothing helped. &lt;span style="font-style: italic;"&gt;It will be a cold day in hell before I ever give my contact information to a PBS station again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;They can have my money, but they absolutely can NOT have my digits.&lt;br /&gt;&lt;br /&gt;What reminded me of this? Yet another friggin' message from the Red Cross about another blood drive that I can't possibly go to. I have donated gallons of blood over the years and I am happy to do it when I can, but I seriously do not want their stupid machine to talk to my machine twice a week about a blood drive happening in the middle of the work day close to home, but 35 miles from where I work. &lt;span style="font-style: italic;"&gt;It will be a cold day in hell before I ever give my contact information to the Red Cross again.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only difference is that I have long since learned never to answer my phone. If you call my home phone I absolutely guarantee that you will not talk to me.&lt;br /&gt;&lt;br /&gt;Just because charities have legal immunity from ignoring Do Not Call registries, does not mean that there are no consequences for seriously pissing people off - how can they possibly not understand this?&lt;br /&gt;&lt;br /&gt;And yes, all of my numbers are on every possible Do Not Call registry.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3317744050010674447?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3317744050010674447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3317744050010674447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3317744050010674447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3317744050010674447'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/charities-suck.html' title='Charities Suck'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2137486652591227713</id><published>2008-07-11T08:33:00.000-04:00</published><updated>2008-07-11T10:49:58.371-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Diets and Diaries</title><content type='html'>&lt;a href="http://www.reuters.com/article/healthNews/idUSN0741885020080708"&gt;This study&lt;/a&gt; validates my whole approach to weight loss. There is some more discussion &lt;a href="http://feeds.slashfood.com/%7Er/weblogsinc/slashfood/%7E3/331722138/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I haven't been very good about keeping my food diary of late and I have gained a few pounds back. One of the reasons I get tired of the whole food diary thing, though, is that I have insisted on doing complete calorie calculations, which gets darned tiresome.&lt;br /&gt;&lt;br /&gt;The study implies that that might not be necessary. The more you record, the better you are likely to do, but the &lt;span style="font-style: italic;"&gt;act of recording&lt;/span&gt; may be what puts you over the edge.&lt;br /&gt;&lt;br /&gt;Like I might not have had that second handful of yummy &lt;a href="http://www.m-ms.com/us/about/products/mmspremiums/index.jsp"&gt;M&amp;amp;M Premiums (Triple Chocolate)&lt;/a&gt; last night if I had had to record the fact for posterity.&lt;br /&gt;&lt;br /&gt;So I am going to try it for a while and see what comes of this easier lighter weight food diary.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2137486652591227713?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2137486652591227713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2137486652591227713' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2137486652591227713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2137486652591227713'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/diets-and-diaries.html' title='Diets and Diaries'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2842315842450892046</id><published>2008-07-10T08:14:00.003-04:00</published><updated>2009-11-04T05:33:21.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>50% Whole Wheat Sourdough</title><content type='html'>This bread turned out really well. I made it the same as my regular sourdough, but used 50% whole wheat flour. The whole wheat didn't detract from the texture or crust at all, but it added nicely to the flavor. This is really great bread.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Weighed out 238g of active starter (that basically equals 125g flour and half a cup of water).&lt;/li&gt;&lt;li&gt;Mixed in 1.5 cups warm water.&lt;/li&gt;&lt;li&gt;Stirred in 375g King Arthur whole wheat flour.&lt;/li&gt;&lt;li&gt;Let proof for 2 hours.&lt;/li&gt;&lt;li&gt;Mixed in and kneaded 250g Harvest King high protein white flour and 1T kosher salt.&lt;/li&gt;&lt;li&gt;Allowed to double (around 2 hours).&lt;/li&gt;&lt;li&gt;Punched down, formed loaf, allowed to rise (around 2 hours).&lt;/li&gt;&lt;li&gt;Dusted with flour, slashed, baked at 450 degrees for 20 minutes, then 400 degrees to an internal temperature of 200 degrees (about 5 more minutes).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SHX9g2tQTvI/AAAAAAAAAEY/JCFTVnzftB4/s1600-h/loaf.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SHX9g2tQTvI/AAAAAAAAAEY/JCFTVnzftB4/s320/loaf.jpg" alt="" id="BLOGGER_PHOTO_ID_5221358083888926450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SHX9cU9fnYI/AAAAAAAAAEQ/9pfvkL1AYdw/s1600-h/cut.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SHX9cU9fnYI/AAAAAAAAAEQ/9pfvkL1AYdw/s320/cut.jpg" alt="" id="BLOGGER_PHOTO_ID_5221358006110756226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2842315842450892046?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2842315842450892046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2842315842450892046' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2842315842450892046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2842315842450892046'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/50-whole-wheat-sourdough.html' title='50% Whole Wheat Sourdough'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z2EF6PGeXYw/SHX9g2tQTvI/AAAAAAAAAEY/JCFTVnzftB4/s72-c/loaf.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-8348469849870012924</id><published>2008-07-09T20:59:00.002-04:00</published><updated>2008-07-11T10:32:25.760-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Long Culinary Weekend</title><content type='html'>We didn't do much over the long weekend. Our plans for Saturday got canceled due to the weather and the rest of the time we chilled. So I spent some time in the kitchen.&lt;br /&gt;&lt;br /&gt;The tally:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;White sourdough bread&lt;/li&gt;&lt;li&gt;American sandwich bread. Twice.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Double-vanilla ice cream (best I've ever had)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Rich chocolate sauce&lt;/li&gt;&lt;li&gt;Deep caramel sauce&lt;/li&gt;&lt;li&gt;Terrific &lt;a href="http://www.seriouseats.com/recipes/2008/04/essentials-baked-ziti-recipe.html"&gt;baked ziti&lt;/a&gt; (supposed to go the party on Saturday, but we ate it instead)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Whole wheat sourdough bread&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.foodandwine.com/recipes/fromage-fort"&gt;Fromage fort&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A couple of &lt;a href="http://en.wikipedia.org/wiki/Spatchcock"&gt;spatchcocked&lt;/a&gt; chickens on the grill&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/Cornbread-Gospels-Crescent-Dragonwagon/dp/0761119167"&gt;Cornbread&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scratch buttermilk pancakes&lt;/li&gt;&lt;li&gt;French toast from the sandwich bread&lt;/li&gt;&lt;li&gt;A killer sandwich of ham with caramelized onions and fromage fort browned under the broiler.&lt;/li&gt;&lt;li&gt;Meringue cookies (to use up the egg whites whose yolks went into the ice cream)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There might be something wrong with me. If nothing else, I think I should probably go back on my diet...&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-8348469849870012924?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/8348469849870012924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=8348469849870012924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8348469849870012924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8348469849870012924'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/07/long-culinary-weekend.html' title='Long Culinary Weekend'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4964947941807186475</id><published>2008-06-27T08:46:00.025-04:00</published><updated>2009-11-04T05:33:21.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Five Minute Sourdough Bread: An Experiment</title><content type='html'>Of course any sourdough bread is going to take more than five minutes. But it is an attempt to convert the basic recipe for &lt;a href="http://twentyonetimestwo.blogspot.com/2008/06/artisan-bread-in-five-minutes-day.html"&gt;Artisan Bread in 5 Minutes a Day&lt;/a&gt; (&lt;a href="http://www.amazon.com/Artisan-Bread-Five-Minutes-Revolutionizes/dp/0312362919/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1214593868&amp;amp;sr=8-1"&gt;ABI5MAD&lt;/a&gt;) into sourdough and that is the best title I could come up with. It kicks the butt of "ABI5MAD Sourdough".&lt;br /&gt;&lt;br /&gt;I am using &lt;a href="http://www.kingarthurflour.com/shop/detail.jsp?select=C78&amp;amp;byCategory=C117&amp;amp;id=1522"&gt;this starter&lt;/a&gt;. When I feed it, I feed it with 125g King Arthur all purpose flour and 1/2 cup of bottled spring water (or multiples thereof). If for some reason you felt compelled to attempt to repeat this experiment and you use a starter with different ratios of flour to water you may need to adjust the recipe. My starter lives in &lt;a href="http://www.kingarthurflour.com/shop/detail.jsp?select=C81&amp;amp;byCategory=C150&amp;amp;id=7699"&gt;this crock&lt;/a&gt;, because my starter is cool. I need to get my starter some sunglasses.&lt;br /&gt;&lt;br /&gt;The flour proportions were easy to calculate, but I had to make some guesses when it came to yeast. I decided that adding yeast was good because the real magic of ABI5MAD is that I can grab a handful of dough out of the fridge and have a fresh loaf in an hour and a half (most of that time unattended). I want that dependability. But I decreased the yeast a little because the sourdough culture already has a bunch. It was a total shot in the dark, really.&lt;br /&gt;&lt;br /&gt;I used tepid water for the rise to avoid &lt;a href="http://en.wikipedia.org/wiki/Heat_shock"&gt;heat shocking&lt;/a&gt; the sourdough culture. I don't care so much if this rise takes longer as long as I don't have to wait years to proof the loaves when it comes time to bake. Plus this will theoretically allow more flavor to develop. Will it be too much flavor?&lt;br /&gt;&lt;br /&gt;Took 238g starter from the fridge and added half a cup of water in the bottom of my &lt;a href="http://www.kingarthurflour.com/shop/detail.jsp?id=5060"&gt;6qt plastic container&lt;/a&gt;. Stirred to dissolve, then mixed in 125g of all purpose flour. Fermented overnight, about 10 hours. (did the same to my starter and put it back in the fridge in the morning)&lt;br /&gt;&lt;br /&gt;In the morning, added 2 cups of &lt;span&gt;tepid&lt;/span&gt; water (room temperature plus a tiny bit) that had 1T granulated yeast and 1 1/2T kosher salt dissolved in it. Stirred to mix. Then added 533g of King Arthur bread flour (all purpose is probably fine too). Mixed with a wooden spoon until everything was completely wet and there were no dry spots.&lt;br /&gt;&lt;br /&gt;Allowed to proof until the dough started to collapse. Since the water was cooler than normally used for ABI5MAD, this took longer than usual. I let it go around 4 hours.&lt;br /&gt;&lt;br /&gt;Then I used the dough as I would the basic boule dough from ABI5MAD.&lt;br /&gt;&lt;br /&gt;Day 0 - a mini boule.&lt;br /&gt;&lt;br /&gt;I felt the need to test the dough right away. As usual with ABI5MAD doughs the fresh dough was wicked wet and sticky. I managed to form a fairly rustic looking boule. It came out prettier than I deserved. It was a fairly flat loaf, again like most of my ABI5MAD loaves. It tastes great. Lovely crisp crust with a moist chewy/creamy crumb that I associate with sourdough. But it isn't at all sour despite being almost 1/3 starter culture by weight. It doesn't really taste like "sourdough". It is moister and creamier than the standard ABI5MAD boule. It is much less resilient and much less sour than say, a &lt;a href="http://www.boudinbakery.com/"&gt;Bodin&lt;/a&gt; loaf. And a LOT less round. :-)&lt;br /&gt;&lt;br /&gt;Still, a very satisfying result for a first try. It's tasty.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGU3bPIY8dI/AAAAAAAAADY/xBIH9_0br3o/s1600-h/day0-loaf.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGU3bPIY8dI/AAAAAAAAADY/xBIH9_0br3o/s320/day0-loaf.jpg" alt="" id="BLOGGER_PHOTO_ID_5216636684436304338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGU3oxlJ1xI/AAAAAAAAADg/3h6Wuc2iMy4/s1600-h/day0-cut.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGU3oxlJ1xI/AAAAAAAAADg/3h6Wuc2iMy4/s320/day0-cut.jpg" alt="" id="BLOGGER_PHOTO_ID_5216636917022054162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Day 1 - A classic sourdough&lt;br /&gt;&lt;br /&gt;Today we are going to take a break from the experiment. Sort of. I decided that I need a more classic sourdough to compare the ABI5MAD loaves to, so I baked one.  We also had sourdough pancakes for breakfast. Yum.&lt;br /&gt;&lt;br /&gt;By the way, what's the deal with all of the "classic sourdough bread" recipes on the 'net that have baking soda in them? Yikes. This has none of that. Flour. Water. Salt.&lt;br /&gt;&lt;br /&gt;The classic bread is pure sourdough (no commercial yeast), about 6 1/2 cups of flour , 2 cups of water (both including the starter contents) and a tablespoon of kosher salt, for a single large round loaf. I took my time with it. Refreshed the starter overnight, then built it up with a couple cups of the flour for 8 hours. Then the usual (mixed ingredients, kneaded, raised, punched, formed loaf, raised, slashed, spritzed (the loaf rising was long enough that I wanted to make sure that the crust had a moist start in the oven), and baked with steam). It took all day. Most of it unattended, but still much more effort than ABI5MAD.&lt;br /&gt;&lt;br /&gt;As would be expected, the dough was much more manageable than the ABI5MAD dough. It was easy to knead (thank you Kitchen Aide), easy to form, and shockingly easy to slash well (the sticky dough for ABI5MAD is kind of hard to slash and I have gotten used to it).&lt;br /&gt;&lt;br /&gt;The loaf is pretty and almost perfectly formed, despite the fact that Deb almost leaned on it. The crumb is dense and moist and chewy, much more like a Boudin loaf. Sour enough to know for sure that you are eating sourdough, but not overwhelming. A highly pleasing bread.&lt;br /&gt;&lt;br /&gt;I would happily munch on either of these loaves, but the classic would be my choice if I wanted to make sandwiches. Or an impression. It is a fine bread. It wins for eating, no doubt.&lt;br /&gt;&lt;br /&gt;But the ABI5MAD dough is still in the fridge. I can bake more fresh tomorrow. Or the next day. It wins by a lot in the flexibility category. And being less perfect it has more character, I suppose.&lt;br /&gt;&lt;br /&gt;The photos may not do the classic loaf justice. I finished it so late that natural light wasn't an option without a tripod and the flash and angle of the shot make it look a bit flat and misshapen. It was neither.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGbj3OoFRhI/AAAAAAAAADo/dTvUB1GB1kM/s1600-h/day1-loaf.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGbj3OoFRhI/AAAAAAAAADo/dTvUB1GB1kM/s320/day1-loaf.jpg" alt="" id="BLOGGER_PHOTO_ID_5217107756313822738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGbkQ-hw_OI/AAAAAAAAADw/Xo_cgk6poWU/s1600-h/day1-cut.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGbkQ-hw_OI/AAAAAAAAADw/Xo_cgk6poWU/s320/day1-cut.jpg" alt="" id="BLOGGER_PHOTO_ID_5217108198668958946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Day 2&lt;br /&gt;&lt;br /&gt;Breakfast was a big slab of sourdough bread with butter. Well, OK, two big slabs. I couldn't help it. And a latte, of course. It occurred to me while munching on this lovely fresh bread that shelf life is something I should consider when evaluating the ABI5MAD dough. Sourdough and &lt;a href="http://en.wikipedia.org/wiki/Bread_starter"&gt;poolish&lt;/a&gt; made breads tend to keep longer, so will the ABI5MAD sourdough keep well? To test this, I'll have to bake a loaf big enough to last for a couple days. But not until we eat most of the giant classic loaf. So not today.&lt;br /&gt;&lt;br /&gt;Day 3&lt;br /&gt;&lt;br /&gt;No baking today. Leave me alone.&lt;br /&gt;&lt;br /&gt;(Well, OK, I made pizza dough, but that has nothing to do with this experiment. It's not even sourdough. Go away.)&lt;br /&gt;&lt;br /&gt;Day 4&lt;br /&gt;&lt;br /&gt;I took 2/3 of the remaining dough out to form a largish loaf. Right away I noticed that the dough was even wetter and stickier than usual. I managed to form a relatively attractive loaf. But as the loaf sat waiting to be baked, it started to "melt". &lt;span style="font-style: italic;"&gt;It just oozed itself away.&lt;/span&gt; I dusted, slashed, and baked the puddle anyway. The slashes completely disappeared, sealed back into the gooey dough.&lt;br /&gt;&lt;br /&gt;When I cut into it, it seemed surprisingly like normal bread. A decent cell structure. It smelled nice and "sourdoughy". It tasted OK too - at first. But the aftertaste is a sour that just won't go away. I really like sour sourdough, but this was way too much.&lt;br /&gt;&lt;br /&gt;This is what a completely failed experiment looks like:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGtlJCCgwWI/AAAAAAAAAEI/irLy8-m5XhY/s1600-h/day4-dough.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGtlJCCgwWI/AAAAAAAAAEI/irLy8-m5XhY/s320/day4-dough.jpg" alt="" id="BLOGGER_PHOTO_ID_5218375799079485794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SGtlFLVZfhI/AAAAAAAAAEA/zCb1fsFUGwE/s1600-h/day4-loaf.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_Z2EF6PGeXYw/SGtlFLVZfhI/AAAAAAAAAEA/zCb1fsFUGwE/s320/day4-loaf.jpg" alt="" id="BLOGGER_PHOTO_ID_5218375732855143954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGtlBCvghbI/AAAAAAAAAD4/9oco4PlBdqk/s1600-h/day4-cut.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_Z2EF6PGeXYw/SGtlBCvghbI/AAAAAAAAAD4/9oco4PlBdqk/s320/day4-cut.jpg" alt="" id="BLOGGER_PHOTO_ID_5218375661829260722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Even if I could solve the structural problems by adding more flour or something, I think the flavor problem makes this a lost cause. No five minute sourdough, sorry.&lt;br /&gt;&lt;br /&gt;But if you have the time, classic sourdough isn't all that hard and it is delicious and the basic ABI5MAD is very good and very flexible. I wanted to demonstrate how flexible by making sourdough pita tonight, but I won't be doing that with &lt;span style="font-style: italic;"&gt;this&lt;/span&gt; dough.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4964947941807186475?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4964947941807186475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4964947941807186475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4964947941807186475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4964947941807186475'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/five-minute-sourdough-bread-experiment.html' title='Five Minute Sourdough Bread: An Experiment'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/SGU3bPIY8dI/AAAAAAAAADY/xBIH9_0br3o/s72-c/day0-loaf.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-5320334421145845043</id><published>2008-06-27T06:15:00.002-04:00</published><updated>2009-11-04T05:33:21.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Digital Scales and Accuracy in Baking</title><content type='html'>If you read my &lt;a href="http://twentyonetimestwo.blogspot.com/2008/06/artisan-bread-in-five-minutes-day.html"&gt;review of Artisan Bread in 5 Minutes a Day&lt;/a&gt;, then you know I have been baking.&lt;br /&gt;&lt;br /&gt;Since I am a bona fide nerd, that means that I have been reading a lot about baking from all kinds of different sources.&lt;br /&gt;&lt;br /&gt;And &lt;span style="font-style: italic;"&gt;that&lt;/span&gt; my friends, means that I have repeatedly run across the &lt;span style="font-style: italic;"&gt;completely ridiculous&lt;/span&gt; assertion that weighing things in grams is somehow intrinsically more accurate than weighing things in ounces.&lt;br /&gt;&lt;br /&gt;So here is a little primer, let's call it "Balance 101".&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A balance is what scientists call a scale.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Units of weight measure are ways of describing how much of something you are weighing.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Units of measure for weight are always convertible to any other unit of measure for weight (1g = 0.03527oz). They have nothing to do with either precision or accuracy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Precision is the number of significant digits used for the representation (1.000g = 0.03527oz), or the degree to which fractional units of measure in different units can be considered to be the same, within the constraints of accuracy.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Accuracy is the degree to which the displayed precision reflects reality. (My balance reads 1g, but I know that really means 1g, plus or minus 1g, so there is somewhere between 0g and 2g of stuff being weighed).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;So where does this annoying assertion come from? Why do so many sources claim it?&lt;br /&gt;&lt;br /&gt;Well, let's look at the specific case of my kitchen balance. It has a precision when weighing in grams of 1g (that is, it displays no fractional grams), but a precision of 0.1oz when weighing in ounces. As long as the accuracy of the balance reflects the least precise of these measures (0.1oz is less precise because it is 2.8g), then it doesn't matter which unit of measure you use to weigh. That is, if the accuracy of the scale is plus or minus 3g, then it doesn't matter at all whether you weigh in grams or ounces.&lt;br /&gt;&lt;br /&gt;However if the actual accuracy of the balance is plus or minus 2g (or less) then it actually is better (more accurate) to weigh in grams.&lt;br /&gt;&lt;br /&gt;Notice that this has nothing to do with the fact that grams are more precise than ounces. It has to do with the fact that the firmware in the balance fails to represent the values in ounces with sufficient precision to reflect the actual accuracy.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-5320334421145845043?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/5320334421145845043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=5320334421145845043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5320334421145845043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5320334421145845043'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/digital-scales-and-accuracy-in-baking.html' title='Digital Scales and Accuracy in Baking'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-764749490304744286</id><published>2008-06-23T06:00:00.004-04:00</published><updated>2008-07-29T14:25:15.317-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Book Review: An Edge In The Kitchen</title><content type='html'>I am a knife enthusiast. Maybe even a knife &lt;span style="font-style: italic;"&gt;nut&lt;/span&gt;. I have read virtually every book ever published on the topics of knife making, knife smithing, and sharpening. I have made knives from kits and from blade blanks and by stock removal. I own a number of custom and semi-custom knives.&lt;br /&gt;&lt;br /&gt;I also love to cook and every knife stuck to the wall in my kitchen is sharp enough to shave the hairs on your arm.&lt;br /&gt;&lt;br /&gt;So I was delighted when &lt;a href="http://www.amazon.com/Edge-Kitchen-Ultimate-Guide-Knives/dp/0061188484/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1214215823&amp;amp;sr=8-1"&gt;An Edge In The Kitchen: The Ultimate Guide to Kitchen Knives: how to buy them, keep them razor sharp, and use them like a pro&lt;/a&gt; showed up in my Amazon recommended reading list.&lt;br /&gt;&lt;br /&gt;I highly recommend this book for any serious cook and also for any serious knife enthusiast. The knife enthusiast will learn a great deal about kitchen cutlery that he/she probably doesn't know (I learned quite a bit about the evolution of styles of kitchen knives - a lot of the knife literature if very heavily weighted towards hunting knives). The cook will learn knife techniques (there is nothing new here - serious cooks may not learn much) and most importantly sharpening and knife care.&lt;br /&gt;&lt;br /&gt;The author (Chad Ward) shares many of my biases about sharpening and he does a decent job of describing techniques that should produce excellent results. I strongly believe that people should sharpen their own knives. It is neither rocket science nor voodoo. When Alton Brown told me that I had to send my knives to a professional to get them sharpened, I threw my remote at the TV. I am sure that there are excellent sharpening services out there, but I have never personally experienced a "professional" edge that was even close to being as good as the edge I put on my knives. On the other hand I have overheard some shocking conversations in high end cutlery stores that have convinced me that there are lots of professional knife sharpeners who have no clue at all what they are doing and who likely ruin knives at a fabulous rate.&lt;br /&gt;&lt;br /&gt;Here is the book by section.&lt;br /&gt;Part one: Choose Your Weapon&lt;br /&gt;&lt;br /&gt;Here the author describes the various knife styles, tells you what you actually need (one big, one small), tells you how to get what you need on various budgets, and tells you what the options are if the sky is the limit. He also does a nice job covering the ins and outs of cutting boards. This section contained the most new material for me - I think I will definitely have to branch out from my "traditional german-made" chef's knife and my plastic cutting boards.&lt;br /&gt;&lt;br /&gt;Part two: Cut Loose&lt;br /&gt;&lt;br /&gt;This section is devoted to classical kitchen knife techniques. It is well done and the photographs make the subject clear. It is not comprehensive (you won't learn how to butcher a cow), but it has the vegetable and chicken basics.&lt;br /&gt;&lt;br /&gt;Part three: Stay Sharp&lt;br /&gt;&lt;br /&gt;This section is the better part of a hundred pages and it is pretty comprehensive. It covers everything from metallurgy basics, to edge geometry, to sharpening techniques and systems.&lt;br /&gt;&lt;br /&gt;I do have a couple of criticisms, though.&lt;br /&gt;&lt;br /&gt;At one point, the author disses round crock sticks in V-system knife sharpeners because, "It is difficult to produce a flat edge with a round stone." That is complete nonsense. The knife edge contacts and is pulled along the top arc of the cylinder. In geometric terms this is a straight line meeting another straight line. In my opinion the round crock sticks are better (for everything except serrations) because you can just turn them a bit to get a clean surface. I have several of these V crock stick sharpeners and they have become my favorite tools for keeping a good edge on my kitchen knives. My only complaint is that they don't offer enough choices in angle, but you can solve that with a drill press. The &lt;a href="http://www.kendelcutlery.com/sharpeners-and-steels-617.html"&gt;Idahone system&lt;/a&gt; with coarse and fine ceramic rods is hard to beat.&lt;br /&gt;&lt;br /&gt;My other criticism is that he doesn't make it plain enough what the difference between a good sharpening job and a bad one are. He does a nice job of describing how to get the planes of the blade to meet (raise a burr) and how to polish off the wire edge, but he fails to warn the reader that a single swipe at too steep an angle can undo half an hour of painstaking work. To sharpen successfully you have to understand the basic physics involved (which he explains well), but you also have to be very mindful and consistent.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-764749490304744286?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/764749490304744286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=764749490304744286' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/764749490304744286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/764749490304744286'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/book-review-edge-in-kitchen.html' title='Book Review: An Edge In The Kitchen'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6081575439831839462</id><published>2008-06-13T19:00:00.002-04:00</published><updated>2009-11-04T05:33:21.309-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yeast Bread'/><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Artisan Bread in Five Minutes a Day</title><content type='html'>So I picked up &lt;a href="http://www.amazon.com/Artisan-Bread-Five-Minutes-Revolutionizes/dp/0312362919"&gt;this book&lt;/a&gt; in Borders the other day. Not because I thought it was likely to be brilliant (this is a no knead, low effort approach to bread baking that breaks every baking rule I have ever heard), but because in the unlikely event it actually did work as advertised it would be &lt;span style="font-style: italic;"&gt;revolutionary&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Well, it's revolutionary.&lt;br /&gt;&lt;br /&gt;If I had bought it from Amazon as I often do, I would have seen the glowing reviews and I might have been more eager to try the method (notice that the few negative reviews are obviously from people who didn't actually &lt;span style="font-style: italic;"&gt;try&lt;/span&gt; it). But as it was it sat on my shelf until I found myself with a chunk of time to devote to it. Silly me, I didn't really need much of a chunk of time. You do need a couple of hours to prep the original dough (which goes in the fridge, to be used over and over), but most of the time is rising. Even the initial rising isn't critical, though, 2-5 hours. So just mix it up and go to the mall or something.&lt;br /&gt;&lt;br /&gt;I have made just two loaves from the "master recipe", both simple small boules with slashes on the top and they were both great. I made them on both ends of doneness spectrum and they were both very  good, although the more well done loaf had more character.&lt;br /&gt;&lt;br /&gt;The only trick to this is that handling the very wet dough is quite tricky. I was not nearly liberal enough with the flour on the first loaf and ended up with a near terminal case of cooks club hand before I finally managed to shape a loaf. If you decide to try this method, a little visual aid might be helpful:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zMxJgIpe38Q&amp;amp;hl=en"&gt;&lt;embed src="http://www.youtube.com/v/zMxJgIpe38Q&amp;amp;hl=en" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I used my kitchenaid with the dough hook, but from the video segment it appears that this was extreme overkill. I also used King Arthur bread flour, regardless of their advice. I will eventually try all purpose flour, I suppose, but my results were terrific, so I'm not really motivated to experiment.&lt;br /&gt;&lt;br /&gt;The loaves were a bit misshapen, because I had some trouble releasing them from the peel. I think this was because I didn't use enough flour and the dough was wet enough to seep around the cornmeal. But they had visual character. :-)&lt;br /&gt;&lt;br /&gt;I think the only real problem with this method is that it will tend to make flatish loaves because the dough is on the gooey side. But for breads where you can live with that I encourage you to give it a go.&lt;br /&gt;&lt;br /&gt;The author who came up with the idea, by the way, is not a baker. He is a doctor who's career has dabbled in things like IT.  Go figure.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6081575439831839462?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6081575439831839462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6081575439831839462' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6081575439831839462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6081575439831839462'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/artisan-bread-in-five-minutes-day.html' title='Artisan Bread in Five Minutes a Day'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-351938403470780624</id><published>2008-06-10T05:00:00.000-04:00</published><updated>2008-07-07T07:06:56.047-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Best. Hamburger. Ever.</title><content type='html'>I have had hamburgers on the brain lately. I just read &lt;a href="http://www.amazon.com/Hamburger-America-Cross-Country-Odyssey-Burgers/dp/0762431024/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1213020076&amp;amp;sr=8-1"&gt;Hamburger America&lt;/a&gt;, Bobby Flay's &lt;a href="http://www.foodnetwork.com/food/show_bt/0,2857,FOOD_26696,00.html"&gt;hamburger throw down&lt;/a&gt; was shown again, &lt;a href="http://www.cooksillustrated.com"&gt;Cooks Illustrated&lt;/a&gt; had an article on the best hamburger, and &lt;a href="http://www.foodnetwork.com/food/show_dv"&gt;Diners, Drive-Ins, and Dives&lt;/a&gt; has had a bunch of tasty looking burgers on it.&lt;br /&gt;&lt;br /&gt;Based on all of these sources (and more) and my own personal preferences, I made a mental list of characteristics an ultimate burger needs to have. Then I cooked it up. It was by far the best burger that I have ever had.&lt;br /&gt;&lt;br /&gt;1. The beef needs to be freshly ground. Most sources agree that fresh ground beef makes better burgers and I like my beef rare, so I am not going to trust ground beef from a mega-mart. I ground equal parts chuck steak and well marbled sirloin tips using the fine setting of my &lt;a href="http://www.amazon.com/KitchenAid-FGA-Grinder-Attachment-Mixers/dp/B00004SGFH"&gt;Kitchenaid grinder attachment&lt;/a&gt;. Some sources suggest grinding multiple times to evenly mix the fat, but I didn't want overly ground mush. Since I was using a mixer anyway, I mixed the beef up using the paddle after grinding.&lt;br /&gt;&lt;br /&gt;2. Thick patty that is very pink in the middle. The first time I can remember thinking that hamburgers were really good food was the first time that I ate at Flaky Jake's. As far as I know Flaky Jake's is long dead, but it was a place kind of like Fuddrucker's, only better. You could watch them cut up and grind the meat and bake the buns while you were standing in line. That first Flaky Jake's burger was a nice thick rare patty and I have never had a burger that I thought was &lt;span style="font-style: italic;"&gt;exceptional&lt;/span&gt; that didn't have that characteristic since.&lt;br /&gt;&lt;br /&gt;3. Loosely packed patty. This was my first effort at loose packing, but all of the most reputable sources agree that it makes the burger better because it gives the juices a place to gather. After this burger, I'm sold. I guess my nice aluminum patty mold is junk now.&lt;br /&gt;&lt;br /&gt;4. Appropriate meat to bun ratio. I had a burger the other day at &lt;a href="http://www.piccadillypub.com/"&gt;Picadilly Pub&lt;/a&gt; which should have been decent, but was actually very disappointing. The burger was medium rare and good beef. The bun was nice. But the bun was too big for the patty and there weren't enough tomato slices to get tomato in every bite. My son's kid's meal burger was even worse - same bun, much smaller patty. Things have to be in proportion. I didn't want to bust my diet completely for my ideal burger, so I opted for small classic Pepperidge Farms buns. In an ideal world I would like a bun with a bit of a chew to the exterior crust, but not too much, with a fluffy interior. That's what I remember from Flaky Jake's, actually. But I think I would have to bake that myself. I made the patty about an 3/4ths inch thick and a bit bigger around than the bun.&lt;br /&gt;&lt;br /&gt;5. Mustard. Yellow mustard. Lots. I kind of like Dairy Queen hamburgers - I always have. I have decided that the reason I prefer them is their liberal use of yellow mustard. It makes an otherwise ordinary uninteresting burger tangy and delicious.&lt;br /&gt;&lt;br /&gt;6. No mayonnaise or ketchup. I have almost always put both on my burgers. But mayonnaise is really a remedy for a dry burger and ketchup is really a remedy for bad (or absent) tomatoes. I resolved not to need either.&lt;br /&gt;&lt;br /&gt;7.  A good crust on the meat. The &lt;a href="http://en.wikipedia.org/wiki/Maillard_reaction"&gt;Maillard reaction&lt;/a&gt; reigns supreme when it comes to developing flavors in food. Especially in meat. I think one of the reasons burgers work so well is that the ground beef exposes more surface area to crisp up. For this reason I eschewed my grill (in 94 degree weather!) in favor of cast iron. I have no regrets. Bobby says that seasoning helps the crust form. I did salt before crusting and fresh ground black pepper after.&lt;br /&gt;&lt;br /&gt;8. Crisp iceberg lettuce. From the middle portion of the head (not the outside, not the center). It's all about the texture.&lt;br /&gt;&lt;br /&gt;9. Ripe tomatoes. Enough slices to cover the patty.&lt;br /&gt;&lt;br /&gt;10. Cheddar cheese. Sharp. American cheese has its place on cheeseburgers (and IMO nowhere else), but I prefer cheddar. The best pre-sliced sharp cheddar I have found comes from &lt;a href="http://www.cabotcheese.com/"&gt;Cabot&lt;/a&gt;. I will of course repeat this experiment with blue cheese. Stilton burger anyone?&lt;br /&gt;&lt;br /&gt;This burger turned out amazing. I was in a completely zen place while eating it. There was just me and the burger and the eating. Yum.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-351938403470780624?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/351938403470780624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=351938403470780624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/351938403470780624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/351938403470780624'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/best-hamburger-ever.html' title='Best. Hamburger. Ever.'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6698139453696569333</id><published>2008-06-09T06:35:00.006-04:00</published><updated>2008-07-07T07:06:56.048-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Fresh Mint Chocolate Chip Ice Cream</title><content type='html'>Our garden is in a state of extreme neglect. We bought the house partly because it had this wonderful 10'X20' raised bed garden and we had visions of farming wonderful produce. Unfortunately we only had a few real successes. There was the year of 10 varieties of basil (and hence fantastic chicken kaprow) and the year of endless fresh cucumber salad. But mostly the critters ate our veggies. We grew some mighty nice pumpkins, but I don't believe we ever managed to harvest one. It has been neglected for about 4 years now, a situation that isn't likely to change with a toddler in the house. There are trees growing in there with trunks two inches or more in diameter.&lt;br /&gt;&lt;br /&gt;But there are still two "crops" that keep coming back. The catnip and the mint. We have a huge bumper crop of both at the moment.&lt;br /&gt;&lt;br /&gt;The problem with mint is that I have never been able to figure out what to do with the stuff. I have made the occasional cup of mint tea and used it as a garnish a few times, but generally it just stays there and goes to seed (hence the bumper crop). I love mint, but I consume most of it in the form of Altoids and flavored desserts (generally made from an extract).&lt;br /&gt;&lt;br /&gt;When I found &lt;a href="http://www.seriouseats.com/recipes/2008/06/fresh-mint-chocolate-chip-ice-cream-recipe.html"&gt;this recipe&lt;/a&gt;, I was excited to have something to use up some of these weeds. Mint chocolate chip ice cream is my second favorite (after vanilla, of course). I have very fond memories of the Mint Truffle sundaes that I used to get with my dad at the now sadly defunct Bakers on Lake City Way in Seattle, so I expect I will have to try this with some kind of dark chocolate mint truffle in place of the chocolate at some point.&lt;br /&gt;&lt;br /&gt;I have modified the recipe, because steeping the leaves in the milk, but removing them before making the custard makes a lot more sense to me. It avoids having to temper the yolks and it makes stirring and watching the custard much easier. It is clear that this method would work for lots of different infusions, so I will have to do some experimenting this summer.&lt;br /&gt;&lt;br /&gt;This stuff is &lt;span style="font-weight: bold;"&gt;seriously good&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;Fresh Mint Chocolate Chip Ice Cream&lt;br /&gt;&lt;br /&gt;6 large egg yolks&lt;br /&gt;3/4 cup sugar&lt;br /&gt;2 cups whole milk&lt;br /&gt;2 cups fresh mint leaves, clean, dry (salad spinner), and loosely packed (or more, put as much in as you can get submerged in the milk while helping with a spatula)&lt;br /&gt;1 cup heavy cream&lt;br /&gt;4 ounces semisweet chocolate, coarsely chopped&lt;br /&gt;&lt;br /&gt;1.     In heavy medium saucepan over moderately low heat, stir together milk, 1/4 cup sugar, and mint. Heat until steaming but not boiling, then remove from heat.&lt;br /&gt;&lt;br /&gt;2.    Allow the leaves to steep until cool enough to handle and not cook egg yolk. Remove the leaves, wringing them out well.&lt;br /&gt;&lt;br /&gt;3.    Whisk together egg yolks and 1/2 cup sugar and add them to the saucepan.&lt;br /&gt;&lt;br /&gt;4.    Place over low heat, and cook, stirring constantly, until mixture thickens enough to coat back of spoon (finger drawn across spoon will leave clear path), 5 to 6 minutes total (do not let boil or custard will curdle). Strain through fine-mesh sieve into large bowl. Whisk in heavy cream. Cover and chill until cold, at least 6 hours or overnight.&lt;br /&gt;&lt;br /&gt;5.    Process custard in ice cream maker, adding chopped chocolate during last minute of churning. Transfer to airtight container and freeze until hard, about 3 hours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6698139453696569333?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6698139453696569333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6698139453696569333' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6698139453696569333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6698139453696569333'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/fresh-mint-chocolate-chip-ice-cream.html' title='Fresh Mint Chocolate Chip Ice Cream'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-455020178890417653</id><published>2008-06-07T01:00:00.000-04:00</published><updated>2008-07-07T07:06:23.132-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Hacking GPS and Google Maps</title><content type='html'>OK, maybe not quite hacking. Still, this is a compendium of things that I have learned about my Garmin Nuvi 770, GPSes in general, and tools that work with them, especially Google Maps. Since half the people I know seem to have a new Nuvi, maybe someone will find some of this useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Extracting current data&lt;/span&gt;&lt;br /&gt;The current favorites, routes, and so on are always available for export from a file called current.gpx. You could use this data to transfer favorites between units, or to convert favorites to custom POI, or to show your routes in Google Earth, or whatever. A very handy bit of data to be able to get to. As far as I can determine, this file is created exclusively for the purpose of having a generic way to export data so don't edit it. It is my guess that the generation of this file is what is happening when the progress bar is visible after plugging the Nuvi into a computer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Data Transfer&lt;/span&gt;&lt;br /&gt;Almost all of the data that is in the unit can be transferred to an SD card if you want. Including the built-in data. I've been told you can even transfer the maps if you rename them, but I haven't had the courage to try that. Moving data works great with added content, including MadMaps. And of course you can always just put it on the SD card in the first place for things like MP3 and Audible. This is useful because the Nuvi 770 doesn't come with a huge excess of memory.&lt;br /&gt;&lt;br /&gt;You can also delete unused language files and other crap from the unit entirely.&lt;br /&gt;&lt;br /&gt;Back everything up, of course, or you are an idiot.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Adding Routes&lt;/span&gt;&lt;br /&gt;You can add gpx files to the gpx directory, then when you turn on the unit tell it to import the file. These will go into your routes.&lt;br /&gt;Tools/My Data/Import Route from File&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;GPX file format and Garmin&lt;/span&gt;&lt;br /&gt;Garmin has a bunch of &lt;a href="http://www.garmin.com/xmlschemas/GpxExtensions/v3/GpxExtensionsv3.xsd"&gt;extensions&lt;/a&gt; to the gpx standard that are worth knowing about. If you format your data this way you can get custom POIs with phone numbers that can be dialed, custom proximity alerts, and so on.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;POI display&lt;/span&gt;&lt;br /&gt;Custom POI, are never displayed in 3D map view on the Nuvi 770. To see custom POI, you have to be in a 2D view (like "track up") and you have to be zoomed in pretty close (300 ft). Built-in POI are only displayed in map browse view (that might not be the right term, but the view you get when you tap the map and it shows a flat 2D view that doesn't move). Favorites are always displayed, but there is a limit to how many you can have. My wife's StreetPilot has an option to always display icons for custom POI - I miss that option on my Nuvi. It is always fun to drive into Boston and see the approaching cloud of Starbucks.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Google Maps Routes to GPX (with turn by turn routing)&lt;/span&gt;&lt;br /&gt;Use this &lt;a href="http://bevhoward.com/G2WPT.htm"&gt;simple javascript tool&lt;/a&gt;. This is extremely handy for creating custom routes since you can drag Google Maps routes around until they follow the roads you want. For scenic routes or motorcycle routes or the like, this is your friend.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Google Maps Result Points As Waypoints (favorites, not custom POI)&lt;/span&gt;&lt;br /&gt;Use the Google Maps "Send To" function. This requires that you have the Garmin Communicator installed. There is a description of the whole procedure &lt;a href="http://my.garmin.com/locate/google-sendtoGPSHelp.htm"&gt;on the Garmin site&lt;/a&gt; and a &lt;a href="http://www.youtube.com/watch?v=N_p1x-fL2zc"&gt;video&lt;/a&gt; on YouTube.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Creating custom POI with Google Maps&lt;/span&gt;&lt;br /&gt;One of the best ways to create custom POIs is with Google Maps using the My Maps functionality. Suppose that you have a hankering to try out some diners, so you go to Google Maps, center it on your home, and type "diner" into the search box. You pick interesting looking diners from the results, click on the flag on the map and click the "Save to My Maps" link. You might end up with something &lt;a href="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=102437472669334442804.00044ee9bbc7ace6c7aeb&amp;amp;z=10"&gt;like this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Automated Method&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can automate a lot of the work with &lt;a href="http://www.takitwithme.com/"&gt;TakeItWithMe&lt;/a&gt;, which I only discovered after I figured out the whole process. Even using this tool, you may want to clean up some of the text, but it does a decent job.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Manual Method (for the curious)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Notice that the My Maps page has a link to "View in Google Earth". This is a link to a KML file, but unfortunately it is an indirect KML file. Right-click on this and save a local copy. When you open it in a text editor you will see a line something like:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&amp;lt;link&amp;gt;&lt;br /&gt;&amp;lt;href&amp;gt;http://maps.google.com/maps/ms?hl=en&amp;amp;amp;ie=UTF8&amp;amp;amp;oe=UTF8&amp;amp;amp;msa=0&amp;amp;amp;msid=102437472669334442804.00044ee9bbc7ace6c7aeb&amp;amp;amp;output=kml&amp;lt;/href&amp;gt;&lt;br /&gt;&amp;lt;/link&amp;gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;This is a link to the real KML file, but the link is XML encoded, so you have to clean it up by changing "&amp;amp;amp;" to "&amp;amp;" and so on. You can use the cleaned up URL to get the &lt;a href="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;oe=UTF8&amp;amp;msa=0&amp;amp;msid=102437472669334442804.00044ee9bbc7ace6c7aeb&amp;amp;output=kml"&gt;real KML file&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are a &lt;a href="http://www.gpsvisualizer.com/convert"&gt;number&lt;/a&gt; of &lt;a href="http://www.gpsbabel.org/"&gt;tools&lt;/a&gt; that can convert that KML file into something useful. I convert it to a csv file so that I can do some clean up of the text. The combination of a spreadsheet (e.g. Excel) and a text editor that does regular expression search and replace (e.g. &lt;a href="http://www.jedit.org/"&gt;jEdit&lt;/a&gt;) will make quick work of whatever changes you need to make. Keep in mind that you usually have to swap longitude/latitude columns because the Garmin POILoader expects them in a specific order. In this exercise you are aiming for something that looks like:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:78%;"&gt;-71.6122820,42.2680170,"South Street Diner","40 South St, Westborough, MA 01581 : (508) 870-0101"&lt;br /&gt;-71.4331050,42.2753870,"Lloyd's Diner","184 Fountain St, Framingham, MA 01702 : (508) 879-8750"&lt;br /&gt;-71.1579900,42.3710520,"Deluxe Town Diner","627 Mount Auburn St, Watertown, MA 02472 : (617) 926-8400"&lt;br /&gt;-71.0761800,42.3370780,"Mike's City Diner","1714 Washington St, Boston, MA 02118 : (617) 267-9393"&lt;br /&gt;-71.0576100,42.3496970,"Boston Diner Inc","178 Kneeland St, Boston, MA 02111 : (617) 350-0028"&lt;br /&gt;-71.7924040,42.2603340,"Kenmore Diner","250 Franklin St, Worcester, MA 01604 : (508) 792-5125"&lt;br /&gt;-71.2841490,41.9438210,"Morin's Diner","16 S Main St, Attleboro, MA 02703 : (508) 222-9875"&lt;br /&gt;-71.4843220,41.9914170,"Patriots Diner","65 Founders Dr, Woonsocket, RI 02895 : (401) 765-6900"&lt;br /&gt;-71.5169070,42.1428030,"Ted's Diner","64 Main St, Milford, MA 01757 : (508) 634-1467"&lt;br /&gt;-71.1780010,42.2340240,"50'S Diner","5 Commercial Cir # 101, Dedham, MA 02026 : (781) 326-1955"&lt;br /&gt;-71.0669330,42.3269120,"Victoria Diner","1024 Massachusetts Ave, Boston, MA 02118 : (617) 442-5965"&lt;br /&gt;-71.2310410,42.3770640,"Wilson's Diner Inc","507 Main St, Waltham, MA 02452 : (781) 899-0760"&lt;br /&gt;-71.1220090,42.3907700,"Andy's Diner","2030 Massachusetts Ave., Cambridge, MA 02140 : (617) 497-1444"&lt;br /&gt;-71.8648150,42.1164820,"Carl's Oxford Diner","291 Main St, Oxford, MA 01540 : (508) 987-8770"&lt;br /&gt;-71.4258650,41.8242380,"Haven Brothers Diner","72 Spruce St, Providence, RI 02903 : (401) 861-7777"&lt;br /&gt;-70.9469680,41.8953630,"Dave's Diner","390 W Grove St, Middleboro, MA 02346 : (508) 923-4755"&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;Now just create a custom icon (if you want) and a custom alert tone (if you want) and load it up with your other custom POIs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Hacking Sites Using Google API&lt;/span&gt;&lt;br /&gt;There are lots of sites these days that are using bits of the Google Maps API. They often have a KML file at the heart of the map they are displaying and you can get at that by looking at the page source. Here is an &lt;a href="http://www.roadfooddigest.com/IceCream/"&gt;example from roadfooddigest.com&lt;/a&gt;. If you look at the source for that page, you will see a reference to &lt;a href="http://www.roadfooddigest.com/icecream/icecream.xml"&gt;this xml (kml) file&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can obviously directly use this KML file to create POI if you want to, following the manual method I just described.&lt;br /&gt;&lt;br /&gt;But you can also do more cool stuff with Google Maps. Copy the URL for the KML file onto the clipboard, open up Google Maps, and paste the link into the search bar. Go ahead, I'll wait. Neat, huh? Believe it or not, this works with Google Maps Mobile on the blackberry as well.&lt;br /&gt;&lt;br /&gt;You can also create a My Map based on KML data (create a new map, click the import link, and paste the KML URL or browse to the KML file).&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-455020178890417653?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/455020178890417653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=455020178890417653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/455020178890417653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/455020178890417653'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/hacking-gps-and-google-maps.html' title='Hacking GPS and Google Maps'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7054820951706149434</id><published>2008-06-06T06:50:00.004-04:00</published><updated>2008-07-07T07:12:23.323-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Hamburger America POI</title><content type='html'>Here are the coordinates for the hamburger places mentioned in &lt;a href="http://www.amazon.com/Hamburger-America-Cross-Country-Odyssey-Burgers/dp/0762431024/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1212749691&amp;amp;sr=8-1"&gt;Hamburger America&lt;/a&gt;. This list is in no way a substitute for the book, which I recommend.&lt;br /&gt;&lt;br /&gt;Any errors, especially geocoding errors, are mine. A couple of places required some research to get the coordinates (e.g. Meers Store) and I haven't been able to verify them all. In addition there are a few places that have multiple locations - in these cases the only location listed is the one from the book.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;-80.117304,26.0184,Le Tub,"1100 North Ocean Drive, Hollywood, FL 33019 : 954-921-9425"&lt;br /&gt;-95.025281,29.561779,Tookie's,"1202 Bayport Blvd., Seabrook, TX 77586 : 281-474-3444"&lt;br /&gt;-95.383413,29.749837,Lankford Grocery,"88 Dennis Street, Houston, TX 77006 : 713-522-9555"&lt;br /&gt;-95.430217,29.778471,Christian's Tailgate Bar and Grill,"7340 Washington Avenue, Houston, TX 77007 : 713-864-9744"&lt;br /&gt;-90.061729,29.96443,Port of Call,"838 Esplanade Avenue, New Orleans, LA 70116 : 504-523-0120"&lt;br /&gt;-90.153819,30.006054,Bozo's,"3117 21st Street, Metairie, LA 70002 : 504-831-8666"&lt;br /&gt;-97.738046,30.266593,Casino El Camino,"517 East 6th Street, Austin, TX 78701 : 512-469-9330"&lt;br /&gt;-97.750989,30.270245,Hut's Hamburgers,"807 West 6th Street, Austin, TX 78703 : 512-472-0693"&lt;br /&gt;-97.742167,30.293632,Dirty Martin's Place,"2808 Guadalupe Street, Austin, TX 78705 : 512-477-3173"&lt;br /&gt;-97.393206,32.737833,Kincaid's Hamburgers,"4901 Camp Bowie Blvd., Fort Worth, TX 76107 : 817-732-2881"&lt;br /&gt;-117.251262,32.747164,Hodad's,"5010 Newport Ave, Ocean Beach, CA 92107 : 619-224-4623"&lt;br /&gt;-117.134465,32.748599,Western Steakburger,"2730 University Ave., San Diego, CA 92104 : 619-296-7058"&lt;br /&gt;-96.787063,32.849527,Burger House,"6913 Hillcrest Avenue, Dallas, TX 75205 : 214-361-0370"&lt;br /&gt;-84.33487,33.747362,Ann's Snack Bar,"1615 Memorial Drive SE, Atlanta, GA 30317 : 404-687-9207"&lt;br /&gt;-88.490908,33.98765,Bill's Hamburgers,"310 North Main Street, Amory, MS 38821 : 662-256-2085"&lt;br /&gt;-118.427721,34.040607,The Apple Pan,"10801 W. Pico Blvd, Los Angeles, CA 90064 : 310-475-3585"&lt;br /&gt;-118.420528,34.044164,Marty's,"10558 West Pico Blvd., Los Angeles, CA 90064 : 310-836-6944"&lt;br /&gt;-118.370141,34.09079,Irv's Burger,"8289 Santa Monica Blvd., West Hollywood, CA 90046 : 323-650-2456"&lt;br /&gt;-118.131526,34.136008,Pie 'N Burger,"913 E. California Blvd., Pasadena, CA 91106 : 626-795-1123"&lt;br /&gt;-89.43399,34.767366,Philip's Grocery,"541 East Van Dorn Ave., Holly Springs, MS 38634 : 662-252-4671"&lt;br /&gt;-96.673749,34.774694,Folger's Drive-Inn,"406 East Main St., Ada, OK 74820 : 580-332-9808"&lt;br /&gt;-82.392948,34.864311,Northgate Soda Shop,"918 North Main Street, Greenville, SC 29609 : 864-235-6770"&lt;br /&gt;-85.304754,35.033842,Zarzour's Cafe,"1627 Rossville Ave, Chattanooga, TN 37408 : 423-266-0424"&lt;br /&gt;-97.93849,35.052286,J&amp;amp;W Grill,"501 West Choctaw Ave., Chickasha, OK 73018 : 405-224-9912"&lt;br /&gt;-90.051677,35.139413,Dyer's Burgers,"205 Beale Street, Memphis, TN 38103 : 901-527-3937"&lt;br /&gt;-80.791883,35.203914,South 21,"3101 East Independence Blvd., Charlotte, NC 28205 : 704-377-4509"&lt;br /&gt;-96.91928,35.327615,Hamburger King,"322 E. Main St., Shawnee, OK 74801 : 405-878-0488"&lt;br /&gt;-97.954975,35.531281,Sid's Diner (Onion Fried Burger),"300 South Choctaw, El Reno, OK 73036 : 405-262-7757"&lt;br /&gt;-97.95256,35.531282,Johnnie's Grill,"301 South Rock Island, El Reno, OK 73036 : 405-262-4721"&lt;br /&gt;-97.953848,35.531282,Robert's Grill (Onion Fried Burger),"300 South Bickford, El Reno, OK 73036 : 405-262-1262"&lt;br /&gt;-105.898277,35.583718,Bobcat Bite (chile burger),"420 Old Las Vegas Highway, Santa Fe, NM 87505 : 505-983-5319"&lt;br /&gt;-78.648083,35.780893,Char-Grill,"618 Hillsborough Street, Raleigh, NC 27603 : 919-821-7636"&lt;br /&gt;-86.802406,36.130566,Brown's Diner,"2102 Blair Boulevard, Nashville, TN 37212 : 615-269-5509"&lt;br /&gt;-86.807891,36.148084,Rotier's Restaurant,"2412 Elliston Place, Nashville, TN 37203 : 615-327-9892"&lt;br /&gt;-80.607374,36.499644,Snappy Lunch,"125 North Main Street, Mount Airy, NC 27030 : 336-786-4931"&lt;br /&gt;-79.938875,37.270595,Texas Tavern,"114 W. Church Avenue, Roanoke, VA 24011 : 540-342-4825"&lt;br /&gt;-122.431725,37.728511,Joe's Cable Car Restaurant,"4320 Mission Street, San Francisco, CA 94112 : 415-334-6699"&lt;br /&gt;-122.465006,38.501663,Taylor's Automatic Refresher,"933 Main Street, St. Helena, CA 94574 : 707-963-3486"&lt;br /&gt;-121.490155,38.581195,Jim-Denny's,"816 12th Street, Sacramento, CA 95814 : 916-443-9655"&lt;br /&gt;-97.610145,38.840949,Cozy Inn Hamburgers,"108 North 7th Street, Salina, KS 67401 : 785-825-2699"&lt;br /&gt;-77.028716,38.917079,Ben's Chili Bowl,"1213 U Street NW, Washington, DC 20009 : 202-667-0909"&lt;br /&gt;-94.585526,39.041996,Winstead's,"101 Emanuael Cleaver II Blvd, Kansas City, MO 6411 : 816-753-2244"&lt;br /&gt;-95.706223,39.051415,Bobo's Drive In,"2300 SW 10th Ave, Topeka, KS 66604 : 785-234-4511"&lt;br /&gt;-94.588804,39.088435,Town Topic,"2021 Broadway Street, Kansas City, MO 64108 : 816-842-2610"&lt;br /&gt;-104.962421,39.437279,Bud's Bar,"5453 Manhart Street, Sedalia, CO 80135 : 303-688-9967"&lt;br /&gt;-84.288718,39.641525,Hamburger Wagon,"12 East Central Ave., Miamisburg, OH 45342 : 937-847-2442"&lt;br /&gt;-82.9912,39.939507,Thurman Cafe (Thurman Burger),"183 Thurman Ave., Columbus, OH 43206 : 614-443-1570"&lt;br /&gt;-82.878537,40.018969,Gahana Grill,"82 Granville Street, Gahanna, OH 43230 : 614-476-9017"&lt;br /&gt;-83.762365,40.108587,Crabill's Hamburgers (grease sliders),"727 Miami Street, Urbana, OH 43078 : 937-653-5133"&lt;br /&gt;-74.739426,40.211125,Rossi's Bar &amp;amp; Grill,"501 Morris Ave., Trenton, NJ 08611 : 609-394-9089"&lt;br /&gt;-79.950827,40.462668,Tessaro's,"4601 Liberty Avenue, Pittsburgh, PA 15224 : 412-682-6809"&lt;br /&gt;-74.00378,40.738821,Corner Bistro,"331 West 4th Street, New York, NY 10014 : 212-242-9502"&lt;br /&gt;-84.107005,40.740246,Kewpie,"111 North Elizabeth Street, Lima, OH 45801 : 419-228-1778"&lt;br /&gt;-73.642911,40.757216,Hildebrandt's,"84 Hillside Avenue, Williston Park, NY 11596 : 516-741-0608"&lt;br /&gt;-73.968323,40.759,P.J. Clarke's,"915 Third Avenue, New York, NY 10022 : 212-317-1616"&lt;br /&gt;-111.899554,40.772049,Crown Burgers,"118 North 300 West, Salt Lake City, UT 84103 : 801-532-5300"&lt;br /&gt;-83.650418,41.035527,Wilson's Sandwich Shop,"600 S. Main St., Findlay, OH 45840 : 419-422-5051"&lt;br /&gt;-95.920771,41.159921,Stella's Hamburgers,"106 Galvin Road South, Bellevue, NE 68005 : 402-291-6088"&lt;br /&gt;-72.931521,41.306944,Louis' Lunch (on toast),"263 Crown St., New Haven, CT 06510 : 203-562-5507"&lt;br /&gt;-72.930283,41.310778,Yankee Doodle Coffee Shop,"258 Elm Street, New Haven, CT 06511 : 203-865-1074"&lt;br /&gt;-72.783276,41.54681,Ted's Restaurant (Steamed),"1044 Broad St., Meriden, CT 06450 : 203-237-6660"&lt;br /&gt;-73.37938,41.65486,Clamp's Hamburger Stand,"Route 202 (Near Marbledale, CT), New Milford, CT 06776 : No Phone"&lt;br /&gt;-91.531414,41.663849,Hamburg Inn No. 2,"214 North Linn Street, Iowa City, IA 52245 : 319-337-5512"&lt;br /&gt;-85.995655,41.66681,Hennies,"1743 West Lusher Ave, Elkhart, IN 46517 : 574-522-9101"&lt;br /&gt;-87.675431,41.721229,Top Notch Beefburger Shop,"2116 West 95th Street, Chicago, IL : 773-445-7218"&lt;br /&gt;-86.737016,41.797118,Redamak's,"616 East Buffalo Street, New Buffalo, MI 49117 : 269-469-4522"&lt;br /&gt;-87.624188,41.890197,Billy Goat Tavern,"430 N. Lower Michigan, Chicago, IL 60611 : 312-222-1525"&lt;br /&gt;-92.907829,42.047712,Taylors Maid-Rite (loosemeats),"106 South 3rd Ave, Marshalltown, IA 50158 : 641-753-9684"&lt;br /&gt;-83.744138,42.27524,Krazy Jim's Blimpy Burger,"551 South Division Street, Ann Arbor, MI 48104 : 734-663-4590"&lt;br /&gt;-83.267391,42.301089,Miller's Bar,"23700 Michigan Ave, Dearborn, MI 48124 : 313-565-2577"&lt;br /&gt;-71.116211,42.372476,Mr. Bartley's Burger Cottage,"1246 Massachusetts Ave, Cambridge, MA 02138 : 617-354-6559"&lt;br /&gt;-88.805679,43.005208,Peterson's Hamburger Stand and Ice Cream Parlor,"200 East Racine Street, Jefferson, WI 53549 : 920-674-3637"&lt;br /&gt;-89.395782,43.072306,Dotty Dumpling's Dowry,"317 North Frances St., Madison, WI 53703 : 608-259-0000"&lt;br /&gt;-89.390047,43.075022,The Plaza Tavern,"319 N. Henry Street, Madison, WI 97213 : 608-255-6592"&lt;br /&gt;-70.759378,43.077309,Gilley's PM Lunch,"175 Fleet Street, Portsmouth, NH 03801 : 603-431-6343"&lt;br /&gt;-87.917159,43.100851,Solly's Grille,"4629 North Port Washington Road, Milwaukee, WI 53212 : 414-332-8808"&lt;br /&gt;-96.726134,43.545892,Hamburger Inn,"111 East 10th Street, Sioux Falls, SD 57104 : 605-332-5412"&lt;br /&gt;-70.298066,43.744913,Harmon's Lunch,"144 Gray Road, Falmouth, ME 04105 : 207-797-9857"&lt;br /&gt;-96.798754,44.30947,Nick's Hamburger Shop,"427 Main Avenue, Brookings, SD 57006 : 605-692-4324"&lt;br /&gt;-93.247796,44.897823,The 5-8 Club,"5800 Cedar Ave South, Minneapolis, MN 55417 : 612-823-5858"&lt;br /&gt;-93.247567,44.939343,Matt's Bar,"3500 Cedar Ave South, Minneapolis, MN 55407 : 612-722-7072"&lt;br /&gt;-122.718188,45.41116,Giant Drive-In,"15840 Boones Ferry Road, Lake Oswego, OR 97035 : 503-636-0255"&lt;br /&gt;-122.612326,45.548472,Stanchi's Tavern,"4915 NE Fremont Street, Portland, OR 97213 : 503-281-2322"&lt;br /&gt;-122.916826,45.596321,Helvetia Tavern,"10275 NW Helvetia Rd., Hillsboro, OR 97124 : 503-647-5286"&lt;br /&gt;-112.53808,45.990089,Matt's Place Drive-In,"2339 Placer St., Butte, MT 59701 : 406-782-8049"&lt;br /&gt;-113.995355,46.871236,The Missoula Club,"139 West Main St., Missoula, MT 59802 : 406-728-3740"&lt;br /&gt;-122.328069,47.661245,Dick's Drive-In,"111 N.E. 45th Street, Seattle, WA 98105 : 206-632-5125"&lt;br /&gt;-72.484621,41.786098,Shady Glen (Bernice Original),"840 Middle Turnpike E, Manchester, CT 06040 : 860-649-4245"&lt;br /&gt;-75.547549,39.795675,Charcoal Pit,"2600 Concord Pike, Wilmington, DE 19803 : 302-478-2165"&lt;br /&gt;-77.001601,38.886625,Tune Inn,"331 Pennsylvania Ave SE, Washington, DC 20003 : 202-543-2725"&lt;br /&gt;-116.784095,47.673756,Hudson's Hamburgers,"207 E Sherman Ave, Coeur D'Alene, ID 83814 : 208-664-5444"&lt;br /&gt;-87.892954,39.190699,Moonshine Store,"6017 E 300th Rd, Annapolis, IL 62413 : 618-569-9200"&lt;br /&gt;-72.601572,42.096449,White Hut,"280 Memorial Ave, West Springfield, MA 01089 : 413-736-9390"&lt;br /&gt;-74.038528,40.889334,White Manna Hamburgers (sliders),"358 River St, Hackensack, NJ 07601 : 201-342-0914"&lt;br /&gt;-106.869362,33.917736,Owl Bar &amp;amp; Cafe,"77 US Highway 380, San Antonio, NM 87832 : 505-835-9946"&lt;br /&gt;-73.907224,40.745225,Donovan's Pub,"57-24 Roosevelt Ave., Queens, NY 11377 : 718-429-9339"&lt;br /&gt;-98.581696,34.782228,The Meers Store &amp;amp; Restaurant (long horn beef),"Highway 115, Meers, OK 73501 : 580-429-8051"&lt;br /&gt;-75.315698,39.897004,Charlie's Hamburgers,"336 Kedron Ave, Folsom, PA 19033 : 610-461-4228"&lt;br /&gt;-122.872637,47.04592,Eastside Big Tom,"2023 4th Ave E, Olympia, WA 98506 : 360-357-4852"&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7054820951706149434?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7054820951706149434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7054820951706149434' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7054820951706149434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7054820951706149434'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/06/hamburger-america-poi.html' title='Hamburger America POI'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3915904788404927988</id><published>2008-05-28T14:03:00.002-04:00</published><updated>2008-07-07T07:06:23.133-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>The Dark Side of REST?</title><content type='html'>My organization is considering a move from a SOAP based SOA to a RESTful SOA. To be sure there are advantages and disadvantages to both, but I just encountered a problem with REST that I hadn't really pondered before.&lt;br /&gt;&lt;br /&gt;I have used RESTful APIs before, but only to play with. I have messed with the Google Docs API using both REST (from Java and J2ME) and the Java libraries and done some other playing around. But &lt;span style="font-style: italic;"&gt;I have never used a RESTful API in anger before.&lt;/span&gt; I have never really used one to solve a problem.&lt;br /&gt;&lt;br /&gt;Well, I just did. And I found the experience unexpectedly enlightening.&lt;br /&gt;&lt;br /&gt;The problem is a typical one for a geek like me. I recently got a book, &lt;a href="http://www.amazon.com/Hamburger-America-Cross-Country-Odyssey-Burgers/dp/0762431024/ref=pd_ybh_19?pf_rd_p=280800601&amp;amp;pf_rd_s=center-2&amp;amp;pf_rd_t=1501&amp;amp;pf_rd_i=ybh&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_r=0848VK7N8MKXBP7QRPS7"&gt;Hamburger America&lt;/a&gt;, that has detailed reviews of 100 or so of the best hamburger places in America. Being a GPS owning geek and foodie I of course wanted to turn that into a custom POI file for my GPS so that I would always know when a truly great hamburger might be nearby.&lt;br /&gt;&lt;br /&gt;I wanted to make sure I had a workable process before I spent a bunch of time typing in 100 addresses. So I grabbed the addresses of a bunch of highly rated burger places in the NE from the &lt;a href="http://www.phantomgourmet.com/"&gt;Phantom Gourmet&lt;/a&gt; and sent them to a couple of batch geocaching sites.&lt;br /&gt;&lt;br /&gt;Alas, for whatever reason I got zilch. The stupid batch web geocaching apps don't do much in the way of user friendly error reporting. But they all use the Yahoo Maps API, so I figured I would simply write a little app myself if I thought it could be done in under 15 minutes.&lt;br /&gt;&lt;br /&gt;10 minutes later I had a working Java Swing app that does batch conversions of addresses to latitude/longitude. That says a lot about the simplicity and power of REST, doesn't it? (It also says a lot about how easy it is to use Netbeans 6, but that's another post).&lt;br /&gt;&lt;br /&gt;But the code I wrote was awful. Really horrid stuff. I hard coded everything that I shouldn't and I did the parsing without XML libraries using really basic String matching. It was easy and fast and it works great, but the tiniest change to the library and the whole thing will fall over.&lt;br /&gt;&lt;br /&gt;Anyway, if you haven't guessed, the observation I made was this: it is extremely easy, to the point of being &lt;span style="font-style: italic;"&gt;by far&lt;/span&gt; the path of least resistance, to write bad client code for a RESTful service. It is much easier to write bad code against a RESTful API than against a SOAP API (because the SOAP library, which is all but required, will do the heavy lifting for you).&lt;br /&gt;&lt;br /&gt;We have our share of bad code lying about - we don't really need to be encouraging anyone to write more of the stuff. What can we do to prevent or discourage bad coding practices for RESTful APIs?&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3915904788404927988?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3915904788404927988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3915904788404927988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3915904788404927988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3915904788404927988'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/05/dark-side-of-rest.html' title='The Dark Side of REST?'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-738946491098952024</id><published>2008-05-18T09:17:00.004-04:00</published><updated>2008-12-11T08:18:04.409-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Crepes, crepes, crepes</title><content type='html'>I got a new crepe pan on impulse when I was in the mall the other day and I am extremely pleased with it.&lt;br /&gt;&lt;br /&gt;For some background let me start by saying that I have been doing a lot of cast iron cooking lately, making me appreciate the qualities of a properly seasoned iron pan. So when I saw a DeBuyer crepe pan I was predisposed to fall in love with it. It is thin enough to heat fairly fast, small enough to aid in portion control, thick enough and made of the right material to heat evenly, light enough to be easy to manage for swirling batter, and simple and sturdy enough to last generations if properly cared for.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SDAuKoh3HwI/AAAAAAAAADQ/DhLbLynNsR4/s1600-h/DeBuyer_Black_Iron_Crepe_Pan.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SDAuKoh3HwI/AAAAAAAAADQ/DhLbLynNsR4/s320/DeBuyer_Black_Iron_Crepe_Pan.jpg" alt="Crepe pan photo" id="BLOGGER_PHOTO_ID_5201708329825935106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It is an extremely simple affair. A piece of punched out sheet steel with a handle spot welded to it.&lt;br /&gt;&lt;br /&gt;I got it home and seasoned the crap out of it on the stove top. Before I ever used it I had it looking like something that has been around for decades. But boy does it ever work!&lt;br /&gt;&lt;br /&gt;It outperforms the best non-stick cookware I have ever used. The crepes turn out perfectly time after time. The pan stays hot, so I can easily make crepe after crepe, factory style. I have never cooked a crepe before, but the first one I cooked was perfect, as was every single one since (so far at least).&lt;br /&gt;&lt;br /&gt;The more I cook, the more I appreciate the simple tools that our grandparents used to cook with and the less I understand the fancy cookware that is so in vogue these days. You can't even buy a cast iron frying pan in a lot of otherwise well stocked kitchen supply stores. It is sad really.&lt;br /&gt;&lt;br /&gt;My favorite crepe shop closed recently (across the street from MGH in Boston), but I think I will miss it a little less now. I will certainly have crepes more often.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-738946491098952024?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/738946491098952024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=738946491098952024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/738946491098952024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/738946491098952024'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/05/crepes-crepes-crepes.html' title='Crepes, crepes, crepes'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/SDAuKoh3HwI/AAAAAAAAADQ/DhLbLynNsR4/s72-c/DeBuyer_Black_Iron_Crepe_Pan.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1067794788736959090</id><published>2008-05-18T08:11:00.001-04:00</published><updated>2008-05-18T08:13:25.504-04:00</updated><title type='text'>Simon is getting press</title><content type='html'>I'm not sure how it is "gossip" exactly, but Simon is on &lt;a href="http://pharmagossip.blogspot.com/2008/05/pfizers-punk-simon-revell.html"&gt;PharmaGossip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1067794788736959090?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1067794788736959090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1067794788736959090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1067794788736959090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1067794788736959090'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/05/simon-is-getting-press.html' title='Simon is getting press'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-575350129278340830</id><published>2008-05-14T12:14:00.003-04:00</published><updated>2008-12-11T08:18:04.608-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Dieting again</title><content type='html'>After a long break, I am back on the diet again (posts from last years efforts &lt;a href="http://twentyonetimestwo.blogspot.com/2007/06/on-weight-loss.html"&gt;here&lt;/a&gt;, &lt;a href="http://twentyonetimestwo.blogspot.com/2007/07/diet-update-success-so-far.html"&gt;here&lt;/a&gt;, and &lt;a href="http://twentyonetimestwo.blogspot.com/2007/08/staying-on-track.html"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;I have come to realize several things about myself through my weight control efforts. The main ones are probably that I am much better than most people about exercising iron control and I am much worse than most people about exercising &lt;span style="font-style: italic;"&gt;reasonable&lt;/span&gt; control. Here's a graph of my weight over time:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SCsTU4h3HvI/AAAAAAAAADI/iibMwk3LlmU/s1600-h/weightloss.gif"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/SCsTU4h3HvI/AAAAAAAAADI/iibMwk3LlmU/s320/weightloss.gif" alt="" id="BLOGGER_PHOTO_ID_5200271444222090994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can easily see, as long as I am paying attention there is a nice downward trend. The second I stop there is a nice upward trend.&lt;br /&gt;&lt;br /&gt;So I have the iron control and the method. I am not worried about getting into my target range. But I am very worried about how to stay there once I do. I either need a better balanced strategy or I need to accept the idea that I am a yo-yo and I just need to be able to rapidly transition between good/not so good. I guess I'll spend the next couple of months pondering that.&lt;br /&gt;&lt;br /&gt;Suggestions welcome.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-575350129278340830?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/575350129278340830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=575350129278340830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/575350129278340830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/575350129278340830'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/05/dieting-again.html' title='Dieting again'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/SCsTU4h3HvI/AAAAAAAAADI/iibMwk3LlmU/s72-c/weightloss.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-9139015068673235452</id><published>2008-05-08T16:45:00.000-04:00</published><updated>2008-07-07T07:16:28.680-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Winner's Laws</title><content type='html'>A while back &lt;a href="http://www.amazon.com/s?ie=UTF8&amp;amp;search-type=ss&amp;amp;index=books&amp;amp;field-author=Alan%20N.%20Schoonmaker&amp;amp;page=1"&gt;Alan Schoonmaker&lt;/a&gt; had an article in &lt;a href="http://www.cardplayer.com/"&gt;CardPlayer Magazine&lt;/a&gt; (&lt;span style="font-style: italic;"&gt;Winners Are Brutally Realistic: Part II&lt;/span&gt;) in which he discusses his concept of four Winner's Laws.&lt;br /&gt;&lt;br /&gt;These laws are brilliantly universal and I wanted to share them you. They are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Admit that you overestimate your abilities and other virtues.&lt;/li&gt;&lt;li&gt;Admit that you have some unrealistic expectations&lt;/li&gt;&lt;li&gt;Get an objective assessment of yourself.&lt;/li&gt;&lt;li&gt;Select your games very carefully&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Aren't they great?&lt;br /&gt;&lt;br /&gt;I suppose that to be truly universal you have to restate the last one. Maybe something like:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Select the opportunity that maximizes your expectation&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Or maybe that is still too gambler-speak. How about:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Select the opportunity that is most likely to produce either short or long term benefits.&lt;/li&gt;&lt;/ul&gt;For everything that I have excelled at I have (knowingly or unknowingly) followed these rules. For everything that I have not done as well at I haven't.&lt;br /&gt;&lt;br /&gt;1. Admit that you overestimate your abilities and other virtues.&lt;ul&gt;&lt;li&gt; Confident people are generally winners and expect to be winners, but confident people are insanely likely to be guilty of overestimating how good they are.&lt;/li&gt;&lt;li&gt;If you overestimate how good you are you won't improve. You won't even &lt;span style="font-style: italic;"&gt;try&lt;/span&gt; to improve. Pretty soon you will suck.&lt;/li&gt;&lt;/ul&gt;2. Admit that you have some unrealistic expectations&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You are a confident person. You expect to do well. But some of your expectations are ridiculous. Admit it. You aren't going to win the Nobel prize or cure cancer. You also aren't going to get a glowing review followed by a promotion every year.&lt;/li&gt;&lt;/ul&gt;3. Get an objective assessment of yourself&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You overestimate your abilities and you have unrealistic expectations. How can you possibly be objective about yourself? You can't. Find someone who can.&lt;/li&gt;&lt;/ul&gt;4. Select the opportunity that is most likely to produce either short or long term benefits&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Opportunities come and go. If you choose the one that is convenient, or the one that is most "fun", you are probably costing yourself.&lt;/li&gt;&lt;li&gt;Either choose opportunities that have demonstrable immediate benefit (e.g. the job that pays better) or the opportunities that can have long term pay-offs (e.g. the project that will force you to learn something new that you expect to be useful in the future).&lt;/li&gt;&lt;/ul&gt;Hope you liked these.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-9139015068673235452?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/9139015068673235452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=9139015068673235452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/9139015068673235452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/9139015068673235452'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/05/winners-laws.html' title='Winner&apos;s Laws'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-8206062915119198455</id><published>2008-04-28T15:08:00.002-04:00</published><updated>2008-07-07T07:09:28.535-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>Why I Hate Livejournal</title><content type='html'>(cross-posted to my Livejournal page)&lt;br /&gt;&lt;br /&gt;Pretty inflammatory subject for a first post, isn't it? They'll probably ban me.&lt;br /&gt;&lt;br /&gt;But I absolutely HATE that I can't get RSS feeds from friends private journals. Do the developers at Livejournal pay any attention at all to Web 2.0 trends?&lt;br /&gt;&lt;br /&gt;Listen up people! If I can't read it in Google Reader, then it doesn't exist.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-8206062915119198455?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/8206062915119198455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=8206062915119198455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8206062915119198455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/8206062915119198455'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/04/why-i-hate-livejournal.html' title='Why I Hate Livejournal'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1604858782826660936</id><published>2008-03-10T09:00:00.000-04:00</published><updated>2008-07-07T07:11:14.060-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><title type='text'>The Big Rip Is Over</title><content type='html'>Whew. I finished the &lt;a href="http://twentyonetimestwo.blogspot.com/2008/02/big-rip.html"&gt;big rip project&lt;/a&gt;. 121 gigabytes of Apple Lossless files (5215 tracks), piles of clean up and de-duplication, and a bunch of manual hunting for cover art, but it is done. Was it worth it? I'm not really sure. I had some hope of actually using some of the lossless music on my iPod, but 121 gigs? I think not.&lt;br /&gt;&lt;br /&gt;The one advantage is that if I change my mind about the lossy format that I actually want to use (192kbps MP3 for now), I have everything tagged and organized so that it is pretty easy. Just the processor time to chug through it all again.&lt;br /&gt;&lt;br /&gt;My one gripe is that I had to fight against iTunes in a number of places. Everything is possible, but not necessarily easy. It would be very nice, for example, if you could force imports to go to a different directory than the main iTunes directory. Or if you could display (and sort by) the file location. Or if you could use iTunes to move physical files around. Or if you could delete music from playlists. Or if when you do a conversion it asked you if you want to keep duplicates (like it does when you rip a disk). Or if you could have it touch every file in your library to find the missing files (and then if you could sort by the [!] or something). Or if you could swap back and forth between two or more different iTunes directories and then merge them at some point (I got to a place where I had to finish the entire process before I could sync my iPod or things would go horribly wrong - it would be nice if I could have done some of the fiddling in a separate environment).&lt;br /&gt;&lt;br /&gt;On the other hand, some things iTunes got very right. Smart playlists are a godsend. The search function is almost magically good. And now that I have actually filled in my album art, cover flow is pretty neat.&lt;br /&gt;&lt;br /&gt;And speaking of filling in album art - I never could have done that without amazon.com and google image search. Not a chance. The iTunes missing album art function only hit about 50-60% of my collection - that's what I get for being eclectic I guess.&lt;br /&gt;&lt;br /&gt;One interesting thing about the whole process is that it took 24 hours running at ~75% CPU utilization on a modern dual core computer to transcode the files from Apple Lossless to MP3. That is an astonishing amount of CPU time on a computer that would have been classed as a supercomputer a few years ago and &lt;a href="http://en.wikipedia.org/wiki/Clarke%27s_three_laws"&gt;magic&lt;/a&gt; a few years before that. I estimate it used about 3E14 CPU cycles. A circa 1990 Cray Y-MP would have taken around 625 days to do this processing (obviously not counting any of the optimization that you definitely would have taken the time to do and using a 1:1 assumption about CPU cycles that probably isn't strictly accurate).&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1604858782826660936?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1604858782826660936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1604858782826660936' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1604858782826660936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1604858782826660936'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/03/big-rip-is-over.html' title='The Big Rip Is Over'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-5412433447665515221</id><published>2008-03-07T21:38:00.002-05:00</published><updated>2008-07-07T07:06:23.133-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>sshfs rocks!</title><content type='html'>I have no idea how I went for so long without knowing about &lt;a href="http://en.wikipedia.org/wiki/SSHFS"&gt;sshfs&lt;/a&gt;, but for the record it rocks. It is a *nix user space mountable file system that works over ssh as a proxy for sftp. Or in english, it is a way to mount anything that is available via ssh (sftp) as though it were a disk on unix/linux.&lt;br /&gt;&lt;br /&gt;Yes, it &lt;a href="http://code.google.com/p/macfuse/wiki/MACFUSE_FS_SSHFS"&gt;works on macs&lt;/a&gt;. No, it doesn't work in cygwin. Yes, there is a &lt;a href="http://www.sftpdrive.com/"&gt;windows client&lt;/a&gt;, if you don't mind paying for it (I haven't tried this).&lt;br /&gt;&lt;br /&gt;Sshfs, plus an ssh terminal, plus a tiny bit of port redirection, and hey, who needs a &lt;a href="http://en.wikipedia.org/wiki/Virtual_private_network"&gt;vpn&lt;/a&gt;? The completely brilliant thing is that you never need anything more than sshd running on your "server" side and you never need anything but port 22 open. Ever.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-5412433447665515221?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/5412433447665515221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=5412433447665515221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5412433447665515221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5412433447665515221'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/03/sshfs-rocks.html' title='sshfs rocks!'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2449276834171803552</id><published>2008-02-29T14:33:00.002-05:00</published><updated>2008-07-07T07:11:14.060-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><title type='text'>The Big Rip</title><content type='html'>In the wake of the realization that my music collection &lt;a href="http://twentyonetimestwo.blogspot.com/2008/02/lure-of-itunes.html"&gt;has gone the wrong direction&lt;/a&gt;, quality-wise, I have decided to re-rip my entire CD library in &lt;a href="http://en.wikipedia.org/wiki/Apple_Lossless"&gt;Apple Lossless&lt;/a&gt;. I expect this to keep me busy for the foreseeable future.&lt;br /&gt;&lt;br /&gt;Why apple format instead of &lt;a href="http://en.wikipedia.org/wiki/Free_Lossless_Audio_Codec"&gt;flac&lt;/a&gt;? Because iTunes supports it natively (and it is a nice ripping environment) and the format is playable in Linux and convertible to other formats. The thing that sucks about any format is that there is no one perfect choice. MP3 is the only real generic choice for lossy, but there is no similarly universal format for lossless. So I will need a minimum of two copies of my entire library to support my existing audio needs. Possibly three. Sigh.&lt;br /&gt;&lt;br /&gt;I don't actually expect the ripping to be the really painful part of the process. I expect incorporating the lossless items into iTunes without losing anything or duplicating anything and without hopelessly wrecking my playlists to be the hard part.&lt;br /&gt;&lt;br /&gt;The way my luck is going lately, my hard drive will probably crash halfway through the process. I should get a &lt;a href="http://www.drobo.com/"&gt;Drobo&lt;/a&gt;, but I want a Mac to attach it to. Or I could take a chance and attach it to linux (formatted hfs+), I suppose...&lt;br /&gt;&lt;br /&gt;48 disks down, lots and lots to go.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2449276834171803552?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2449276834171803552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2449276834171803552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2449276834171803552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2449276834171803552'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/02/big-rip.html' title='The Big Rip'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2904416776999148114</id><published>2008-02-23T14:04:00.002-05:00</published><updated>2008-07-07T07:08:41.173-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>The Lure of iTunes</title><content type='html'>If you had asked me two days ago whether I buy a lot of stuff on iTunes, I would have said, "Some, but not too much. I'd rather buy the CD so that I own a higher quality copy. But I like it for the ability to explore and find new music."&lt;br /&gt;&lt;br /&gt;Well, I would have been lying apparently. I installed &lt;a href="http://www.doubletwist.com/"&gt;doubleTwist&lt;/a&gt; to mess around with and I was astonished when it started "liberating" my iTunes music. Not because of the liberation - I was obviously expecting that. But because of the &lt;span style="font-style: italic;"&gt;number&lt;/span&gt; of bloody songs there were to liberate. 854, not including the 245 iTunes Plus selections. Sheesh.&lt;br /&gt;&lt;br /&gt;Score one for iTunes and a marvelous store interface. It totally sucked me in.&lt;br /&gt;&lt;br /&gt;Ironically, the ability to liberate the music (without burning/ripping) actually makes the store &lt;span style="font-style: italic;"&gt;more&lt;/span&gt; attractive. I may need therapy.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2904416776999148114?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2904416776999148114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2904416776999148114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2904416776999148114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2904416776999148114'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/02/lure-of-itunes.html' title='The Lure of iTunes'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-255901682148086281</id><published>2008-02-06T06:11:00.000-05:00</published><updated>2008-07-07T07:08:41.174-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Spiraling Economy</title><content type='html'>&lt;a href="http://money.cnn.com/2008/02/05/markets/markets_morning/index.htm?section=money_topstories"&gt;The US economy appears to be in a deep spiral&lt;/a&gt;. I seriously wish that I had some capital to invest right now - bargains are starting to abound in the stock market. I also seriously hope that &lt;a href="http://www.biofind.com/rumor/Default.aspx?ID=139415"&gt;I don't get downsized&lt;/a&gt; until after a rebound of some kind.&lt;br /&gt;&lt;br /&gt;I wonder what the reason is for the particularly bad hit that &lt;a href="http://money.cnn.com/real_estate/zip_code_foreclosures/index.htm?section=money_topstories"&gt;Las Vegas is taking&lt;/a&gt; from the mortgage foreclosure debacle? Was it &lt;a href="http://money.cnn.com/2008/02/05/real_estate/zip_code_foreclosures/index.htm"&gt;particularly bad lending practices in the area&lt;/a&gt;? Or is it just that the Las Vegas economy is only good when people have spare money to gamble with? Or both? In any case, this might be a great time to pick up some deals in Las Vegas real estate.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-255901682148086281?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/255901682148086281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=255901682148086281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/255901682148086281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/255901682148086281'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/02/spiraling-economy.html' title='Spiraling Economy'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-630755129462255275</id><published>2008-02-01T14:39:00.000-05:00</published><updated>2008-02-01T14:55:41.221-05:00</updated><title type='text'>Confusing Web Trends</title><content type='html'>I am puzzled. I discovered &lt;a href="http://www.google.com/trends?hl=en"&gt;Google Trends&lt;/a&gt; a while back and I have the Gadget on my Google home page. I look at it from time to time in the hope that I will find something interesting going on in the tubes. I haven't yet.&lt;br /&gt;&lt;br /&gt;At this moment in time, the top two search trends are for "amuse bouche" and "i sound my barbaric yawp". And Trends claims that these searches are related somehow.&lt;br /&gt;&lt;br /&gt;I know what an amuse bouche is only because I am a foodie. It means to amuse the mouth in French and is a kind of very small titillating appetizer.&lt;br /&gt;&lt;br /&gt;I know the phrase "I sound my barbaric yawp" only because Dead Poet's Society is one of my favorite movies. This is a Walt Whitman quote that Robin Williams' character uses to break his students out of their shells.&lt;br /&gt;&lt;br /&gt;What they have in common is... Nothing. Nothing at all.&lt;br /&gt;&lt;br /&gt;This must be an experiment (possibly by aliens, but more likely by a sadistic developer over at Google) to see what happens when people notice.&lt;br /&gt;&lt;br /&gt;I would be sad if it just turns out that Google Trends has a monster bug in how they determine that trends are related. It is more fun to think that they might be somehow.&lt;br /&gt;&lt;br /&gt;But how, darn it?&lt;br /&gt;&lt;br /&gt;I don't know and seemingly neither does Google.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-630755129462255275?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/630755129462255275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=630755129462255275' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/630755129462255275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/630755129462255275'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/02/confusing-web-trends.html' title='Confusing Web Trends'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4284396219915978471</id><published>2008-01-28T15:13:00.000-05:00</published><updated>2008-07-07T07:08:49.266-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Google Sets, Text Mining, and Enterprise 2.0</title><content type='html'>I was browsing on &lt;a href="http://labs.google.com/"&gt;Google Labs&lt;/a&gt; as I do from time to time to see what the alpha-geeks are up to.&lt;br /&gt;&lt;br /&gt;I had never looked at &lt;a href="http://labs.google.com/sets"&gt;Google Sets&lt;/a&gt; before and when I looked at it this time I almost immediately dismissed it as useless. I mean who cares if I can create sets of things? But then I had the idea to type in &lt;a href="http://labs.google.com/sets?hl=en&amp;amp;q1=peaches&amp;amp;q2=dresden+dolls&amp;amp;q3=shiny+toy+guns&amp;amp;q4=the+knife&amp;amp;q5=goldfrapp&amp;amp;btn=Large+Set"&gt;some bands that I like&lt;/a&gt; to see what happened (the starting set was peaches, shiny toy guns, dresden dolls, goldfrapp, and the knife).&lt;br /&gt;&lt;br /&gt;It &lt;span style="font-style: italic;"&gt;instantly&lt;/span&gt; popped up with a long list of bands many of which I know and like and some that I have never heard of. It's the ones that I had never heard of that got me thinking.&lt;br /&gt;&lt;br /&gt;This is exactly the kind of problem that pharmaceutical scientists are trying to solve every day. They have a bunch of things that they know are related and they want to find the other things that are related that they don't know about. But the text mining tools that they use to do it are very expensive and painful to use.&lt;br /&gt;&lt;br /&gt;This set interface is so simple. So intuitive.&lt;br /&gt;&lt;br /&gt;I imagine that the algorithm that Google Sets is using is some kind of basic co-occurance test, so there are lots of tools out there that are more sophisticated.  On the other hand I didn't get any hits for sharpening stones, so it has to be at least a little more than that.&lt;br /&gt;&lt;br /&gt;If everything inside the pharmaceutical firewall (or better inside+outside) could be indexed into a tool like this would it be useful? Yes, I think so.&lt;br /&gt;&lt;br /&gt;It seems like a big problem, but it is a tiny problem compared with the one that Google has apparently already solved.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4284396219915978471?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4284396219915978471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4284396219915978471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4284396219915978471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4284396219915978471'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/google-sets-text-mining-and-enterprise.html' title='Google Sets, Text Mining, and Enterprise 2.0'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6227210131390487881</id><published>2008-01-26T06:42:00.000-05:00</published><updated>2008-12-11T08:18:04.817-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meme'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>My Political Compass</title><content type='html'>I am a bit hesitant to enshrine this for all time on the 'net because it is bound to change over time. But the results surprised me a little, as did the layout of the compass itself and the descriptions surrounding it. So here is my &lt;a href="http://www.politicalcompass.org/facebook/pcgraphpng.php?ec=0.88&amp;amp;soc=-4.05"&gt;political compass&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Z2EF6PGeXYw/R5se5xc2AfI/AAAAAAAAACo/E-vTMx6OUwY/s1600-h/politicalcompass.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Z2EF6PGeXYw/R5se5xc2AfI/AAAAAAAAACo/E-vTMx6OUwY/s400/politicalcompass.png" alt="" id="BLOGGER_PHOTO_ID_5159751775958729202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To put it in context, this puts me dead center on the left-right line between Milton Friedman and Ghandi, but a bit more libertarian (in the classical sense) than either of them.&lt;br /&gt;&lt;br /&gt;I don't think this test is anywhere near the whole story. I am socially liberal and economically conservative. Someone who is the opposite could have the same score and we would agree on almost nothing. I think that some multi-dimensional visualization techniques could give a more useful view. Still, it is an interesting exercise.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;(via &lt;a href="http://pharmagiles.blogspot.com/2008/01/pinko-faggot-liberal.html"&gt;PharmaGiles&lt;/a&gt; of all things)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6227210131390487881?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6227210131390487881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6227210131390487881' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6227210131390487881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6227210131390487881'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/my-political-compass.html' title='My Political Compass'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Z2EF6PGeXYw/R5se5xc2AfI/AAAAAAAAACo/E-vTMx6OUwY/s72-c/politicalcompass.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7047206657717305953</id><published>2008-01-25T05:24:00.000-05:00</published><updated>2008-07-07T07:12:05.924-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='book review'/><title type='text'>A Great New Poker Book</title><content type='html'>I have been familiar with &lt;a href="http://www.tommyangelo.com/"&gt;Tommy Angelo&lt;/a&gt; for a long time. Several years ago when I was unemployed and full to the brim with free time I spent a lot of time reading the forums on &lt;a href="http://www.twoplustwo.com/"&gt;2+2&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Back then (before the poker boom) there were exactly four places to get good information about improving your poker game. &lt;a href="http://groups.google.com/group/rec.gambling.poker/topics"&gt;Rec.gambling.poker&lt;/a&gt; was one, if you were willing to wade through the dreck to find the gems - the signal to noise ratio is MUCH worse now, but even then it was bad. &lt;a href="http://www.amazon.com/Real-Poker-II-Play-Hands/dp/1886070245/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201257491&amp;amp;sr=1-1"&gt;Roy Cooke&lt;/a&gt;'s regular column was another (this was before he released his first book). A very small number of good books existed. And there were the 2+2 forums.&lt;br /&gt;&lt;br /&gt;In the old days the 2+2 community was pretty small. It was the place that all of the &lt;a href="http://en.wikipedia.org/wiki/INTP"&gt;INTP&lt;/a&gt; poker geeks went to find out what all of the other INTP poker geeks were thinking about. Many of the regular posters from back then are fairly well known now. A couple (like &lt;a href="http://en.wikipedia.org/wiki/Greg_Raymer"&gt;Greg "Fossilman" Raymer&lt;/a&gt;) are household names and a host of others are authors or otherwise moderately well known (&lt;a href="http://www.pokercoach.us/"&gt;Bob Ciaffone&lt;/a&gt;, &lt;a href="http://www.amazon.com/Middle-Limit-Holdem-Poker-Ciaffone/dp/0966100743"&gt;Jim Brier&lt;/a&gt; , &lt;a href="http://en.wikipedia.org/wiki/Gary_Carson"&gt;Gary Carson&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Steve_Badger"&gt;Steve Badger&lt;/a&gt;, and of course &lt;a href="http://notedpokerauthority.com/"&gt;NPA&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Ed_Miller"&gt;Ed Miller&lt;/a&gt; the &lt;a href="http://www.bravotv.com/Queer_Eye/episode/237"&gt;TV star&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Tommy always had interesting things to say and always said them in an interesting way. He tended (probably tends) to post on the meta-game.&lt;br /&gt;&lt;br /&gt;His new book, &lt;a href="http://www.amazon.com/Elements-Poker-Tommy-Angelo/dp/1419680897/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1201258571&amp;amp;sr=8-1"&gt;&lt;span style="font-style: italic;"&gt;Elements of Poker&lt;/span&gt;&lt;/a&gt;, is an excellent book for a good poker player who wants to get better. It is the best compilation that I have ever seen on the meta-game.&lt;br /&gt;&lt;br /&gt;All of it is good and some of it is brilliant. Like the &lt;span style="font-style: italic;"&gt;Elements of Performance&lt;/span&gt; chapter. I have always loved poker, but now thanks to Tommy it will become part of my practice (in the &lt;a href="http://en.wikipedia.org/wiki/Noble_Eightfold_Path#Right_mindfulness"&gt;zen sense of the word&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7047206657717305953?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7047206657717305953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7047206657717305953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7047206657717305953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7047206657717305953'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/great-new-poker-book.html' title='A Great New Poker Book'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3068122078433762733</id><published>2008-01-24T09:51:00.000-05:00</published><updated>2008-07-07T07:10:30.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meme'/><title type='text'>Proof That I Am Gullible</title><content type='html'>I recently &lt;a href="http://twentyonetimestwo.blogspot.com/2007/11/oops.html"&gt;posted about my blog's readability&lt;/a&gt; when I encountered a tool that purported to do this analysis.&lt;br /&gt;&lt;br /&gt;I just went to see how it was faring. It got worse. Maybe I should just embrace it. I need to embrace it if I am going to use words like "purported":&lt;br /&gt;&lt;img style="border: medium none ;" src="http://www.criticsrant.com/bb/readinglevel/img/genius.jpg" alt="blog readability test" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So then I got curious about how this worked, where it came from, who did it, and all of that. Google quickly led me to this &lt;a href="http://www.guardian.co.uk/technology/2007/dec/07/blogreadability"&gt;story about how this tool is just a scam to gain page ranking&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The good news is that I have the sense (and ability) to read HTML snippets before I paste them in my blog. So I trimmed out all of the silly bits. The bad news is that I posted the thing even though I knew it had silly bits. Shame on me. And I just did it again. Just there above. Shame on me again. This time I did remove all links, but when I posted it the first time I left the link back to the test live so that other people could play with it.&lt;br /&gt;&lt;br /&gt;And therein lies the genius of the thing. It is a page ranking virus (for criticsrant.com) and I caught it. But then &lt;a href="http://twentyonetimestwo.blogspot.com/2008/01/how-evil-are-you.html"&gt;all of these link gadgets&lt;/a&gt; are viruses. They are soooo tempting.&lt;br /&gt;&lt;br /&gt;The geniuses that read this blog may be interested to know that the actual generated HTML that I got does not contain references to cashadvance1500.com as stated in the article. Here is the actual text:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;a href="http://www.criticsrant.com/bb/reading_level.aspx"&amp;gt;&amp;lt;img style="border: none;" src="http://www.criticsrant.com/bb/readinglevel/img/genius.jpg" alt="blog readability test" /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;p&gt;&amp;lt;small&amp;gt;&amp;lt;a href="http://www.criticsrant.com"&amp;gt;Movie Reviews&amp;lt;/a&amp;gt;&amp;lt;/small&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;I can no longer remember what I trimmed out the first time.&lt;br /&gt;&lt;br /&gt;Google reports right now that there are 10,800 pages that link to "http://www.criticsrant.com/bb/reading_level.aspx". Nice virus.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3068122078433762733?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3068122078433762733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3068122078433762733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3068122078433762733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3068122078433762733'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/proof-that-i-am-gullible.html' title='Proof That I Am Gullible'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-7724090466674474024</id><published>2008-01-23T08:05:00.000-05:00</published><updated>2008-07-07T07:13:04.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Change my clipboard?</title><content type='html'>Despite the fact that &lt;a href="http://www.codinghorror.com/blog/archives/001036.html"&gt;Jeff Atwood has some cool stuff on his keychain&lt;/a&gt; (and therefore obvious geek credibility), I am not entirely certain that I agree &lt;a href="http://www.codinghorror.com/blog/archives/001041.html"&gt; with his recent clipboard post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;His thesis is basically that it is about time to add some more functionality to the clipboard because, well, it is about time.&lt;br /&gt;&lt;br /&gt;I am not so sure though. I would definitely want any new clipboard functionality to be very well thought out. Sometimes the power of an idea (clipboard, unix pipes) comes from its simplicity.&lt;br /&gt;&lt;br /&gt;More often than not I find myself desperately wishing that I could remove functionality from my Windows clipboard. It used to be that every application supported a "paste special" function that was always available and worked smoothly, but that is no longer the case. I guess people found it confusing or something. Even applications that support "paste special" often have it greyed out at times when it would make sense for it to be available, or it has no good keyboard shortcut (in MS Word to paste plain text it is "alt-e, s, up-arrow, enter" - not exactly convenient. There &lt;a href="http://www.cnet.com/8301-13880_1-9834110-68.html"&gt;are options&lt;/a&gt; if you want to go to some effort).&lt;br /&gt;&lt;br /&gt;More than 99% of my copy/paste operations between applications are either pure unformatted text or image. To get the text functionality that I need I have to run &lt;a href="http://www.stevemiller.net/puretext/"&gt;PureText&lt;/a&gt; or keep a notepad window open, so that I can paste text there and re-copy it sans formatting. I would be very happy if only unformatted text and images worked between applications.&lt;br /&gt;&lt;br /&gt;I don't want it to be more complex. I want it to be simpler.&lt;br /&gt;&lt;br /&gt;On the other hand I can't find anything wrong with the idea of adding &lt;a href="http://www.bluemars.org/clipx/"&gt;ClipX&lt;/a&gt; functionality. But I can already do that by installing ClipX (and I probably will if it doesn't conflict with anything else I run). Why change the operating system?&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-7724090466674474024?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/7724090466674474024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=7724090466674474024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7724090466674474024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/7724090466674474024'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/change-my-clipboard.html' title='Change my clipboard?'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-548670135403589548</id><published>2008-01-22T06:38:00.001-05:00</published><updated>2008-12-11T08:18:05.064-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><title type='text'>Antique Ouch</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Z2EF6PGeXYw/R5XWEZss0MI/AAAAAAAAACg/NKKg8gw2VOM/s1600-h/lrg_anti_hitch_shocker.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Z2EF6PGeXYw/R5XWEZss0MI/AAAAAAAAACg/NKKg8gw2VOM/s400/lrg_anti_hitch_shocker.jpg" alt="" id="BLOGGER_PHOTO_ID_5158264319328964802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My grandfather once described this exact circuit as one that he used to train a dog not to pee on a certain post in front of a market. Needless to say this would not go over well today...&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-548670135403589548?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/548670135403589548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=548670135403589548' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/548670135403589548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/548670135403589548'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/antique-ouch.html' title='Antique Ouch'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Z2EF6PGeXYw/R5XWEZss0MI/AAAAAAAAACg/NKKg8gw2VOM/s72-c/lrg_anti_hitch_shocker.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6191193962245793209</id><published>2008-01-22T05:52:00.000-05:00</published><updated>2008-07-07T07:15:12.602-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lifestyle'/><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Cool Coffee Products</title><content type='html'>It is not that often that new products come out in the coffee world that are truly novel and potentially useful. I mean coffee and the art of drinking it is &lt;span style="font-style: italic;"&gt;old&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But here are two.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://shop.handpresso.com/photos/Handpresso-wild.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 80px;" src="http://shop.handpresso.com/photos/Handpresso-wild.jpg" alt="" border="0" /&gt;&lt;/a&gt;The first and coolest is &lt;a href="http://www.handpresso.fr/products/video/video-FR.html"&gt;an espresso maker that is completely hand operated&lt;/a&gt;. It works kind of like a bicycle pump. I would love to see a non-pod option, but even with pods it blows my little camp stove-top espresso machine away.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dcigift.com/prod_images/iAmNotA_papercup.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 80px;" src="http://www.dcigift.com/prod_images/iAmNotA_papercup.jpg" alt="" border="0" /&gt;&lt;/a&gt;The second is &lt;a href="http://www.dcigift.com/product.cfm?productID=763&amp;amp;catID=14"&gt;the "I am not a paper cup..." cup&lt;/a&gt;. Yes, it is just another travel mug and it isn't even as well insulated or as spill resistant as most. But I like it because it is a really nice visual design and because it is completely dishwasher safe. The last is important to me because I use a travel mug every single day. I am so tired of hand washing these things that there aren't words.&lt;br /&gt;&lt;br /&gt;Tips for other dishwasher safe travel mugs will be appreciated.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6191193962245793209?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6191193962245793209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6191193962245793209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6191193962245793209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6191193962245793209'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/cool-coffee-products.html' title='Cool Coffee Products'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1065036638919729415</id><published>2008-01-13T06:56:00.000-05:00</published><updated>2008-07-07T07:15:59.240-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>Hiring Programmers</title><content type='html'>&lt;a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/"&gt;This is a great list&lt;/a&gt; of things to look for when hiring a computer programmer.&lt;br /&gt;&lt;br /&gt;This, of course, should not be confused with a list of things to look for in a new hire in general. You have to add all of those on top (or you'll be mighty sorry).&lt;br /&gt;&lt;br /&gt;These are the things I look for now when I interview someone, but I have never been this explicit about it. Maybe I'll make a checklist.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twentyonetimestwo.blogspot.com/2007/02/hiring-resolution.html"&gt;(here is an old related post)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1065036638919729415?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1065036638919729415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1065036638919729415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1065036638919729415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1065036638919729415'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/hiring-programmers.html' title='Hiring Programmers'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-412716714875849839</id><published>2008-01-12T06:35:00.000-05:00</published><updated>2008-07-07T07:10:30.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meme'/><title type='text'>How evil are you?</title><content type='html'>This is me:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://home.att.net/%7Eslugbutter/evil/" target="new"&gt;&lt;img src="http://home.att.net/%7Eslugbutter/evil/pureevil.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://home.att.net/%7Eslugbutter/evil/" target="new"&gt;How evil are &lt;i&gt;you&lt;/i&gt;?&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;It probably has something to do with the conflict between my libertarian attitudes in general (1) and my fascist attitudes towards software development (2).&lt;br /&gt;&lt;br /&gt;Or maybe it is because of my love of &lt;a href="http://www.amazon.com/Charcuterie-Craft-Salting-Smoking-Curing/dp/0393058298/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200138175&amp;amp;sr=8-1"&gt;charcuterie&lt;/a&gt;. I'm not sure.&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;(1) So long as someone is not hurting anyone else they should be left alone to do whatever they want.&lt;br /&gt;(2) There is a right way and a wrong way to develop software and if someone isn't doing it my way, they are probably doing it wrong.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-412716714875849839?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/412716714875849839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=412716714875849839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/412716714875849839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/412716714875849839'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/how-evil-are-you.html' title='How evil are you?'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1272696241702381047</id><published>2008-01-04T13:23:00.000-05:00</published><updated>2008-07-07T07:15:59.241-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>Sweet, Sweet Reason</title><content type='html'>Why, oh why aren't there more people like Radley Balko?&lt;br /&gt;&lt;br /&gt;Who? Yeah, well, I'd never heard of him either. But based on &lt;a href="http://www.foxnews.com/story/0,2933,319316,00.html"&gt;this article over on FOX News&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=vwhvimIKKgo"&gt;this YouTube footage&lt;/a&gt; I like him. These are two of the best counters to the UIEGA that I have heard.&lt;br /&gt;&lt;br /&gt;And of course I had to subscribe to &lt;a href="http://www.reason.com/"&gt;Reason Magazine&lt;/a&gt; after that introduction to one of its Senior Editors.&lt;br /&gt;&lt;br /&gt;My thanks to &lt;a href="http://www.billrini.com/"&gt;Bill's Poker Blog&lt;/a&gt; for pointing out the articles.&lt;br /&gt;&lt;br /&gt;Always remember: UISGE is good, UIEGA is bad. (I really need to get a T-Shirt of that made)&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1272696241702381047?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1272696241702381047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1272696241702381047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1272696241702381047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1272696241702381047'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2008/01/sweet-sweet-reason.html' title='Sweet, Sweet Reason'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6235113286481563131</id><published>2007-11-27T07:01:00.000-05:00</published><updated>2007-11-27T07:16:39.787-05:00</updated><title type='text'>Oops</title><content type='html'>Apparently I need to work on my blog's readability. Am I supposed to stop using words like "apparently" and "readability" I wonder? I can only hack the algorithm if I know the algorithm. :-(&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.criticsrant.com/bb/reading_level.aspx"&gt;&lt;img style="border: medium none ;" src="http://www.criticsrant.com/bb/readinglevel/img/postgrad.jpg" alt="alternative text here" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6235113286481563131?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6235113286481563131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6235113286481563131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6235113286481563131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6235113286481563131'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/11/oops.html' title='Oops'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6965940970569072227</id><published>2007-10-10T13:32:00.001-04:00</published><updated>2008-07-07T07:14:54.152-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Scone Recipe</title><content type='html'>I had a request for my scone recipe. If I had a dollar for every time that I have been asked for this recipe, I would be rich. Well, OK, not rich, but I might have a nice watch or something. I am going to put it here so that I never have to answer the question again. :-)&lt;br /&gt;&lt;br /&gt;Originally from &lt;a href="http://www.amazon.com/Breakfast-Book-Marion-Cunningham/dp/0517187264/ref=pd_bbs_sr_1/002-5593134-2956819?ie=UTF8&amp;amp;s=books&amp;amp;qid=1192034752&amp;amp;sr=8-1"&gt;The Breakfast Book&lt;/a&gt; by Marion Cunningham - one of the best and most used cookbooks that I own. This book is how I fell in love with steel cut oats (via the overnight double-boiler method) among other things.&lt;br /&gt;&lt;br /&gt;The original recipe calls for dried fruit, but I omit that at least as often as I add it. These are the best scones that I have ever had. My only regret is that I have not been able to come up with a decent cinnamon chip adaptation (the Hershey's Cinnamon Chips are horrid - I don't want cinnamon flavored chocolate chips, I want something with more of a cinnamon-sugar lump consistency).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Cream Scones&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2C All purpose flour&lt;/li&gt;&lt;li&gt;1T Baking powder&lt;/li&gt;&lt;li&gt;1/4C Sugar&lt;/li&gt;&lt;li&gt;1/2t Salt&lt;/li&gt;&lt;li&gt;1 1/4C (i.e. 1.25) Heavy whipping cream&lt;/li&gt;&lt;li&gt;(Optional) 3/4C Dried fruit in small bits&lt;/li&gt;&lt;li&gt;---------&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1-2T melted butter&lt;/li&gt;&lt;li&gt;Some extra sugar (I like sugar in the raw for the topping)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Preheat oven to 425 degrees F. Mix all of the dry powdery ingredients together with a fork. Mix in the dried fruit if desired. Add the cream and mix with a fork until the dough starts to come together. Knead the dough 8 or 9 times.&lt;br /&gt;&lt;br /&gt;Form the dough into a ball and flatten it out into a rough circle (on a floured board) 8 or 9 inches in diameter (hands are fine, you don't need a rolling pin). Brush some melted butter on the circle and sprinkle on some sugar.&lt;br /&gt;&lt;br /&gt;Cut the dough like a pie into 12 slices (cut it in quarters, then each quarter into thirds).&lt;br /&gt;&lt;br /&gt;Put the scones onto a baking sheet (separated by an inch) and bake for around 15 minutes. The edges are sensitive to burning, so watch them. I strongly recommend an air insulated baking sheet for this. Or double up on the sheets.&lt;br /&gt;&lt;br /&gt;They are done when they are golden brown. Serve naked, or with butter and jam. And coffee of course. Lots of coffee.&lt;br /&gt;&lt;br /&gt;These are amazing when fresh, but they don't keep for very long. Of course you won't be able to keep them for very long, so it doesn't really matter. Just don't plan on baking them a day ahead if you can avoid it.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6965940970569072227?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6965940970569072227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6965940970569072227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6965940970569072227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6965940970569072227'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/10/scone-recipe.html' title='Scone Recipe'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-5742881678112994703</id><published>2007-09-24T05:41:00.000-04:00</published><updated>2008-07-07T07:14:05.589-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Printer Economics</title><content type='html'>My venerable HP Deskjet 500 has finally died. I have had it since the early 90's I think. It was only the second printer I ever owned after my old Epson LX-80 dot matrix printer (which would probably still work just fine, actually, but whose output was no longer acceptable - even in the bad old days of the early 90's).&lt;br /&gt;&lt;br /&gt;By died I don't mean that there is anything major wrong with it. The thing is a tank (like all things HP used to be). By died, I mean that little things have started to go wrong and it is most likely not worth the trouble and expense to fix it. The sheet lifter doesn't always work on the first try and for some reason the ink cartridges are clogging with depressing regularity.&lt;br /&gt;&lt;br /&gt;I have two other printers. An &lt;a href="http://www.epson.com/cgi-bin/Store/consumer/consDetail.jsp?oid=53540920&amp;amp;ref=r0302LLb4K&amp;amp;s_kwcid=epson%20photo%20stylus%20r2400%7C669612000&amp;amp;gclid=CIDs7_bn244CFQIQFQodW04bAA"&gt;Epson Stylus Photo R2400&lt;/a&gt;, which is completely brilliant for photography, but isn't really a general purpose printer, and some generic POS from Lexmark that I got for free when I bought my last computer, which is, umm, temperamental and very slow for basic printing.&lt;br /&gt;&lt;br /&gt;The kind of stuff that I tend to print these days is very different from when I bought my old Deskjet. I want to print google maps and web content. Things that are mixed color and black and white. I want the color bits to look reasonable and the black print to be perfect. The only kind of printer that &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; meets this need is a color laser printer.&lt;br /&gt;&lt;br /&gt;So I started looking at low end color laser printers to see if I could afford them yet, and lo and behold, I can. I settled on the &lt;a href="http://www.shopping.hp.com/webapp/shopping/product_detail.do?storeName=storefronts&amp;amp;landing=printers&amp;amp;category=laserjets&amp;amp;subcat1=color&amp;amp;catLevel=3&amp;amp;product_code=Q6455A%23ABA&amp;amp;tab=overview#defaultAnchor"&gt;HP Color Laserjet 2600n&lt;/a&gt;, which when I ordered it had a $100 instant rebate in effect, making the total 299.99. Less than half of what I paid for my Deskjet 500 way back when.&lt;br /&gt;&lt;br /&gt;The cartridges that come with this printer are full new cartridges (not the crippled "teaser" cartridges that some manufacturers try to slip you) that should print around 2500 pages (mixed duty) before they need to be replaced.&lt;br /&gt;&lt;br /&gt;Now here is where it gets funny. A set of replacement cartridges costs $323.96. That's right, more than the printer. So this printer is &lt;span style="font-style: italic;"&gt;disposable&lt;/span&gt;. I can't believe that I live in a world where color laser printers are disposable.&lt;br /&gt;&lt;br /&gt;The total cost for this printer works out to about 12 cents per page, which isn't bad.&lt;br /&gt;&lt;br /&gt;I feel really sad for the environment, though. This kind of economic model is criminally stupid. Is there anything that isn't disposable anymore?&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-5742881678112994703?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/5742881678112994703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=5742881678112994703' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5742881678112994703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5742881678112994703'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/09/printer-economics.html' title='Printer Economics'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1297604241137575471</id><published>2007-08-13T09:31:00.000-04:00</published><updated>2008-12-11T08:18:05.207-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Staying On Track</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Z2EF6PGeXYw/RsBdlOT9hPI/AAAAAAAAAAw/etl51tIisr0/s1600-h/WeighLoss.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_Z2EF6PGeXYw/RsBdlOT9hPI/AAAAAAAAAAw/etl51tIisr0/s320/WeighLoss.gif" alt="" id="BLOGGER_PHOTO_ID_5098177672261764338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This diagram says a lot. I started the year with South Beach and got discouraged when the losses flattened a bit. Then I switched to my current scheme of restricted caloric intake.&lt;br /&gt;&lt;br /&gt;Are the losses starting to flatten again? How do I keep up the motivation for the last few pounds?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1297604241137575471?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1297604241137575471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1297604241137575471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1297604241137575471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1297604241137575471'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/08/staying-on-track.html' title='Staying On Track'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Z2EF6PGeXYw/RsBdlOT9hPI/AAAAAAAAAAw/etl51tIisr0/s72-c/WeighLoss.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1323586002221917113</id><published>2007-08-04T07:19:00.000-04:00</published><updated>2008-07-07T07:14:05.590-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Enterprise 2.0</title><content type='html'>I have worked in informatics for the same giant multi-national pharmaceutical company for the last 6 or 7 years. In that time I have come to take it for granted that the corporation is highly resistant to change, that experimenting with new technologies is not generally seen as a high value activity* (or at least there are enormous barriers), and that technologies and conveniences I have come to take for granted outside the firewall are simply not going to exist inside the firewall.&lt;br /&gt;&lt;br /&gt;Web 2.0 is one of those things I take for granted doesn't exist. What blogs there are inside the corporation are announced via email (!), don't have advertised RSS feeds (!), aren't generally searchable (!), and if you can find the hidden RSS feed it is often out of sync with the blog (!) and the RSS alert comes long after the email alert (!). I don't even know where to start with how craptastic that is. As an application architect I have often thought of exposing useful alerts and information as RSS or Atom, but the masses have tightly controlled desktops with no RSS reader, so really, what's the point? One of the applications that I work on at the moment has a huge mashup of RSS feeds as one of its key features, but everything remotely "&lt;span style="font-style: italic;"&gt;web 2.0ish&lt;/span&gt;" about it is carefully hidden from view, so as not to frighten the poor user.&lt;br /&gt;&lt;br /&gt;Well, one aspect about working for a giant corporation is that there are always things going on that I would be interested in if only I knew about them.&lt;br /&gt;&lt;br /&gt;It turns out there is a fairly large underground web 2.0 movement that I had no idea existed. &lt;a href="http://corporatepunk.info/blog/"&gt;Simon Revell&lt;/a&gt; and &lt;a href="http://ctrlspc.blogspot.com/"&gt;Jason Marshall&lt;/a&gt; are colleagues of mine from across the pond and they are leading the charge. Yay!&lt;br /&gt;&lt;br /&gt;There are tons of challenges though. I don't think critical mass will ever be reached if we don't have RSS readers on LOTS of desktops, means of exploring the blogs that exist (by searching, by directories with page rank ability, whatever), important feeds that carry extremely useful or critical information (whether from applications or individuals doesn't matter), means of searching blogs, including the ability to search for blogs that LINK to my blog (Joel has a long discussion about why this is better than blog comments &lt;a href="http://www.joelonsoftware.com/items/2007/07/20.html"&gt;here&lt;/a&gt; and &lt;a href="http://www.joelonsoftware.com/items/2007/07/20b.html"&gt;here&lt;/a&gt;), good blogging software that supports not only individual blogs, but group blogs (and that doesn't require reams of paperwork to get started), and good mashup software that works inside the firewall (e.g. &lt;a href="http://pipes.yahoo.com/"&gt;yahoo pipes&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;David&lt;br /&gt;&lt;br /&gt;* I am talking about large scale experimentation. Individual experimentation is, in many circumstances including my own, encouraged. Very large scale experimentation is required, though, to try out any kind of social software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1323586002221917113?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1323586002221917113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1323586002221917113' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1323586002221917113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1323586002221917113'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/08/enterprise-20.html' title='Enterprise 2.0'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2559234259211150825</id><published>2007-07-24T07:09:00.000-04:00</published><updated>2008-07-07T07:11:44.940-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Diet update - success so far</title><content type='html'>The diet has been going great. My last weigh in on 7/21 was 232 pounds, which is down 30 pounds for this latest diet (everything on the blog) and down 45 pounds since the beginning of the year. Yay!&lt;br /&gt;&lt;br /&gt;The tools are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The math and formulas already blogged&lt;/li&gt;&lt;li&gt;A &lt;a href="http://www.moleskines.com/klmc712.html"&gt;Moleskine Cahier&lt;/a&gt; notebook for recording every calorie.&lt;/li&gt;&lt;li&gt;A &lt;a href="http://www.spacepen.com/Public/Home/index.cfm"&gt;Fisher Space Pen&lt;/a&gt; so that I always have a pen with me for said recording.&lt;/li&gt;&lt;li&gt;A digital balance, for calculating the caloric content of foods I prepare.&lt;/li&gt;&lt;li&gt;A copy of the &lt;a href="http://www.amazon.com/Calorie-King-Carbohydrate-Counter-2007/dp/1930448139/ref=pd_bbs_sr_1/002-5593134-2956819?ie=UTF8&amp;s=books&amp;amp;amp;qid=1185275620&amp;amp;sr=8-1"&gt;Calorie King book&lt;/a&gt; for the caloric content of prepared and unlabelled foods.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Still a ways to go, but boy do I feel a lot better about myself. Seventeen more pounds and I am technically not even overweight anymore and I will be the lightest that I have been at any point in the last 10 years or more.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2559234259211150825?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2559234259211150825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2559234259211150825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2559234259211150825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2559234259211150825'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/07/diet-update-success-so-far.html' title='Diet update - success so far'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4996353804054662805</id><published>2007-06-18T07:36:00.000-04:00</published><updated>2008-07-07T07:11:44.941-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>Phew! Back on the Bandwagon.</title><content type='html'>The birthday (and therefore the &lt;a href="http://twentyonetimestwo.blogspot.com/2007/06/buttercream-frosting.html"&gt;Buttercream Frosting&lt;/a&gt;) are over. Back to the diet. I did manage one day of simply remarkable calorie consumption - I need to keep that to a minimum. No measurable weight gain, fortunately.&lt;br /&gt;&lt;br /&gt;That cake sure was tasty, though.&lt;br /&gt;&lt;br /&gt;For reference, that &lt;a href="http://twentyonetimestwo.blogspot.com/2007/06/buttercream-frosting.html"&gt;frosting recipe&lt;/a&gt; spread on a 13X9 Duncan Hines yellow cake mix yields a cake with very close to 8000 calories total (7920). A 1/8th slice then is 990 calories. Yikes.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4996353804054662805?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4996353804054662805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4996353804054662805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4996353804054662805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4996353804054662805'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/06/phew-back-on-bandwagon.html' title='Phew! Back on the Bandwagon.'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6598032756373361979</id><published>2007-06-13T15:46:00.000-04:00</published><updated>2008-07-07T07:14:54.152-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cooking'/><title type='text'>Buttercream Frosting</title><content type='html'>How ironic is it that I am posting about frosting immediately after posting about my weight loss? Every once in a while you have to indulge a tiny bit. This is the very best frosting that I have ever tasted and by far the best that I have ever made. I am putting it in the blog mostly so that I don't lose it. I almost had a heart attack when I couldn't find the recipe.&lt;br /&gt;&lt;br /&gt;The diet is still going well. This is day 16 and I have lost 14 pounds.&lt;br /&gt;&lt;br /&gt;6 cups powdered sugar&lt;br /&gt;3/4 cup butter at room temperature&lt;br /&gt;1/8 teaspoon salt&lt;br /&gt;1/3 cup half-and-half&lt;br /&gt;1 teaspoon vanilla extract&lt;br /&gt;2 tablespoons light corn syrup&lt;br /&gt;&lt;br /&gt;Cream butter on medium in Kitchen aid. Gradually add powdered sugar, adding the salt after the first batch of sugar and alternating with the half-and-half and vanilla extract. Scrape the bowl often. At the end stir in the corn syrup (this keeps the frosting from crystallizing).&lt;br /&gt;&lt;br /&gt;You can make this chocolate by adding 3 squares of melted cooled baking chocolate, but if you do, reduce the sugar a tad or it will be a bit dry. It would probably also work to add a dash more half-and-half, but I haven't tried that.&lt;br /&gt;&lt;br /&gt;I know the chocoholics out there will hate me for saying this, but it is better without the chocolate. My wife vehemently disagrees with that, so your mileage may vary. :-)&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6598032756373361979?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6598032756373361979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6598032756373361979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6598032756373361979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6598032756373361979'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/06/buttercream-frosting.html' title='Buttercream Frosting'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-9191006267822334940</id><published>2007-06-11T06:49:00.000-04:00</published><updated>2008-07-07T07:11:44.941-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='weight loss'/><title type='text'>On Weight Loss</title><content type='html'>I lost a lot of weight a couple of years ago using South Beach. The total including the pre-South Beach cutting back was around 60 pounds. That is a lot of pounds. I thought South Beach was a miracle.&lt;br /&gt;&lt;br /&gt;Then just as I hit my target weight I found out Deb was pregnant. Then shortly after, we found out it was a highly problematic pregnancy. Then we had an infant undergoing lots of surgeries. And now we have a happy healthy toddler.&lt;br /&gt;&lt;br /&gt;It all ultimately turned out great, but none of it did anything good for maintaining my weight, including the present happy healthy toddler situation. So now I am a fat pig again. As the weight was coming back on I made a couple of attempts to start South Beach again, but I found that phase I was never as effective as the first time and at some point I stopped believing that I could religiously follow the South Beach plan for the rest of my life.&lt;br /&gt;&lt;br /&gt;So what to do? I needed a new strategy. I had tipped over the limit again from "overweight" to "obese" (i.e. my BMI was over 30) and something had to change.&lt;br /&gt;&lt;br /&gt;I am a scientist, so in no way do I believe that there is anything ultimately magical about cutting back on carbs. It probably changes your biochemistry a little (OK, definitely), but ultimately what matters for weight loss is calorie reduction. Period. If you burn more calories than you eat, you will lose weight. If you burn fewer calories than you eat you will gain weight. Very simple.&lt;br /&gt;&lt;br /&gt;So I have two choices, burn more calories (exercise more), or eat less. Did I mention that I have a toddler? Excercizing much more is out. I can try to keep myself in the "Active" column (defined as 4000-6000 steps by us pedometer wearing geeks), but there is no way I can rationally aspire to the "Very Active" column (&gt;10,000 steps).&lt;br /&gt;&lt;br /&gt;OK, so I need to eat less. How much less? I needed a rational no BS guide to optimal weight, calorie intake, and the like. I picked up the &lt;a href="http://www.amazon.com/American-Heart-Association-No-Fad-Diet/dp/0307347427/ref=pd_bbs_sr_1/103-0609577-2100662?ie=UTF8&amp;s=books&amp;amp;qid=1181560253&amp;sr=8-1"&gt;No-Fad Diet book&lt;/a&gt; as a resource.&lt;br /&gt;&lt;br /&gt;Step 1. Validate the caloric intake estimates in the book. I am usually (OK, always, I am in the 99.99&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;th&lt;/span&gt; percentile for height) off the chart and what applies to the little people doesn't always apply to me. The book said that to maintain my current weight I would have to be eating between 3300 and 3900 calories per day (or more as I was gaining). So I kept track for several days and sure enough, that was a pretty good estimate.&lt;br /&gt;&lt;br /&gt;Step 2. Set a target weight. Did I mention that I am off the charts? Fortunately the charts are linear and I was able to do a linear regression to determine my ideal weight range. In case anyone else needs them, here are the formulas (height is in inches):&lt;br /&gt;&lt;table str="" style="border-collapse: collapse; width: 360px; height: 126px;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;col style="width: 182pt;" width="242"&gt;  &lt;tbody&gt;&lt;tr style="height: 12.75pt;" height="17"&gt;   &lt;td style="height: 12.75pt; width: 182pt;" height="17" width="242"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;OWLow&lt;/span&gt; = 4.757895 *   Height - 158.411&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;" height="17"&gt;   &lt;td style="height: 12.75pt;" height="17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;OWHigh&lt;/span&gt; = 5.733333 * Height - 192.66&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;" height="17"&gt;   &lt;td style="height: 12.75pt;" height="17"&gt;Obese = 5.733333 * Height - 191.66&lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;" height="17"&gt;   &lt;td style="height: 12.75pt;" height="17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;UW&lt;/span&gt; = 3.785714 * Height - 135.071&lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;You are overweight in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;OWLow&lt;/span&gt; to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;OWHigh&lt;/span&gt; range. You are obese at Obese and higher. And you are underweight below &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;UW&lt;/span&gt;. So I am overweight when over 217 and the middle of my ideal range is 191. That seems low to me, but I'll go with it for now. 217 is definitely OK and if I start to look like a 6 foot 7 inch scarecrow as I move towards 191 I can always reevaluate.&lt;br /&gt;&lt;br /&gt;Step 3. Set a target for daily caloric intake. Fortunately my weight isn't off the charts, so I could just look this up. At my ideal weight of 191, my caloric intake should be between 2483 (inactive) and 2865 (active) to maintain that weight indefinitely. I will most likely always eat more on weekends and I can more easily eat less during the week, so I set a target of 2400 calories (or less) on a seven day moving average, during the diet period. I will adjust this to 2800 or so after I lose the weight.&lt;br /&gt;&lt;br /&gt;Step 4. Don't cheat. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Hmmm&lt;/span&gt;, how to do this? I chose to be obsessive about writing down every calorie that I put in my mouth. So far that is working for me.&lt;br /&gt;&lt;br /&gt;I have been doing this for 14 days now and I can report that I have dropped from a starting weight of 262 to 250. It is very exciting to lose 12 pounds, and very depressing to think that I have as much as 59 to go. Still, this is every bit as good as South Beach was the first time (so far) and I feel like I have control over the elements of success.&lt;br /&gt;&lt;br /&gt;David&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-9191006267822334940?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/9191006267822334940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=9191006267822334940' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/9191006267822334940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/9191006267822334940'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/06/on-weight-loss.html' title='On Weight Loss'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4930899609398222548</id><published>2007-02-28T07:25:00.000-05:00</published><updated>2008-07-07T07:15:59.241-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>Hiring Resolution</title><content type='html'>I have been having so much fun reading the &lt;a href="http://www.codinghorror.com/blog/"&gt;coding horror blog&lt;/a&gt; that I have decided it deserves a permanent link. &lt;a href="http://twentyonetimestwo.blogspot.com/2007/02/no-no-no-do-not-even-think-of-doing.html"&gt;Not that I always agree&lt;/a&gt; with what he says, or anything. But he manages to be thought provoking for sure.&lt;br /&gt;&lt;br /&gt;He wrote a post a while back on the &lt;a href="http://www.codinghorror.com/blog/archives/000543.html"&gt;vast chasm&lt;/a&gt; between those who can program and those who cannot. That post, especially when you &lt;a href="http://www.cs.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf"&gt;dig deep&lt;/a&gt; into some of the source material, really gets you thinking about who you should (or should not) hire. Now he has a &lt;a href="http://www.codinghorror.com/blog/archives/000781.html"&gt;very scary post&lt;/a&gt; up about how most &lt;span style="font-style: italic;"&gt;programmers &lt;/span&gt;can't program that should be required reading for anyone who has to hire programmers.&lt;br /&gt;&lt;br /&gt;"But wait!" I hear you cry. "That is just the opinion of a few jaded people, it isn't scary at all." Regrettably these observations dovetail very neatly with my real world experience. &lt;span style="font-weight: bold;"&gt;That&lt;/span&gt; is the scary bit.&lt;br /&gt;&lt;br /&gt;So even though it is well after the beginning of the year, I have a new resolution. I hereby resolve to FIND OUT if people can actually program before I hire them or recommend them for hire.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4930899609398222548?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4930899609398222548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4930899609398222548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4930899609398222548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4930899609398222548'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/02/hiring-resolution.html' title='Hiring Resolution'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1090020882873690273</id><published>2007-02-08T15:45:00.000-05:00</published><updated>2008-07-07T07:18:01.561-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>No. No. No. Do not even THINK of doing that.</title><content type='html'>Over on &lt;a href="http://www.codinghorror.com/blog/"&gt;Coding Horror&lt;/a&gt; Jeff Atwood has a &lt;a href="http://www.codinghorror.com/blog/archives/000786.html"&gt;post up&lt;/a&gt; about a post that Raymond Chen had up.  And I am going to comment on Jeff's post here, making this a meta meta blog, I guess.&lt;br /&gt;&lt;br /&gt;The whole thing is talking about how dialog boxes confuse clueless users and they tend not to do the right things when they see them. OK, fine, I agree that that happens and that it is a very real problem with computer usability.&lt;br /&gt;&lt;br /&gt;But then he (Jeff) makes this comment:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote&gt; If you need to update, do so. if you need to download and apply security patches in the background, do so. If you need to send crash data, do so. Silently. And do it in the background, when the PC is idle-- without bothering the user. &lt;/blockquote&gt;&lt;br /&gt;AAAAAAAHHHHHH! NO, NO, NO.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;I &lt;span style="font-weight: bold;"&gt;never&lt;/span&gt; want my computer to install anything unless I know that it is happening. I &lt;span style="font-weight: bold;"&gt;never&lt;/span&gt; want anything sent out of my computer unless I know that it is happening.&lt;br /&gt;&lt;br /&gt;I run software to notify me when malicious software (and &lt;span style="font-weight: bold;"&gt;anything&lt;/span&gt; that does something on my computer that I am unaware of is malicious, even if Microsoft wrote it) tries to access the internet.&lt;br /&gt;&lt;br /&gt;And I disable all automatic updates. Of &lt;span style="font-weight: bold;"&gt;course&lt;/span&gt; I want to have the latest security patches (and I do), but any install, no matter how innocent, can break my system and I at least want to be able to identify the culprit. If I install an IE patch and all of a sudden Firefox stops working or something, then at least I know what to blame and where to look for a fix.&lt;br /&gt;&lt;br /&gt;That kind of automagical maintainance logic belongs in an appliance, not a general purpose computer. Only when all of the variables can be fully controlled does it make sense in my opinion. If it does exist in a general purpose computer, it should be something I can opt into, not opt out of.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1090020882873690273?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1090020882873690273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1090020882873690273' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1090020882873690273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1090020882873690273'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/02/no-no-no-do-not-even-think-of-doing.html' title='No. No. No. Do not even THINK of doing that.'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-1699760287764230957</id><published>2007-02-08T15:35:00.000-05:00</published><updated>2008-07-07T07:17:40.696-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>The Lack of Consequences</title><content type='html'>OK, I admit it. I read &lt;a href="http://en.wikipedia.org/wiki/Wil_wheaton"&gt;Wil Wheaton&lt;/a&gt;'s &lt;a href="http://wilwheaton.typepad.com/"&gt;blog&lt;/a&gt;. Like many trekkies I absolutely hated Wesley Crusher, but I started reading Wil's poker blog when he started playing and, well, he doesn't seem like such a bad fellow.&lt;br /&gt;&lt;br /&gt;Anyway, he has &lt;a href="http://wilwheaton.typepad.com/wwdnbackup/2007/02/geek_in_review_.html"&gt;this wistful post&lt;/a&gt; up about the disapearance of video arcades, which I remember even better than he does being 7 years older. The whole thing makes for good reading, but he makes a point at the end that really clicked with me.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;blockquote&gt;My kids' generation, with their online gaming and its associated sense of anonymity and unaccountability, aren't getting the same social workout that we all got when we were kids. When I played a two player game against another kid and I beat him, if I taunted him mercilessly and made explicit references to his mother's sex life and my role in it, he would have justifiably kicked the everliving shit out of me; so I learned that it was always a good idea to be gracious in victory and defeat. Contrast that with the foul and profane behavior exhibited in today's online gaming worlds, by players who are old enough to know better, or young enough not to care.&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;I have played a fair bit of &lt;a href="http://en.wikipedia.org/wiki/MMORPG"&gt;MMORPG&lt;/a&gt;s and I have to say that while most of the people you meet online behave fairly well, there is a distinct trend for a significant fraction of the younger crowd to behave in ways that are more than two sigmas outside of the normal distribution of social behavior. Sometimes &lt;span style="font-style: italic;"&gt;way more&lt;/span&gt; than two sigmas. It has made me a big fan of /ignore.&lt;br /&gt;&lt;br /&gt;I wonder how I will overcome this with &lt;a href="http://twentyonetimestwo.blogspot.com/2007/02/little-one.html"&gt;my own son&lt;/a&gt;? Will gaming and social interaction get more and more anonymous as he grows?&lt;br /&gt;&lt;br /&gt;&lt;span class="" 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;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;span class="" 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;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-1699760287764230957?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/1699760287764230957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=1699760287764230957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1699760287764230957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/1699760287764230957'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/02/lack-of-consequences.html' title='The Lack of Consequences'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2939688308118435494</id><published>2007-02-08T15:12:00.001-05:00</published><updated>2007-02-03T07:17:24.846-05:00</updated><title type='text'>The little one.</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://photos1.blogger.com/x/blogger2/575/618220140589336/1600/z/367883/120206_14042-753574.jpg"&gt;&lt;img src="http://photos1.blogger.com/x/blogger2/575/618220140589336/320/z/102580/120206_14042-753574.jpg" width="320"/&gt;&lt;/a&gt;&lt;/p&gt;Will is the driver.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2939688308118435494?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2939688308118435494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2939688308118435494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2939688308118435494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2939688308118435494'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/02/little-one.html' title='The little one.'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6124990250499636032</id><published>2007-01-18T19:27:00.000-05:00</published><updated>2008-07-07T07:14:05.591-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Manager Tools</title><content type='html'>A &lt;a href="http://console-stuff.blogspot.com/"&gt;friend&lt;/a&gt; of mine recently &lt;a href="http://console-stuff.blogspot.com/2006/12/management-tools-podcast.html"&gt;blogged about&lt;/a&gt; the &lt;a href="http://manager-tools.com/"&gt;Manager Tools&lt;/a&gt; podcast, so I decided to check it out. The topics looked interesting so I set up iTunes to download the entire history of podcasts (that were available in iTunes - only the last year or so) and went to bed. What can I say? I have a long commute and sometimes I am starved for things to occupy the time in a constructive way. I can't quite remember how I managed before iPods and podcasts and platinum subscriptions to audible.com, but I am sure it must have involved banging my head with blunt instruments or something.&lt;br /&gt;&lt;br /&gt;Anyway, I have been listening to the 'casts all week and, well, they are awesome. I don't really have the experience to endorse the content, but it all seems on target. I DO have the experience to endorse the presentation style and the topics covered, though, and they are great. I actually listened to two guys talk about how to insinuate yourself into a conversation circle at a social gathering for 29 minutes and 40 seconds and enjoyed it. I learned something. And I am almost anxious to attempt to apply the lessons. Me. A &lt;span style="font-style: italic;"&gt;bona fide&lt;/span&gt; introverted &lt;a href="http://en.wikipedia.org/wiki/INTP"&gt;INTP&lt;/a&gt; computer geek and pocket protector wearing scientist. Well, OK, maybe I have broken myself of the pocket protector habit, but the rest is true. Ask anyone.&lt;br /&gt;&lt;br /&gt;So if you are a manager, or you want to be a manager some day, or you have a manager, you should go check these guys out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6124990250499636032?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6124990250499636032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6124990250499636032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6124990250499636032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6124990250499636032'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/manager-tools.html' title='Manager Tools'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-2293352271920622234</id><published>2007-01-17T09:45:00.000-05:00</published><updated>2007-01-17T06:46:14.993-05:00</updated><title type='text'>Fear of the Unknown</title><content type='html'>I am starting to worry about &lt;a href="http://mediaroom.pfizer.com/index.php?s=press_releases&amp;item=138"&gt;the&lt;/a&gt; &lt;a href="http://www.bloomberg.com/apps/news?pid=20601087&amp;amp;sid=aTJCkryWln.Y&amp;amp;refer=home"&gt;big&lt;/a&gt; &lt;a href="http://www.boston.com/business/globe/articles/2007/01/12/pfizer_to_cut_workforce_rd_budget/"&gt;upcoming&lt;/a&gt; &lt;a href="http://www.nysun.com/article/46546"&gt;announcements&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Change has been a constant companion ever since I took this job, so on the one hand I should be used to it. And I am. But on the other hand knowing the exact day on which your life may change (or start to change, as it won't happen overnight) is a bit unnerving.&lt;br /&gt;&lt;br /&gt;Even though I think that the most likely scenarios will have me only indirectly impacted (e.g. I will know people who get walking papers) it is draining my energy.&lt;br /&gt;&lt;br /&gt;I hope that Kindler makes good on his promise to make it quick.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-2293352271920622234?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/2293352271920622234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=2293352271920622234' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2293352271920622234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/2293352271920622234'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/fear-of-unknown.html' title='Fear of the Unknown'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6635008309976493483</id><published>2007-01-16T02:48:00.000-05:00</published><updated>2007-01-16T02:51:55.548-05:00</updated><title type='text'>Whoa!</title><content type='html'>I do not believe I have ever had this much free time. Or this much candy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://missedmanners.wordpress.com/2007/01/12/what-i-did-over-christmas-vacation/"&gt;http://missedmanners.wordpress.com/2007/01/12/what-i-did-over-christmas-vacation/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6635008309976493483?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6635008309976493483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6635008309976493483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6635008309976493483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6635008309976493483'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/whoa.html' title='Whoa!'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-3123939603746673745</id><published>2007-01-15T10:25:00.001-05:00</published><updated>2008-07-07T07:04:48.881-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Careers and Business Quality</title><content type='html'>I am reading &lt;span style="font-style: italic;"&gt;The Tao of Warren Buffett&lt;/span&gt; by Mary Buffett and David Clark. It is basically a book of very short pithy statements that Warren has made with about half a page of commentary and interpretation. It hasn't changed my life, or anything, but I am enjoying it.&lt;br /&gt;&lt;br /&gt;Saying number 28 is, "Managing your career is like investing - the degree of difficulty does not count. So you can save yourself money and pain by getting on the right train."&lt;br /&gt;&lt;br /&gt;The commentary is basically that if you work for a wonderful company (great economics, great management, consistently great return on capital) then good things will happen. If not, then not.&lt;br /&gt;&lt;br /&gt;I have never ever thought of career planning in terms like that before, but it absolutely makes sense. The pharmaceutical industry used to have great economics. The question is, does it still? Lately I think we are keeping our great returns with acquisitions and write-offs and cost cutting and other things that don't really have much to do with effectively growing an invested dollar. I mean they aren't unrelated, but they aren't really long term strategies. Can the pharmaceutical economics recover? If big pharma manages to break the mold of the blockbuster small molecule, will the FDA change fast enough for it to matter?&lt;br /&gt;&lt;br /&gt;In a company with poor economics, "...raises will be few and long between, and there is greater risk of losing your job because management will always be under pressure to cut costs." Does that sound familiar to anyone?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-3123939603746673745?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/3123939603746673745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=3123939603746673745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3123939603746673745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/3123939603746673745'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/careers-and-business-quality.html' title='Careers and Business Quality'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-5496869540616125824</id><published>2007-01-14T19:18:00.000-05:00</published><updated>2007-01-14T20:45:10.023-05:00</updated><title type='text'>Finding Investments</title><content type='html'>&lt;span style="font-style: italic;"&gt;Rule #1 Investing&lt;/span&gt; by Phil Town is one of my favorite investment books. I am not completely sold on exactly how he uses the up and down arrows, but everything else seems pretty much spot on. The method and explanations are just so matter of fact. Clear. Simple. Plus he might be right about the arrows.&lt;br /&gt;&lt;br /&gt;His matter of fact style is exemplified in this &lt;a href="http://www.instructables.com/id/E30LR180T4EWP872BS/?ALLSTEPS"&gt;post on finding great companies&lt;/a&gt; in an industry (or in this case, failing to find any great companies).&lt;br /&gt;&lt;br /&gt;Click here, click there, see this, see that. These companies are all crap, move along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-5496869540616125824?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/5496869540616125824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=5496869540616125824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5496869540616125824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/5496869540616125824'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/finding-investments.html' title='Finding Investments'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-6864452225264482488</id><published>2007-01-13T09:20:00.000-05:00</published><updated>2007-01-13T11:33:35.289-05:00</updated><title type='text'>Times Change</title><content type='html'>My how times do change. I was thinking about the links I wanted to add on the right. I want to put links there that reflect what I look at and what I think about. What struck me, though, is the links that I decided &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; to put there.&lt;br /&gt;&lt;br /&gt;I didn't put &lt;span style="font-weight: bold;"&gt;any&lt;/span&gt; links to the Pragmatic Programmer folk. &lt;span style="font-style: italic;"&gt;The Pragmatic Programmer&lt;/span&gt; was one of the books that most strongly influenced how I think about the craft of programming and they continue to churn out excellent books (&lt;span style="font-style: italic;"&gt;My Job Went To India&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Pragmatic Ruby&lt;/span&gt;, etc.). They were some of the first blogs that I discovered and some that I read the most. But the guys have moved on to Ruby and Rails and I work in Corporate America where we are just barely starting to move to Java5. It just isn't relevant to me at the moment. Sigh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-6864452225264482488?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/6864452225264482488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=6864452225264482488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6864452225264482488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/6864452225264482488'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/times-change.html' title='Times Change'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5064459391707841087.post-4885512727051170124</id><published>2007-01-12T07:01:00.000-05:00</published><updated>2007-01-12T12:20:56.740-05:00</updated><title type='text'>A New Blog</title><content type='html'>So what does one talk about in the first post of a new blog? The post that no one will ever read?&lt;br /&gt;&lt;br /&gt;I guess I'll just make it a short description of what I  expect I'll cover in the blog. Since it is brand new I have no idea whether this will be the only post ever made, or whether I will catch the blogging bug full force and start blogging regularly.&lt;br /&gt;&lt;br /&gt;Oh, and the name of course. I have to explain the name. Well, "Forty Two" and "42" were taken.&lt;br /&gt;&lt;br /&gt;The bottom line is that this is a personal blog and I will ultimately write about whatever interests me. This will either interest other people or not, and other people will either read it or not.&lt;br /&gt;&lt;br /&gt;So here is a list of some of the things you can expect to see me blog about. If I blog, that is.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Geek stuff. New toys, new technologies&lt;/li&gt;&lt;li&gt;Java stuff. I am a Java programmer and I love the whole idea of portable code running on a virtual machine.&lt;/li&gt;&lt;li&gt;Programming, code quality, methodologies.&lt;/li&gt;&lt;li&gt;Management/leadership stuff. Yes, I actually find this interesting.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Investing stuff. I am a value investor. I believe in the obvious goodnes of buying a dollar for 50 cents. But I have not had lots of money to invest in this life, so I am feeling my way along. I'm sure I'll have things to say about that.&lt;/li&gt;&lt;li&gt;Pharmaceutical industry stuff. I work for the largest pharmaceutical company in the world. I have opinions.&lt;/li&gt;&lt;li&gt;Poker&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Personal stuff&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;David&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/davidklatte"&gt;&lt;img src="http://www.linkedin.com/img/webpromo/btn_viewmy_160x25.gif" alt="View David Klatte's profile on LinkedIn" border="0" height="25" width="160" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5064459391707841087-4885512727051170124?l=twentyonetimestwo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://twentyonetimestwo.blogspot.com/feeds/4885512727051170124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5064459391707841087&amp;postID=4885512727051170124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4885512727051170124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5064459391707841087/posts/default/4885512727051170124'/><link rel='alternate' type='text/html' href='http://twentyonetimestwo.blogspot.com/2007/01/new-blog.html' title='A New Blog'/><author><name>David</name><uri>http://www.blogger.com/profile/07697430923464144248</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/-CFApsZJkHLw/TlaJhbJ1KgI/AAAAAAAAiFw/J1oiOSlt3Mc/s1600/IMG_0001.jpg'/></author><thr:total>0</thr:total></entry></feed>
