tag:blogger.com,1999:blog-89549782024-03-18T19:54:48.304-07:00Clearing My HeadIn this blog you'll find lots of programming and technology, a little music, a little personal, and a sprinkle of productivity geeking. The opinions expressed here are my own and don't necessarily reflect the opinions of anyone else.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.comBlogger149125tag:blogger.com,1999:blog-8954978.post-76406343286725255542009-05-20T19:13:00.001-07:002009-05-20T19:13:41.065-07:00Small Taste of Scala<p>I just got a small taste of the power of <a href="http://www.scala-lang.org/">Scala</a>, and it was quite yummy.</p> <p>It all started when I was looking for a way to convert a Java time stored in a database table into a readable date and time.  If I were to write a Java class, it would involve:</p> <ul> <li>Create a Java source file to declare my class <ul> <li>Declare import for java.util.Calendar </li> <li>Define a main function <ul> <li>Parse the arguments </li> <li>Get a Calendar instance </li> <li>Set the time on the Calendar instance </li> <li>Print out the Date represented by the Calendar </li> </ul> </li> </ul> </li> <li>Compile the Java source file </li> <li>Run the main function on the class, passing in the appropriate argument </li> </ul> <p>This seemed really time consuming and ridiculous considering how simple it should be to do this.  I’ve been spending alot of time in <a href="http://www.python.org/">Python</a>, and I would probably be able to do this from the Python <a class="zem_slink" title="Read-eval-print loop" href="http://en.wikipedia.org/wiki/Read-eval-print_loop" rel="wikipedia">REPL</a> in a few (or 1) line of code.  So, I started looking at dynamic languages on top of the JVM.</p> <p>I decided to give Scala a shot.  Scala has a REPL that comes with the SDK.  So, I downloaded it and fired it up.  I then had to figure out how to write my code.</p> <p>I’ll be honest – I didn’t read the manual and as a result, I don’t know much about Scala.  I just wanted to do something really simple.  So, I noticed on the Scala site that “<a href="http://www.scala-lang.org/node/219">Code Examples</a>” was one of the main navigation options.  I looked at the Simple Examples and figured out how to call Java classes.  Looked pretty simple.</p> <p>I fired up Scala’s REPL, and defined a function:</p> <pre style="border-bottom: #999999 1px dashed; border-left: #999999 1px dashed; padding-bottom: 5px; line-height: 14px; background-color: #eee; padding-left: 5px; width: 100%; padding-right: 5px; font-family: andale mono, lucida console, monaco, fixed, monospace; color: #000000; font-size: 12px; overflow: auto; border-top: #999999 1px dashed; border-right: #999999 1px dashed; padding-top: 5px"><code>def convertTime(time: Long) { val cal = java.util.Calendar.getInstance() cal.setTimeInMillis(time) println(cal.getTime())}</code></pre><br /><br /><p>The function is pretty simple.  It just takes a Long time in milliseconds and prints out the corresponding String representation of that time value.  Once this was defined, I could call the function with the values from my database table and figure out what Date value they represented:</p><br /><br /><pre style="border-bottom: #999999 1px dashed; border-left: #999999 1px dashed; padding-bottom: 5px; line-height: 14px; background-color: #eee; padding-left: 5px; width: 100%; padding-right: 5px; font-family: andale mono, lucida console, monaco, fixed, monospace; color: #000000; font-size: 12px; overflow: auto; border-top: #999999 1px dashed; border-right: #999999 1px dashed; padding-top: 5px"><code>scala> convertTime(1242942308240L)Thu May 21 16:45:08 CDT 2009</code></pre><br /><br /><p>The entire sequence of events from start to finish probably took 10 minutes.  Yes – that’s much longer than if I had written a simple Java class.  However, I think it’s VERY impressive to go from 0 to Scala function with results in 10 minutes.  To me, this is a a testament to how approachable Scala is as a language.  Further, I am amazed at what a great job its implementers have done with creating a very “dynamic language” experience on top of the JVM.  </p><br /><br /><p>Now, if I only had more time to play with it…</p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><p></p><br /><br /><div class="zemanta-pixie"><a class="zemanta-pixie-a" title="Reblog this post [with Zemanta]" href="http://reblog.zemanta.com/zemified/9118dc7c-78f1-4f64-8896-82c70b269e42/"> </a></div> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-56729699811075496032009-01-23T07:45:00.000-08:002009-01-23T08:34:12.278-08:00Traveling in One Bag<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.redoxx.com/misc/images/color-tab/airboss-midnight.jpg"><img style="margin: 0px 10px 10px; float: left; cursor: pointer; width: 78px; height: 77px;" src="http://www.redoxx.com/misc/images/color-tab/airboss-midnight.jpg" alt="" border="0" /></a>Over the years I've started realizing some things about myself. One of which is that I'm always going to be looking for the way to do something better. This has, and will, lead me to drink the <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Kool</span> Aid of productivity experts and organizational systems. I admit it - I'm a productivity geek.<br /><br />About a year ago I stumbled upon the <a href="http://www.onebag.com/">One Bag site</a>. It obviously struck a cord with me and I hungrily devoured every page on the site. I decided right then and there that I would buy a suitable bag, lighten my load, and make the jump on my next trip. This would be just the thing I was looking for on business travel.<br /><br />The bag I chose was a <a href="http://www.redoxx.com/catalog/airline-carry-on-luggage/p_91018-air-boss.html?utm_source=homepage&utm_medium=flash&utm_content=productscroll_v2&utm_campaign=teasers">Red <span class="blsp-spelling-error" id="SPELLING_ERROR_1">Oxx</span> Air Boss</a>. This was largely based on the fact that Doug <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Dyment</span>, the creator of One Bag, helped design it. However, I was drawn to how well designed and built the bag appeared to me (I also have a thing for bags). Once I received the bag, I realized that I had made an exceptional choice. The Air Boss is simply fantastic. I won't go into it here, because <a href="http://www.onebag.com/business-bags.html">others</a> <a href="http://www.redoxx.com/articles/one-bag-one-world-air-boss-5-star-review.html">have lauded</a> it <a href="http://www.redoxx.com/articles/PracticalHacks-rates-Air-Boss-Bulletproof-Workhors.html">at length</a>.<br /><br />My first excursion traveling in one bag was a 5 day vacation to Tennessee. I packed my Air Boss using Doug's <a href="http://www.onebag.com/pack.html">bundle wrapping technique</a> for my clothes. I took a few pairs of jeans which made my bundles big and heavy, but everything fit in the Boss. I also packed enough shirts, undergarments, toiletries, laptop computer and charger, a book, and a magazine. I packed a dressy pair of shoes in my wife's bag (she was checking hers), but everything else fit in one bag! The trip was great - didn't have to worry about lost luggage, didn't have to worry about weight limits, and I didn't have anything stowed under the seat in front of me. A successful trip and I was happy. But, could I make it work for business?<br /><br />This week I had a 3 day business trip to Chicago. I only needed to pack 2 days of clothing because I traveled in 1 day and out the 3rd day. I packed up the Boss with 2 sets of clothes, pajamas (not necessary, but I had a room), undergarments, toiletries, laptop and charger, <a href="http://us.jawbone.com/">Jawbone</a>, <span class="blsp-spelling-error" id="SPELLING_ERROR_3">USB</span> sticks, <span class="blsp-spelling-error" id="SPELLING_ERROR_4">iPod</span>, Headphones, <a href="http://www.amazon.com/Amazon-com-kindle/dp/B000FI73MA">Kindle</a>, small notebook with pen, plastic folder, a magazine, and <span class="blsp-spelling-error" id="SPELLING_ERROR_5">USB</span> charger cords for <span class="blsp-spelling-error" id="SPELLING_ERROR_6">iPod</span>, cell phone, and Jawbone. I wore my heavy coat with my gloves and ear muffs in my pockets. I packed my laptop in a <a href="http://www.tombihn.com/page/001/PROD/300/TB0300">Brain Cell</a> from <a href="http://www.tombihn.com/">Tom <span class="blsp-spelling-error" id="SPELLING_ERROR_7">Bihn</span></a>. This makes a great little laptop bag when you get to your destination, and you can use the <span class="blsp-spelling-corrected" id="SPELLING_ERROR_8">shoulder</span> strap from the Air Boss with the Brain Cell.<br /><br />Traveling light to Chicago on business in the winter was a breeze. My Boss easily fit in the overhead on the plane. I folded my coat and put it under the seat in front of me. The Kindle was excellent because I took two books, a <span class="blsp-spelling-error" id="SPELLING_ERROR_9">whitepaper</span>, and an essay with me on the device drastically cutting down on my load.<br /><br />I have now become such a huge fan of traveling in One Bag and my Air Boss, I don't want to go back. Although I'm still not sure I fully understand how people travel internationally this way, I'm building the courage to try it some day. I'm a convert... and a geek... especially because I took the time to write this post! ;-)Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-85871540376555246822009-01-04T13:03:00.001-08:002009-01-04T13:03:24.409-08:00Twisted Documentation: The Pasta Theory of Design<p><a href="http://lh3.ggpht.com/_VLyljNg61jc/SWEkFxGSd7I/AAAAAAAAAt0/osUd3xld9RM/s1600-h/1405309321_63eddae70d_b%5B4%5D.jpg"><img title="1405309321_63eddae70d_b" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="172" alt="1405309321_63eddae70d_b" src="http://lh4.ggpht.com/_VLyljNg61jc/SWEkGm-kO7I/AAAAAAAAAt4/RT5erGk0rK8/1405309321_63eddae70d_b_thumb%5B2%5D.jpg?imgmax=800" width="131" align="right" border="0" /></a> Over the holidays I’ve been learning the Twisted framework and reading through the Twisted Core Documentation.  I came across this gem of an analogy… </p> <blockquote> <p>The pasta theory of design: </p> <ul> <li>Spaghetti: each piece of code interacts with every other piece of code [can be implemented with GOTO, functions, objects] </li> <li>Lasagna: code has carefully designed layers. Each layer is, in theory independent. However low-level layers usually cannot be used easily, and high-level layers depend on low-level layers. </li> <li>Ravioli: each part of the code is useful by itself. There is a thin layer of interfaces between various parts [the sauce]. Each part can be usefully be used elsewhere. </li> <li>...but sometimes, the user just wants to order "Ravioli", so one coarse-grain easily definable layer of abstraction on top of it all can be useful.</li> </ul> </blockquote> <p><a href="http://twistedmatrix.com/projects/core/documentation/howto/tutorial/library.html">Twisted Documentation: The Evolution of Finger: making a finger library</a></p> <p>I love it!</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-6358721664276895722008-10-31T10:14:00.001-07:002008-10-31T10:14:02.378-07:00Alfresco Developer Guide<p><a href="http://lh5.ggpht.com/_VLyljNg61jc/SQs81zf-buI/AAAAAAAAAgI/jXTbeaVoOp0/s1600-h/image%5B3%5D.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="244" alt="image" src="http://lh4.ggpht.com/_VLyljNg61jc/SQs82fLD_QI/AAAAAAAAAgM/80qhU0zlPc4/image_thumb%5B1%5D.png?imgmax=800" width="199" align="right" border="0" /></a>My friend <a href="http://www.ecmarchitect.com">Jeff Potts</a> <a href="http://ecmarchitect.com/archives/2008/10/29/862">announced today</a> that his book, “<a href="http://www.packtpub.com/alfresco-developer-guide/book">Alfresco Developer Guide</a>”, has been released.   Jeff’s been working on the book for quite a while, and it looks to be packed with great examples and information about the ins and outs of the Alfresco content management system.</p> <p>I’ve ordered my copy.</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-30312977969958400272008-10-21T10:08:00.001-07:002008-10-21T10:08:01.094-07:00The Weekly Squeak: ‘Smalltalk is cool again’, says Gartner<p>Via: <a href="http://news.squeak.org/2008/10/11/smalltalk-is-cool-again-says-gartner/">The Weekly Squeak: ‘Smalltalk is cool again’, says Gartner</a> <br /> <br />There is an article from a Gartner analyst talking about <a href="http://blogs.gartner.com/mark_driver/2008/10/09/remember-smalltalk/">a renewed interest in Smalltalk</a>.  Speaking for myself, I’ve come around to Smalltalk over the last couple of years and I’m very glad that I did.  It’s one of the coolest languages/platforms I’ve ever laid my hands on.</p> <p>In fact, in case you were wondering, I’ve temporarily put Erlang aside to go back and visit Smalltalk land.  It’s just much more productive when you have limited time available.</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-3379137129582807262008-07-30T14:27:00.001-07:002008-07-30T14:27:34.424-07:00Finished the Erlang Book<p>I finished reading Joe Armstrong’s “<a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a>” book a couple of nights ago. It’s a great introduction to Erlang as well as a great programming book. I’ve always loved the Pragmatic Programmer books, and this one is no exception. It’s filled with non-trivial working examples and pointers to more information. It left me feeling ready to dive into the Erlang docs and write some code!</p> <p>So, that’s exactly what I’m going to do. I’m currently plotting a program that I’m going to write in Erlang. I want to make sure that it’s non-trivial and that it benefits from concurrency. I’ll loop you in when my scheme is ready to hatch.</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-82862760484041420542008-07-30T14:22:00.001-07:002008-07-30T14:22:30.990-07:00Erlang Podcast with Joe Armstrong<p>I just listened to <a href="http://www.se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang">a good podcast interview</a> with Joe Armstrong on Software Engineering Radio. Joe talks about the history of Erlang, its features, how the VM is implemented, and how you can use it to scale on multi-cores or across multiple machines. It’s a good introduction to what Erlang is from the man himself.</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-52151412942919788732008-07-26T10:19:00.001-07:002008-07-26T10:19:26.578-07:00Erlang Update<p>I’ve been tearing through Joe Armstrong’s book “<a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a>”.  I <a href="http://tompierce.blogspot.com/2008/07/erlang-lovin-it.html">started reading it</a> about 14 days ago, and I’m already in Chapter 17.  It’s a well written book and a great introduction to the language and some key libraries.</p> <p>I think the reason I’m working through it at such a rapid clip is that Erlang has captured my imagination.  I’m fascinated by how easy it is to program multi-process applications and distribute those processes across machines.  I’ve written multi-threaded code in Java, Python, and Common Lisp.  Erlang is <strong>BY FAR</strong> the easiest language for writing MP code.</p> <p>I can’t wait to finish the book and write my own application. I’m forcing myself to finish the book first because I want to make sure I know all the right tricks before I get started. I think that’s the right idea because I’m now learning about Mnesia and soon I will learn about advanced OTP techniques.</p> <p>I can’t convey how excited I am by this language/platform. I saw my friend <a href="http://ecmarchitect.com/">Jeff</a> last night and I bored him to death as I gushed about Erlang. He mentioned that <a href="http://ecmarchitect.com/archives/2008/07/23/841">he had recently posted about CouchDB</a> and that it would be cool to develop something social on top of that. Indeed…</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com7tag:blogger.com,1999:blog-8954978.post-2851104912787163532008-07-12T12:30:00.001-07:002008-07-12T12:30:19.649-07:00Erlang: Lovin’ It<p></p> <p></p> <p>OK, I couldn’t resist. I pulled the Erlang book off the shelf this week and dove in. I needed a distraction from work, then the whole idea of writing concurrent programs caught my fancy, and I saw the syntax that made me go hmmm…  now I’m hooked.</p> <p>First impression of “<a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a>” – it’s not for beginning programmers. Which I really like, but I can imagine that if you don’t have programming experience, you’d struggle. Also, it helps alot to know another functional language (like Lisp) when Joe starts talking about list comprehensions and anonymous functions. I would rate the book at the "advanced” level.</p> <p>All that said, I’m loving the book and loving learning the language. It’s entertaining and gives me the excuse to use Emacs, which I don’t use often enough these days. :-) I’m using Luke Gorrie’s excellent <a href="http://code.google.com/p/distel/">Distel</a> mode for Emacs.</p> <p>I’m going to try to refrain from giving you a blow-by-blow of my Erlang experience until I get to concurrent programming. Then, all bets are off.  :-)</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-28422577354826136212008-07-06T12:06:00.001-07:002008-07-06T12:06:46.259-07:00Erlang in My Future<p><a href="http://lh4.ggpht.com/tlpierce/SHEXwyVT4dI/AAAAAAAAAec/yv3ku8kaWag/s1600-h/jaerlang%5B5%5D.jpg"><img title="jaerlang" style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="234" alt="jaerlang" src="http://lh4.ggpht.com/tlpierce/SHEXxSj5gmI/AAAAAAAAAeg/AWvsdO7ewKY/jaerlang_thumb%5B3%5D.jpg?imgmax=800" width="196" align="right" border="0" /></a> I’ve been thinking about trying out <a href="http://www.erlang.org/">Erlang</a> for a couple of years. Last night, my wife and I were in the bookstore… alone… with time to look at books. I picked up “<a href="http://www.pragprog.com/titles/jaerlang/programming-erlang">Programming Erlang</a>”. Reading through the cover and some of the front matter drew me in. So, after some deliberation, I bought it.</p> <p>I read through Chapter 2 last night. Boy, Erlang is unique. However, I think I’m going to enjoy it. </p> <p>I’ve put it on the bookshelf for now. I have some other reading and techie stuff to knock out before I really dive in. But, I’m getting excited.</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com2tag:blogger.com,1999:blog-8954978.post-87459923452800003302008-07-01T06:35:00.001-07:002008-07-01T06:35:13.723-07:00EnterpriseBlend – My Enterprise 2.0 Blog<p></p> <p>One of the things I’ve steadily grown more passionate about over the last 6 months or so is <a href="http://en.wikipedia.org/wiki/Enterprise_social_software">Enterprise 2.0</a>.  I characterize it as the move of <a href="http://en.wikipedia.org/wiki/Web_2">Web 2.0</a> technologies and ideas into business contexts.  The reason I’m so passionate about it is because I’m witnessing the technologies that I’ve been using in my private life move into the enterprise and make meaningful contributions.  In addition, these technologies and ideas usually challenge the status quo of business and it’s fascinating to watch businesses respond to this.</p> <p>If you agree, or your just curious, please join me on <a href="http://www.enterpriseblend.com/">EnterpriseBlend</a>.  Hope to see you there!</p> Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-8637065946679372392008-06-06T09:23:00.000-07:002008-06-06T09:23:48.408-07:00Google Earth map of Disney World goes online - CNN.comCNN reports that <a href="http://www.cnn.com/2008/TECH/06/06/disney.map.ap/index.html?eref=rss_tech">Disney has released a Google Map entry</a> that details Disney World in Florida. Sweet!Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-50825969557346324962008-05-28T06:15:00.000-07:002008-05-28T06:15:39.062-07:00Web 2.0 companies failing to produce cashFinancial Times has an article called <a href="http://www.ft.com/cms/s/0/6c968990-2b4c-11dd-a7fc-000077b07658.html?nclick_check=1">Web 2.0 fails to produce cash</a>. The article talks about how Web 2.0 companies have not produced <span class="blsp-spelling-error" id="SPELLING_ERROR_0">alot</span> of revenue despite changing the way that people interact on the Internet and introducing new capabilities.<br /><br />I think it would be interesting if Web 2.0 had more commercial as Enterprise 2.0 than in the Internet at large. I think to the Internet community, it becomes just the normal course of interaction. However, within enterprises it seems to have the potential to dramatically change how we design and implement information systems. <br /><br />Plus, I'd just like to be able to use these technologies on the job. :-)Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-90861179793532947932008-05-26T18:23:00.000-07:002008-05-26T18:29:06.469-07:00Vista Backup Leaves Me High and DryOK, guess what - when Vista Backup says it does not backup any program files, it turns out that means ASP and ASPX files as well. I wish I had seen <a href="http://tinyurl.com/6e925k">the comments on this post first</a>. But I didn't. So, now it looks like I've lost some ASPX files for a charity project I was working on in my latest round of laptop shenanigans. GRRRRRRR!!!!<div><br /></div><div>Unlike the guy in the comments, it seems to have saved my CS files. In fact, it saved the code behind files for the ASPX files, but not the ASPX files themselves. GRRRRRR!!!!</div><div><br /></div><div>I'm pretty hacked right now.</div>Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-11731092784387088052008-05-23T07:47:00.000-07:002008-05-23T07:47:27.995-07:00Emacs Quit under CygwinI've never used Emacs under <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Cygwin</span>. I've always installed the Windows version. However, today I'm in a hurry, <span class="blsp-spelling-error" id="SPELLING_ERROR_1">EmacsW</span>32 site is down, and I decided to use <span class="blsp-spelling-error" id="SPELLING_ERROR_2">Cygwin</span>. Unfortunately, some of the keys like C-x C-c (quit) are wonky. But <a href="http://groups.google.com/group/gnu.emacs.help/browse_frm/thread/a180845843d43295?hl=en&lr=&ie=UTF-8&oe=UTF-8&rnum=5&prev=/groups%3Fas_q%3D%27C-x%2520C-g%27%26safe%3Dimages%26ie%3DUTF-8%26oe%3DUTF-8%26as_ugroup%3D*emacs*%26lr%3D%26as_scoring%3Dd%26hl%3Den">Newbie, Emacs won't quit - gnu.emacs.help | Google Groups</a> describes a simple modification to the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">Cygwin</span> bash shell batch script that makes everything good to go.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-20250719981625332912008-05-21T09:48:00.001-07:002008-05-21T09:57:29.798-07:00Application vs. OS ClusteringI recently had the opportunity to discuss computer clustering with a colleague of mine. I decided to post my take on things in case it might be helpful to others.<br /><br />Computer clustering is a deep subject. There are many facets to how to cluster computers and/or applications together. <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Wikipedia</span> has a nice <a href="http://en.wikipedia.org/wiki/Computer_cluster">article on clustering</a>. I’m no expert, but I’m going to describe my simplistic view of hardware/OS level clustering vs. application clustering and how they fit together.<br /><br />The ultimate computer cluster would be a group of computers working together to seamlessly provide services and appear as one computer. This cluster would make its services available to applications transparently. This means that an application written to run on a single computer, would see no difference in running on the cluster. In addition, it would get all the benefits of being on the cluster without impacting its operation at all – scalability, high availability, memory management, etc. To my knowledge, this type of cluster does not exist.<br /><br />Hardware and OS level clustering allows multiple computers to work together for a purpose, but the computers generally don’t appear to applications as 1 big computer. When the OS makes this possible, special programming is usually required to make an application take advantage of the clustered OS services. Most of the time, OS clusters are geared toward providing high-availability (HA) for fault tolerance rather than seamless scalability of applications running on the cluster (<span class="blsp-spelling-error" id="SPELLING_ERROR_1">HPC</span> – high performance computing). Windows 2003 server clustering and <span class="blsp-spelling-error" id="SPELLING_ERROR_2">SQL</span> Server clusters are examples of clusters that are geared toward HA rather than <span class="blsp-spelling-error" id="SPELLING_ERROR_3">HPC</span>.<br /><br />Grid computing has ushered in a new set of technologies and patterns for trying to achieve the ultimate computing cluster. Grid computing does a good job of providing HA and <span class="blsp-spelling-error" id="SPELLING_ERROR_4">HPC</span> for applications running on the grid. The standards specify a pretty flexible environment with scheduling and accounting facilities that make management of applications much easier. Grid computing tries to make computing resources a commodity that can just be doled out as needed to run applications. However, for applications to take full advantage of grid computing, they still must incorporate special programming. This may change in the future as advances in grid frameworks and operating systems emerge. Examples of grid computing is the <a href="http://www.amazon.com/EC2-AWS-Service-Pricing/b/ref=sc_fe_l_2?ie=UTF8&node=201590011&no=3435361&me=A36L942TSJ2AJA">Amazon EC2 </a>for computing<a href="http://www.amazon.com/EC2-AWS-Service-Pricing/b/ref=sc_fe_l_2?ie=UTF8&node=201590011&no=3435361&me=A36L942TSJ2AJA"></a> and <a href="http://www.amazon.com/gp/browse.html?node=16427261">Amazon S3 storage grid</a>.<br /><br />Application level clustering is when an application is designed so that its components can be distributed across multiple machines and the application can identify and manage those components to cluster itself. This usually involves distributing components with specific capabilities to nodes in a server farm and having some controller components that identify the worker components, monitor their availability, and delegate incoming requests. (These are sometimes called dispatchers.) Applications that cluster themselves don’t need an underlying hardware/OS clustering solution since they take care of their own clustering services. Further, there’s no need to have computers in the cluster be homogeneous since the cluster is not dependent upon synchronization at the machine or OS level. Application clusters can provide HA as well as <span class="blsp-spelling-error" id="SPELLING_ERROR_5">HPC</span>. Examples of application clusters are <a href="http://www.oracle.com/technology/products/database/clustering/index.html">Oracle <span class="blsp-spelling-error" id="SPELLING_ERROR_6">RAC</span></a> and <a href="http://www.fastsearch.com/">FAST ESP</a>.<br /><br />Again, this is Tom’s view of clustering and probably contains errors and omissions. My simple mind summarizes and simplifies things it takes in. So, you should do your own research if you seek the ultimate in accuracy and reliability of this information! :-)Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com1tag:blogger.com,1999:blog-8954978.post-64258025764644465192008-05-20T09:11:00.000-07:002008-05-20T09:17:32.944-07:00Tweets AvailableI resisted using <a href="http://www.twitter.com/">Twitter </a>for years. However, I've lately decided that I need to understand it. So, I created a <a href="http://twitter.com/tlpierce">Twitter account</a> and started playing. Like many others, I'm becoming addicted.<br /><br />I've made my tweets (Twitter speak for messages) available on this blog. If you visit the web site, you'll see them in the far right column.<br /><br />I stopped short of using <a href="http://www.loudtwitter.com/"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">LoutTwitter</span></a> to create a daily tweet summary post in this blog. It looks <span class="blsp-spelling-error" id="SPELLING_ERROR_1">very cool</span>, but I'm not sure all of my HUGE (<span class="blsp-spelling-error" id="SPELLING_ERROR_2">haha</span>) cares about my micro-blogging.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-81349728844606989202008-05-14T04:51:00.000-07:002008-05-20T09:22:44.574-07:00PortableApps Saves My Bacon<div>I have been a fan of <a href="http://portableapps.com/">PortableApps</a> for a couple of years. It's a really neat concept - package useful applictions in a small, self-contained format so that they can easily be run from a USB stick or drive. This way, you can take your apps with you as you move from computer to computer. Over the last week however, I've been using PortableApps in a different manner. </div><div> </div><br /><div>Lately I've been having numerous computer problems. I've been resisting reloading the operating system because I just did that a month ago. But the operating system didn't care - it just continued to degrade. First it was its distaste for USB hard drives, then came my mouse, finally (its pièce de résistance) it would just stop responding soon after I logged in. This rendered me completely unproductive at the client site.</div><div> </div><br /><div>Fortunately I was able to boot to Windows PE (pre-installation environment with very little features and services - like safe mode only safer and more padded - like an asylum). I jammed my PortableApps USB stick in a USB slot. The menu did not work, however you can navigate to the exe's in a command line and launch them. This allowed me to use Firefox, 7-Zip, and OpenOffice to maintain<span style="font-style: italic;"> </span>some productivity while I worked to fix my system. Brilliant!<br /><br />In short, as part of your personal disaster recovery strategy I recommend that you create a PortableApps device. It can help you keep working on some level until you can get your system restored to working order.<br /> </div>Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-84966734475577179482008-04-24T11:52:00.000-07:002008-04-24T12:28:44.473-07:00Outlook 2007 Slow To Open Messages With AttachmentsI recently had to reload my Vista machine and this weekend I installed SP1 for Office 2007. This week I've noticed that Outlook 2007 was very slow to open messages that had attachments. After much digging on the Internet, I finally saw a comment from someone that mentioned turning off Attachment Preview to speed up Outlook. So, I went to<br /><br />Tools -> Trust Center -> Attachment Handling<br /><br />and turned off attachment preview. This solved my problem!<br /><br />Thank you Lazy Web!<br /><br /><strong>Updated 04/24/2008 2:26PM:</strong> WRONG!!! Turns out the problem was Symantec Antivirus. Don't know how to fix it, so for now I've disabled the email scanning. :-( Not happy.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com14tag:blogger.com,1999:blog-8954978.post-66552667622438854522008-04-03T13:35:00.001-07:002008-04-03T13:38:41.554-07:00Django on WindowsI've been considering options for playing around with mashups. There's alot of options. However, since I'm back in the Python mindset (see earlier post), I'm going with Django. Further, to make this quick to hack on, I'm going for Django on Windows.<br /><br /><a href="http://effbot.org/zone/django.htm">This article </a>talks about "Installing Django on Windows in less than 5 minutes". It's great, and I love it. Thank you!!!!Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-57412943709362853122008-04-03T07:15:00.001-07:002008-04-03T07:22:52.696-07:00Programming Collective IntelligenceI've started reading <a href="http://www.amazon.com/Programming-Collective-Intelligence-Building-Applications/dp/0596529325">Programming Collective Intelligence</a>, and I'm really enjoying it. It's a really well written book that gives you a good introduction to the emerging field of <a href="http://en.wikipedia.org/wiki/Collective_intelligence">Collective Intelligence</a>. <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Segaran</span> does a great job of taking the theory and mathematics and applying them in practical ways to real world problems.<br /><br />The examples in the book are written in Python. I'd love to have the time to play with rebuilding them in Smalltalk or Common Lisp. However, I barely have time to even read the book. So, it's back to Python for me for a while. (Just between you and me, it's making me giddy to get back to Python, Emacs, and the down and dirty hacking that I used to love.)<br /><br />So, if you're interested in Web 2.0, the modern application of Artificial Intelligence techniques, or doing really cool things with Python then you should grab a copy of this book.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com2tag:blogger.com,1999:blog-8954978.post-31588022007407533152007-12-28T14:02:00.000-08:002007-12-28T14:15:54.272-08:00OPML Parser on SqueakSourceToday is a big day for me. I finished off the first version of my <span class="blsp-spelling-error" id="SPELLING_ERROR_0">OPML</span> parser that I've been writing in Squeak. Not only that, I've published it to <span class="blsp-spelling-error" id="SPELLING_ERROR_1">SqueakSource</span> under the MIT license! The <span class="blsp-spelling-error" id="SPELLING_ERROR_2">SqueakSource</span> project is titled "<span class="blsp-spelling-error" id="SPELLING_ERROR_3">OPML</span> Parser" and the home page is <a href="http://www.squeaksource.com/OPMLParser.html">here</a>. If you would like to keep up to date on the project, the <span class="blsp-spelling-error" id="SPELLING_ERROR_4">RSS</span> feed is <a href="http://www.squeaksource.com/OPMLParser/feed.rss">here</a>.<br /><br />Thank you to Claudio <span class="blsp-spelling-error" id="SPELLING_ERROR_5">Acciaresi</span> for your link to the Squeak Map page on using Monticello, <span class="blsp-spelling-error" id="SPELLING_ERROR_6">SqueakSource</span>, and <span class="blsp-spelling-error" id="SPELLING_ERROR_7">SqueakMap</span>. A little digging and link-following and I was in business in minutes.<br /><br />If you find the parser useful, please let me know. If you look at the code and find odd Smalltalk syntax, violated conventions, or general improvements, please let me know. If you want to become a developer and help enhance the code base, please let me know!<br /><br />Squeak rocks!Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-31644592657939890462007-12-11T19:15:00.000-08:002007-12-11T19:17:41.795-08:00Labels on my blogI've recently started using <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">labels</span> on my blog posts. Hopefully this will give people the ability to filter what they are interested in. I've changed the layout of my blog to include a list of labels on the side bar. Thanks for making that easy, Blogger.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-60243220365153099742007-11-30T10:12:00.000-08:002007-11-30T10:12:08.434-08:00Whisker browser with SVINg Pheng Siong has a post on how to make the Smalltalk Whisker browser use SVI instead of the built in editor <a href="http://sandbox.rulemaker.net/ngps/207">here</a>. Loving this. Loving Smalltalk. I gotta' lotta' love, man.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com0tag:blogger.com,1999:blog-8954978.post-71723745764290317302007-11-27T09:14:00.000-08:002007-11-27T09:27:28.590-08:00Smalltalk OPML Parser ProgressI was fortunately able to take over a week off for Thanksgiving. The break from work was just what I needed to <span style="font-style: italic;">clear my head</span>. It also gave me an opportunity to do some more Squeak hacking.<br /><br />I worked on the OPML parser I'm writing. I was able to use <a href="http://www.chronos-st.org/">Chronos</a> to parse the RFC 822 time format dictated in the <a href="http://www.opml.org/spec2">OPML specification</a>. I used Chronos to parse the RFC822 time into a DateTime and stored that in my OPMLHead class. Beautiful. Easy. Love it.<br /><br />What's left? Not much. I need to add more tests. I've got two OPML sources that I'm testing against. I'm using an OPML example I found on the web and the OPML that lists my Google Reader subscriptions. I'm going to try to find some other OMPL test data and get a few more documents to test. <br /><br />I've decided not to do any custom exception handling. This seems appropriate since the parser will be consumed as a component in other custom applications. So, I'm not going to wrap exceptions from Chronos in some kind of OPMLParser exception.<br /><br />I'm planning to release the OPML parser as OSS and put it in <a href="http://www.squeaksource.com">SqueakSource</a>. I'm not entirely sure how to do that or if I'm even doing my work "correctly", but we'll figure it out. You and me. Together. Love ya', Mr. Internet.Tom Piercehttp://www.blogger.com/profile/16354145126416590562noreply@blogger.com4