<?xml version='1.0' encoding='MacRoman'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-14066663</id><updated>2007-09-19T10:37:48.655-07:00</updated><title type='text'>Mike's Take</title><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm'/><author><name>Mike Hales</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14066663.post-2305389143769884289</id><published>2007-09-19T08:38:00.000-07:00</published><updated>2007-09-19T10:37:48.690-07:00</updated><title type='text'>Widgetry, Assets and Cairo</title><content type='html'>I thought I would put together a post on a little work I've done recently with Cairo, Assets and Widgetry.  I've been meaning to write about it for a month, but the time slips away.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cairo Graphics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my application, I want to have good looking icons.  I bought a nice set online.  They came in .png and .gif formats.  The .png's look really nice, with alpha channel blending.  Putting them into VisualWorks resulted in jagged looking edges especially on non-white backgrounds.&lt;br /&gt;&lt;br /&gt;So I created a new class in the CairoGraphics package called PngImage that is just a wrapper around an ImageSurface.  PngImage implements the necessary interface from the Image class, so it can be displayed in the trippy inspector, and used as the image in Widgetry DisplayImage and ActiveImage classes.  PngImages can be instantiated from a file path, from bytes or from a stream.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;PngImage pngBytes: aByteArray.&lt;br /&gt;PngImage pngByteStream: anExternalStream.&lt;br /&gt;PngImage pngPath: aFilePathString.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You can inspect one and it displays nicely using Cairo.  The code is part of the CairoGraphics package in the Cincom public repository.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot1-748564.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot1-748560.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Once I had PngImage working well, I wanted a good way to manage all of my icons. Keeping them in the smalltalk image was very desirable, both for deployment and for source code management.  I wanted to be able to version the icons and use Store.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assets&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Vassili Bykov started working on a framework for managing external "assets" that Travis Griggs later finished.  It can be found in the public store also.  You point Assets to a folder, and it reads the files, and based on the file extensions does wonderful things, like install class methods on your Assets subclass with the literal representation of the external asset. By default, Assets deals with external png files and gives cached OpaqueImages (the regular VW way of dealing with alpha channel, basically an image and a mask).  So for my work I just made my own subclass of Assets and tweaked the behavior slightly so that it would make a cached CairoGraphics.PngImage for me.  This required only one overridden method, and one new method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:times new roman;"&gt;MyAssetClass class&gt;&gt;import_png: aFilename &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    ^self importPngImage: aFilename&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;MyAssetClass class&gt;&gt;importPngImage: aLogicalFile &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    | bytes |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    bytes := aLogicalFile contentsOfEntireBinaryFile.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;    ^'#{CairoGraphics.PngImage} value pngBytes:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;            (&lt;1s&gt;)' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;        expandMacrosWith: bytes storeString&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:times new roman;"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Now all you have to do is choose &lt;span style="font-style: italic;"&gt;Sync Assets&lt;/span&gt; from the Class menu in the Refactoring Browser, and point the file dialog at your folder containing all of your png images.  Assets auto-magically creates source code for you to generate your PngImages.  One thing to be aware of, is that PngImages are using Cairo surfaces, and the memory for these is handled outside of Smalltalk memory management.  These memory locations will survive an image snapshot, but not restarting the image.  So you must arrange for the CachedBlockClosures (used by Assets, and really cool by the way) to become un-cached when the image is started so the first call will allocate the Cairo surfaces correctly.  My application uses Cincom's Subsystem framework to initialize things properly on image startup, so I just threw in a line to un-cache the blocks.&lt;br /&gt;&lt;blockquote&gt;CachedBlockClosure uncacheAll.&lt;/blockquote&gt;Now when I call &lt;blockquote&gt;MyAssetClass class&gt;&gt;myIconName&lt;/blockquote&gt; the first time, the Cairo surface is created from the byte array embedded in the method source, and a PngImage is returned.  All subsequent calls return the cached PngImage.  The caching and the Cairo rendering make this really fast, and the results are great.&lt;br /&gt;&lt;br /&gt;Widgetry&lt;br /&gt;&lt;br /&gt;Despite the fact that Widgetry is no longer supported, we are moving ahead with it at my company.  We have had a really good experience with it so far, and integrating Cairo with it (I implemented a CairoCanvas that lets you do primitive drawing with Cairo) and using Cairo based icons was really easy.  I also went ahead and implemented in-place editing for ListBoxes as well.  It uses the same api as the in-place editing for TreeView.&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;span&gt;We're still really early in our development of the new UI, but so far it has gone quite well.  The following screen shot shows PngImages used within Widgetry DisplayImages, and a number of CairoCanvas' within Widgtry Grids.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot2-703341.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot2-703338.png" alt="" border="0" /&gt;&lt;/a&gt;The combination of Cairo, Assets and Widgetry easy to use and powerful, and is getting me closer to my goals for the UI for KnowledgeScape.  I will be working on many more enhancements in the future, hopefully culminating in a Look and Feel that uses Cairo exclusively for rendering and Pango for text layout and fonts.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2007/09/widgetry-assets-and-cairo.html' title='Widgetry, Assets and Cairo'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=2305389143769884289' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/2305389143769884289'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/2305389143769884289'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-1604077275898482868</id><published>2007-02-23T09:08:00.000-07:00</published><updated>2007-02-23T09:42:27.197-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VW testing coverage'/><title type='text'>Unit Test Code Coverage</title><content type='html'>A couple weeks ago, &lt;a href="http://www.cincomsmalltalk.com/userblogs/mls/blogView"&gt;Michael Lucas-Smith&lt;/a&gt; posted about a code coverage tool that he published to the Cincom public repository.  &lt;a href="http://www.cincomsmalltalk.com/blog/blogView"&gt;Jim&lt;/a&gt; mentioned it briefly and then everyone seemed to move on and forget it.  People, wake up!  This is one of the best tools published in the repository.  There should be buzz about this.  Think about it.  We write tests to make sure our code works.  Some of us do this well, some not so well.  I thought I was doing great.  I'm working on a project writing new code.  I have been trying to make sure every Class has a corresponding TestCase, and that at least all of the api methods have corresponding test methods.  I even wrote a utility to automagically generate the TestCase and stub test methods based on the protocols in my domain Classes.  I make sure all my tests pass, or I stop and fix things before I move on.  I figured I had things well covered.  Wrong!  After installing the code coverage tool, I could see where my deficiencies were.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot1-790143.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 406px; height: 336px;" src="http://www.xmission.com/%7Emlhales/blog/uploaded_images/screenshot1-787627.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One of the greatest benefits of the tool, is that it can show you branches of code not taken. Say you remember about some edge case, so you add logic to handle it.  Then you write the test like I did, but just test for the common cases.  With the code coverage tool, your method doesn't have 100%, it has some value in the middle.  (If you didn't test it at all it would have 0%)  So you browse to it, then click the coverage tab in the refactoring browser and it shows you (in red) the branches of code that were never called.  This is huge.  It's the edge cases with code that is rarely called that always bite us.  I wrote it, so I interact with it a certain way.  My users have no preconceived notions of how to use the software so they do things differently, and find places I wouldn't.  But now, the coverage tool is helping me explore those hidden away places before my users.  This is great!&lt;br /&gt;&lt;br /&gt;One benefit that I hadn't thought of, but that I noticed immediately when I started using the tool, was that I found code that could be removed.  It was untested, because it was not needed. I had changed the API slightly, but left the original methods or whatever.  I was able to quickly identify code that could be culled.  This is a huge benefit for maintenance.  One of the big problems we have with one of our existing products is that they did the same thing 12 different ways, and left them all in there.  So now, which to I use?  Where do hook in to hack my new changes?  By eliminating unused code early, I keep it lean and mean.&lt;br /&gt;&lt;br /&gt;If you don't have very many unit tests, I can see how this tool could be less than exciting.  Wow, only 3%, great....  I know from our legacy code that getting the coverage up is nigh onto impossible.  But for anybody doing new development, this is huge.  &lt;a href="http://www.cincomsmalltalk.com/userblogs/pollock/blogView"&gt;Sames,&lt;/a&gt; for example, with like 27,000 tests in Pollock could check if they're doing the job we all want them to be.&lt;br /&gt;&lt;br /&gt;If you're doing unit tests in VisualWorks, you really should be using this tool!</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2007/02/unit-test-code-coverage.html' title='Unit Test Code Coverage'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=1604077275898482868' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/1604077275898482868'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/1604077275898482868'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-115791472469766409</id><published>2006-09-10T11:48:00.000-07:00</published><updated>2006-09-11T10:17:13.203-07:00</updated><title type='text'>STIC should follow Ruby's lead</title><content type='html'>There has been some work lately on the STIC web site, and some work on a new logo etc to help promote Smalltalk.  I was just looking around today and found the new Ruby website.  They had a link to an in-browser interactive demo that let you try out ruby through a web app in your browser.  No download, no install, just completely easy.  I don't know what the funding situation is like, but commissioning someone to create a seaside application that lets you do the 15 minute Smalltalk tutorial, and demonstrates seaside's ability to make a really nice website with all the fancy Ajax stuff, and work with the back button would be well worth the money if you want to get people to try the language.  Check out the demo &lt;a href="http://tryruby.hobix.com"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xmission.com/~mlhales/blog/uploaded_images/Picture 1-793122.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://www.xmission.com/~mlhales/blog/uploaded_images/Picture 1-788451.png" border="0" alt="" /&gt;&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/09/stic-should-follow-rubys-lead.html' title='STIC should follow Ruby&apos;s lead'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=115791472469766409' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115791472469766409'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115791472469766409'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-115655680133996483</id><published>2006-08-25T18:44:00.000-07:00</published><updated>2006-08-25T18:46:41.353-07:00</updated><title type='text'>Seaside for Large Health Care Application</title><content type='html'>Just saw &lt;a href="http://www.healthauditors.com/BTASeasideExperienceReport.pdf"&gt;this &lt;/a&gt; on reddit and thought I would pass it along.  I'll be working on a seaside app for our &lt;a href="http://www.kscape.com"&gt;base product&lt;/a&gt; soon.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/08/seaside-for-large-health-care.html' title='Seaside for Large Health Care Application'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=115655680133996483' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115655680133996483'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115655680133996483'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-115600436921118348</id><published>2006-08-19T09:03:00.000-07:00</published><updated>2006-08-19T09:19:29.230-07:00</updated><title type='text'>Saved by Fink</title><content type='html'>I have been trying to get &lt;a href="http://www.cairographics.org" &gt;Cairo&lt;/a&gt; running on my Intel Mac so I could play with Smalltalk bindings that &lt;a href="http://www.cincomsmalltalk.com/userblogs/travis/blogView?showComments=true&amp;entry=3330699016"&gt;Travis Griggs&lt;/a&gt; has published in the public repository.  I googled around and started downloading source code.  But to build it I needed GCC so I downloaded the Xcode tools from Apple.  Then I tried to build it. No luck! I needed to install libpng first.  Get it, try to build it, no luck!  I needed to install zlib. But then zlib needed expat and so on and so on. Once I got these on and going, Cairo still couldn't find libpng.  I disabled png support and tried again.  Nope!  It needed freetype.  And font-config.  On and on it went.  So finally I downloaded &lt;a href="http://fink.sourceforge.net"&gt;Fink&lt;/a&gt;.  Wonderful, it has a nice installer and voila, I have tools to help me.  Fink lets you use apt to find, download and install binaries.  And even more wonderfully, it lets you download and build from source while also downloading and building all the dependencies.  One click and down comes Cairo and all its buddies and away I go happy as can be.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/08/saved-by-fink.html' title='Saved by Fink'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=115600436921118348' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115600436921118348'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115600436921118348'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-115556971435143515</id><published>2006-08-14T08:23:00.000-07:00</published><updated>2006-08-14T08:35:14.446-07:00</updated><title type='text'>Dynamic Languages in Financial Apps</title><content type='html'>&lt;a href="http://www.numenorean.net/blog/archives/2006/07/dynamic_languag.html"&gt;Here&lt;/a&gt; is a reference to dynamic languages and their benefit in situations where rapid deployment is a key requirement.  Are there any situations where fast time to market isn't crucial?</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/08/dynamic-languages-in-financial-apps.html' title='Dynamic Languages in Financial Apps'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=115556971435143515' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115556971435143515'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/115556971435143515'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-114851589867377410</id><published>2006-05-24T17:03:00.000-07:00</published><updated>2006-05-24T17:12:01.766-07:00</updated><title type='text'>Sony is James Taggart</title><content type='html'>Sony may be considering trying to stop playstation game resale according to &lt;a href="http://www.next-gen.biz/index.php?option=com_content&amp;task=view&amp;id=3086&amp;Itemid=2"&gt;this&lt;/a&gt; article.  This seems so much like the "looters" from Atlas Shrugged.  Rather than focus on providing value that people want, and will pay for, they are trying to skew the playing field or bend the rules to their advantage.  They would rather bully you by threat of lawsuit rather than lure you by quality of product.  Sony seems to be on a bad course with rootkits, delayed releases and now this.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/05/sony-is-james-taggart.html' title='Sony is James Taggart'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=114851589867377410' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114851589867377410'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114851589867377410'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-114797145169581036</id><published>2006-05-18T09:54:00.000-07:00</published><updated>2006-05-18T10:02:19.380-07:00</updated><title type='text'>Parallels Advantages</title><content type='html'>On my MacBook Pro I am using Parallels alot.  One of the really cool things that I like is that I can have lots of Windows installations to do different things.&lt;br /&gt;&lt;br /&gt;An example of this is with remote support. We support many of our clients by connecting to their vpn and taking over the desktop of machines running our software. What we have found is that every client has a different standard for vpn client. Some use ssl vpn through internet explorer, some use SonicWall, some use SecureRemote etc. None of these solutions likes to play nicely with the other installed. They battle for control of your machine. With Parallels, I can simply have multiple Windows installations and only install one vpn client per installation. It is a little expensive on storage space, but saves my lots of pain or from using lots of different machines.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/05/parallels-advantages.html' title='Parallels Advantages'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=114797145169581036' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114797145169581036'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114797145169581036'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-114724326466589795</id><published>2006-05-09T23:32:00.000-07:00</published><updated>2006-05-09T23:41:04.683-07:00</updated><title type='text'>Subtextual</title><content type='html'>This &lt;a hfref=http://subtextual.org&gt;language&lt;/a&gt; came up on reddit the other day and it is really interesting.  It is a new paradigm for programming that is super cool.  I have been envisioning a more drag and drop type interface for our expert control software and this sparked a few ideas.  The no source code (in files) concept is like Smalltalk and the fact that everything is alive is the same also.  I will definately think about this some more.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/05/subtextual.html' title='Subtextual'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=114724326466589795' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114724326466589795'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114724326466589795'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-114584337595270051</id><published>2006-04-23T18:47:00.000-07:00</published><updated>2006-04-23T18:50:07.556-07:00</updated><title type='text'>Smalltalk Solutions - Stuck in Denver</title><content type='html'>I was already coming in late for the conference, but now the flight in Denver is delayed over an hour.  I guess I'll be half asleep in Travis' talk first thing in the morning.  Assuming I get there.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/04/smalltalk-solutions-stuck-in-denver.html' title='Smalltalk Solutions - Stuck in Denver'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=114584337595270051' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114584337595270051'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114584337595270051'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-114481431394760265</id><published>2006-04-11T20:56:00.000-07:00</published><updated>2006-04-11T20:59:58.236-07:00</updated><title type='text'>MacBook Pro</title><content type='html'>Just got a new MacBook Pro!  Runs XP no problem.  People are wondering whether boot camp will draw new users.  My partner and I just bought 2.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2006/04/macbook-pro.html' title='MacBook Pro'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=114481431394760265' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114481431394760265'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/114481431394760265'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113596240817994812</id><published>2005-12-30T10:00:00.000-07:00</published><updated>2006-01-08T09:45:15.556-07:00</updated><title type='text'>I hate Windows so much right now</title><content type='html'>I have three development machines in my office, all of which are giving me headaches today.  On one, a brand new dual core pentium D, I am running a machine vision application that uses DirectShow (DirectX 9.0c).  I am capturing images from a NTSC analog camera.  The system will run fine continuously for about 3 days, then I'll come back in the morning to face the blue screen of death.&lt;br /&gt;&lt;br /&gt;On my second machine, I was trying to record a screen cast, to show some work that I've done.  Windows Media Encoder hangs.  Too bad, no help here.  So I finally manage to record an AVI, which looks and sounds good, but it's 50 MB.  A little big for downloading.  So I throw it on my third machine, where I have quick time pro.  I convert it to MPEG-4, and try to play it full screen, and boom my graphics driver blows up, resolution is reduced to 640-480 and Windows tells me to give up and reboot.&lt;br /&gt;&lt;br /&gt;The graphics capabilties of these machines are astounding!</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/i-hate-windows-so-much-right-now.html' title='I hate Windows so much right now'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113596240817994812' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113596240817994812'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113596240817994812'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113539906026163019</id><published>2005-12-23T21:15:00.000-07:00</published><updated>2005-12-23T21:37:40.280-07:00</updated><title type='text'>Eclipse</title><content type='html'>James' &lt;a href="http://www.cincomsmalltalk.com/blog/blogView?showComments=true&amp;entry=3312611032"&gt;posts &lt;/a&gt;on Eclipse peaked my interest, so I decided to go try it myself.  I decided to check it out with regards to Ruby however, as that language is more appealing to me that Java.  The pragmatic programmers recommend learning new technology continually, so I figured now is a good time.  I will look at Eclipse and Ruby to write some housekeeping code to automate some tasks that I have to do for building new releases of my software.  I googled for a few minutes, and found the one click Ruby installer, Eclipse, and the Ruby Development Tools for Eclipse.  A few minutes later and they were all downloaded and installed.  I really had no trouble with any of it, and within a couple of minutes I was writing the Song and KaraokeSong classes from the Programming Ruby online book.  So far so good.  I haven't got into any debugging or unit testing yet, as I am only a few minutes into the process.  I'll post again when I have created something of value.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/eclipse.html' title='Eclipse'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113539906026163019' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113539906026163019'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113539906026163019'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113538165464412830</id><published>2005-12-23T15:55:00.000-07:00</published><updated>2005-12-23T16:55:14.933-07:00</updated><title type='text'>Memory Management</title><content type='html'>So much of the time I live in blissful ignorance, never really knowing the pain that many developers go through dealing with memory management. Developing in Smalltalk, it never even dawns on me that I might have to worry about an object that I'm done with. Our application, &lt;a href="http://www.kscape.com"&gt;KnowledgeScape&lt;/a&gt;, must communicate with lots of different systems to get data. One data bridge we have is DDE. We were having trouble with errors that would occur after a few hours of operation. It turned out that for synchronous transactions, the client is responsible for releasing the resources associated with the request. No big deal, I fixed it. But my point is that life is so much easier when you don't have to think about it.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/memory-management.html' title='Memory Management'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113538165464412830' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113538165464412830'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113538165464412830'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113382873893711517</id><published>2005-12-05T17:25:00.000-07:00</published><updated>2005-12-05T17:25:38.990-07:00</updated><title type='text'>Humane Interface</title><content type='html'>Martin Fowler &lt;a href="http://martinfowler.com/bliki/HumaneInterface.html"&gt;writes about the humane interface&lt;/a&gt; principle and its implementation in Ruby.  I agree, and I think that Smalltalk does this well.  The cost (in bits and bytes) of having a nice api is very small.  The cost (in dollars and time) of programmers writing code is high.  If your tool of choice can save you money and time, and help you to get to market faster with your product that seems like a good thing.  The reality of software development in my experience has been that the faster you can get it done the better off your company will be.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/humane-interface.html' title='Humane Interface'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113382873893711517' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113382873893711517'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113382873893711517'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113356634005718295</id><published>2005-12-02T16:15:00.000-07:00</published><updated>2005-12-02T16:32:20.070-07:00</updated><title type='text'>DabbleDb</title><content type='html'>When I first saw Avi give a presentation on Seaside at Smalltalk Solutions two years ago, I thought: "Man I wish I was smart enough to have done that!".  Now, I have had the chance to play with the Dabble beta created using Seaside and it happened again.  What an amazing application.  In just a few minutes I created a bug tracker, feature request and development time tracking system for my real job.  Then I added another app for tracking todo's on non dev projects that I also have to take care of.  Dabble creates an RSS feed for me, and if someone reports a bug, I see it in my newsreader.   It is super slick. &lt;br /&gt;&lt;br /&gt;Of course it is still beta software, so there is a bug or two left to be found.  Enter the amazing power of Smalltalk.  When I hit one, a stack trace goes to Avi and Andrew, they fix it and email me saying its fixed within a few minutes.  All the while I haven't even logged out.  Operating on a live image is pretty normal for Smalltalkers, and it lets these guys have a real-time feedback - change - feedback cycle with their customers.  It's totally great and about as agile as it gets.&lt;br /&gt;&lt;br /&gt;Patrick Logan &lt;a href="http://patricklogan.blogspot.com/2005/12/dabble-db.html"&gt;comments &lt;/a&gt;that it's too bad that Dabble is a commercial endeavor, because it won't benefit developers.   This isn't so.  Even though we don't have access to the Dabble code, everything that makes it work is available in Squeak (or VisualWorks) and Seaside.  This is one of those occasions where the creators of the tool actually use the tool.  Subsequently, all of us benefit because they are constantly evolving Seaside which is readily available.&lt;br /&gt;&lt;br /&gt;There has been a lot of buzz about this, but rightfully so.  It's very impressive.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/dabbledb.html' title='DabbleDb'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113356634005718295' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113356634005718295'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113356634005718295'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113356512962338132</id><published>2005-12-02T16:05:00.000-07:00</published><updated>2005-12-02T16:12:09.633-07:00</updated><title type='text'>About Time</title><content type='html'>I guess it's about time to post again. I read tons of blogs every day so I ought to at least come up with a post a week. I've just been lazy. I have been working on a few things lately. Work is keeping me pretty busy (I am the lead developer on an AI process control package called &lt;a href="http://www.xmission.com/~mlhales/kscape"&gt;KnowledgeScape&lt;/a&gt;).  But in my spare time I have been &lt;a href="http://www.dabbledb.com"&gt;Dabble&lt;/a&gt;ing (more on that later) as well as working on my own little app in seaside.  I also made it to Moab for a little biking and am getting ready for the new ski season here in Salt Lake City.  So, I will try to write a little more frequently.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/12/about-time.html' title='About Time'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113356512962338132' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113356512962338132'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113356512962338132'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-113010113272518806</id><published>2005-10-23T13:55:00.000-07:00</published><updated>2005-10-23T13:58:52.733-07:00</updated><title type='text'>Update</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;I got a letter in the mail from Rep. Tancredo about his comments. I had written him to tell him that I thought his comments were out of line and he should apologize for them. He basically said "shove it, I'm not aplogizing and it's still a good idea" in a very well written and politically correct (incorrect?) way.&lt;br/&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/10/update.html' title='Update'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=113010113272518806' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113010113272518806'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/113010113272518806'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112169826955649184</id><published>2005-07-18T07:51:00.000-07:00</published><updated>2005-07-18T07:51:09.593-07:00</updated><title type='text'>Congressman Threatens Islamic Holy Sites</title><content type='html'>&lt;a href="http://news.yahoo.com/news?tmpl=story&amp;amp;u=/ap/20050718/ap_on_go_co/congressman_muslims"&gt;Threaten to bomb Mecca&lt;/a&gt;, that's a real great way to prevent terrorism you idiot!  That kind of crap is precisely the reason they hate us.&lt;br /&gt;&lt;br /&gt;Rep. Tancredo's spokesman does raise a very good question however.  "We have an enemy with no uniform, no state, who looks like you and me and only emerges right before an attack. How do we go after someone like that?"&lt;br /&gt;&lt;br /&gt;The answer is you limit their ability to recruit by promoting peace and economic stability.  If you combat poverty, you will start to take away the pool of eligibles.  On the other hand, if you talk about bombing Mecca then you could certainly go a long way towards a Jihad of millions, instead of a few hundreds or thousands.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/07/congressman-threatens-islamic-holy.html' title='Congressman Threatens Islamic Holy Sites'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112169826955649184' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112169826955649184'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112169826955649184'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112135657226452997</id><published>2005-07-14T08:56:00.000-07:00</published><updated>2005-07-14T08:57:52.116-07:00</updated><title type='text'>Religious Discrimination</title><content type='html'>&lt;a href="http://story.utahindependent.com/p.x/ct/9/id/e0a00c3261ac7dc8/cid/4c8b87caf96c92c7/"&gt;City Weekly&lt;/a&gt;reports on a discrimination case against a Utah teacher for not being LDS. This is really sad, because the actions of a few people will reflect negatively on many. It looks like a classic case of stupidity to me. Imagine, an English teach that wanted to teach Steinbeck! The gall! The Attorney Generals office "cannot ethically provide any further representation to defendants". Compensate her or preferably reinstate her.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/07/religious-discrimination.html' title='Religious Discrimination'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112135657226452997' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112135657226452997'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112135657226452997'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112065986142943214</id><published>2005-07-06T07:24:00.000-07:00</published><updated>2005-07-06T07:24:21.446-07:00</updated><title type='text'>Pot calling the kettle black</title><content type='html'>&lt;a href="http://today.reuters.com/news/newsarticle.aspx?type=politicsNews&amp;amp;storyid=2005-07-06T130220Z_01_PEK204402_RTRIDST_0_POLITICS-ENERGY-CHINA-USA-DC.XML"&gt;China upset about Unocal vote ?&lt;/a&gt;  "We demand that the U.S. Congress correct its mistaken ways of politicizing economic and trade issues and stop interfering in the normal commercial exchanges between enterprises of two countries," the Foreign Ministry said in a faxed statement.  Wow!  How about China's continued manipulation of currency values to benefit chinese exports.  I think that generally free trade and government non-involvement is good.  But when a country continually shows that it is willing to do everything possible to manipulate the market place to its favor, we are justified in looking carefully at this.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/07/pot-calling-kettle-black.html' title='Pot calling the kettle black'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112065986142943214' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112065986142943214'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112065986142943214'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112025369304639798</id><published>2005-07-01T14:34:00.000-07:00</published><updated>2005-07-01T15:33:11.703-07:00</updated><title type='text'>Totally Ridiculous</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.xmission.com/%7Emlhales/uploaded_images/2002353947-735119.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://www.xmission.com/%7Emlhales/uploaded_images/2002353947-732568.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://story.utahindependent.com/p.x/ct/9/id/0a322f5746f69d56/cid/4c8b87caf96c92c7/"&gt;Utah Independent reports &lt;/a&gt; a mother who tatooed a gambling website's url on her head for $10k. When Fantine sold her teeth to send money to Cosette it made me cry. This makes me want to cry for a different reason. I'm sorry, but that is just ridiculous.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/07/totally-ridiculous.html' title='Totally Ridiculous'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112025369304639798' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112025369304639798'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112025369304639798'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112024454502013888</id><published>2005-07-01T12:02:00.000-07:00</published><updated>2005-07-01T12:02:25.043-07:00</updated><title type='text'>Guantanamo fuels hatred</title><content type='html'>&lt;a href="http://today.reuters.com/news/newsarticle.aspx?type=politicsNews&amp;amp;storyid=2005-07-01T154615Z_01_N01622019_RTRIDST_0_POLITICS-SECURITY-GUANTANAMO-DC.XML"&gt;Reuters reports &lt;/a&gt; that our treatment of prisoners in Guantanamo is fueling hatred towards Americans and helping Al Qaeda and other extremist groups to recruit more effectively.  I agree.  I think that the real solution to terrorism against America is to give young islamic males a better alternative.  I know that true Islam does not teach the kind of hate and violence that we see constantly from so many.  But from their perspective, its the only escape.  If we don't fuel the hatred by our actions towards prisoners, and if we step even further, and start to work towards the addressing the problems of poverty and economic distress we will go a long way towards making things better.  It seems that American core values like freedom, hard work, love of country and family are not things that will be rejected.  But our continuing policy of punishing countries economically (and invading them), seems to foster hate among the people that tends to keep evil leaders in power.  By working with countries, we can empower the people to make decisions based on a moral code and ideals.  That will not happen when they are simply trying to feed their family each day.  Rather than spending billions on an army that will never solve the problem, why not spend much less working with people to make their lives better.  Give them an alternative to hate.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/07/guantanamo-fuels-hatred.html' title='Guantanamo fuels hatred'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112024454502013888' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112024454502013888'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112024454502013888'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112017463401165617</id><published>2005-06-30T16:37:00.000-07:00</published><updated>2005-06-30T16:37:14.016-07:00</updated><title type='text'>Coding for $15 an hour? </title><content type='html'>&lt;a href="http://news.com.com/2061-10788_3-5770608.html?part=rss&amp;amp;tag=5770608&amp;amp;subj=news"&gt;Coding for $15 an hour?&lt;/a&gt;  The author of this article suggests that maybe something is wrong with the tech industry.  Duh!  Salary and wages are very simple.  The employer will pay for the value that the employee provides.  They are looking for a web developer with 1 year experience.  There is a large supply of people that qualify.  If you want to command a higher salary, differentiate yourself.  Get skills that others don't have.  Provide more value, and you can extract higher compensation, end of story.  But thinking that I am a programmer so I deserve a certain salary is absurd.  Talk about un-american.  The american way is earning your living.  Do we deserve jobs because we live in America?  No!  We earn our living by providing more value than the other guy.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/06/coding-for-15-hour.html' title='Coding for $15 an hour? '/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112017463401165617' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112017463401165617'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112017463401165617'/><author><name>Mike Hales</name></author></entry><entry><id>tag:blogger.com,1999:blog-14066663.post-112017331334721650</id><published>2005-06-30T16:15:00.000-07:00</published><updated>2005-06-30T16:45:19.500-07:00</updated><title type='text'>It's the critics fault</title><content type='html'>&lt;a href="http://today.reuters.com/news/newsArticle.aspx?type=politicsNews&amp;storyID=2005-06-30T211732Z_01_N30315622_RTRIDST_0_POLITICS-IRAQ-CONGRESS-DC.XML"&gt;Some Senators are blaming critics of the war for falling recruitment.&lt;/a&gt;  Maybe falling recruitment is a sign of people's opinion of the war. How would they like the war portrayed in the media? Fun, exciting, dodge roadside bombs with your friends.&lt;br /&gt;&lt;br /&gt;"With the deluge of negative news that we get daily, it's just amazing to me that anybody would want to sign up," said Sen. Pat Roberts, a Kansas Republican. So should we hide the truth, and convince everyone that war is wonderful? It seems like the more we understand the real awful reality of what happens daily, the more we will try to do in the future to prevent war. As America's support for the war diminishes, we are all realizing that more should have been done to avoid going there in the first place. In the days of smart bombs and the video game like attacks from afar, it doesn't seem so bad. Sure, just bomb them, no problem. Well we are seeing that it still can't be done in an easy sterile way. It's probably a good wake up call for the nation. War sucks, lets try and prevent it. Lets try and avoid it. Lets try to make our policy such that we are a world leader and a world citizen. Not a world bully.</content><link rel='alternate' type='text/html' href='http://www.xmission.com/~mlhales/blog/2005/06/its-critics-fault.html' title='It&apos;s the critics fault'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14066663&amp;postID=112017331334721650' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.xmission.com/~mlhales/blog/index.htm' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112017331334721650'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14066663/posts/default/112017331334721650'/><author><name>Mike Hales</name></author></entry></feed>