<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7966820</id><updated>2011-08-21T20:43:38.517-04:00</updated><category term='ruby'/><category term='photrade'/><category term='life givecamp'/><category term='agile'/><category term='javascript'/><category term='java'/><category term='git'/><category term='groovy'/><category term='php'/><category term='mac'/><category term='programming'/><category term='.net'/><category term='life'/><title type='text'>BitBasher</title><subtitle type='html'>Ed Sumerfield's musings. Life rocks.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default?start-index=101&amp;max-results=100'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>128</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7966820.post-1293525877436199899</id><published>2010-10-25T10:49:00.012-04:00</published><updated>2010-12-29T10:32:21.291-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Southwest Ohio Give Camp - Review</title><content type='html'>Ending with the demo of the charities new sites and the excitement on their faces as they looked up at the giant screen, was certainly the best thanks we could have received.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IWJV2VJlogg/TRtTyy3m3pI/AAAAAAAAAbE/ZRQU9gN4FKk/s1600/swogc-group.10-23-2010.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 201px;" src="http://3.bp.blogspot.com/_IWJV2VJlogg/TRtTyy3m3pI/AAAAAAAAAbE/ZRQU9gN4FKk/s320/swogc-group.10-23-2010.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5556126697405210258" /&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.flickr.com/search/?q=swogc2010"&gt;Photos&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Moments. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Arriving back at the MUVOALC early Sunday morning to find volunteers outside banging on the doors and windows trying to get in. Six a.m. days are no match for these awesome people.  &lt;br /&gt;&lt;br /&gt;The 10 year old son of one of the volunteers asking how he can help. Dropping the xbox controller to rush off to notify the teams that more pizza had arrived.&lt;br /&gt;&lt;br /&gt;The quiet that descended on the team rooms as everyone focused on doing their best work. &lt;br /&gt;&lt;br /&gt;Team leads complaining that they don't want to wait 15 seconds for a standup to start because they have customers waiting.&lt;br /&gt;&lt;br /&gt;Volunteers with decades of experience reveling in talking about what their young team members have been producing.&lt;br /&gt;&lt;br /&gt;The worry expressed by people that working till 3am would not be enough and would the charity like what they have done.&lt;br /&gt;&lt;br /&gt;Hearing the charities talking about "their developers", bringing then brownies and taking group photo shots.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10 Charities, 10 Solutions&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left: 50px"&gt;&lt;br /&gt;&lt;a target="_blank" href="http://elementz.26webs.com/wordpress/"&gt;Elementz (temporary url)&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.setonfamilycenter.org/"&gt;Seton Family Center&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://john1512ministries.org/"&gt;John 15:12 Ministries&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://posec.org/"&gt;Post Secondary Education Collaborative&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.hamilton-living-water-ministry.org/"&gt;Hamilton Living Water Ministry&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.diabetesdayton.org/"&gt;Diabetes Dayton&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.wincincy.org/"&gt;Working in Neighborhoods&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.civicgardencenter.org/"&gt;Civic Garden Center&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.daytonbattle.net/"&gt;Dayton Battle of the Businesses&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="http://esc.schenzcustomdesigns.com/"&gt;End Slavery  (temporary url)&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As much as we were thanked for this one weekend, it is clear that the charities themselves have 51 others this year to do their work. These are the true champions of this weekend. It has been a privilege to get to know them and offer a small amount of assistance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1293525877436199899?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1293525877436199899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1293525877436199899&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1293525877436199899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1293525877436199899'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2010/10/southwest-ohio-give-camp-review.html' title='Southwest Ohio Give Camp - Review'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IWJV2VJlogg/TRtTyy3m3pI/AAAAAAAAAbE/ZRQU9gN4FKk/s72-c/swogc-group.10-23-2010.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4761123270407984757</id><published>2010-07-16T10:22:00.014-04:00</published><updated>2010-07-22T23:56:20.608-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life givecamp'/><title type='text'>Southwest Ohio Give Camp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_IWJV2VJlogg/TEgp7_oBJMI/AAAAAAAAAZc/0JEhOa8vefs/s1600/swogc_logo_gray.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 150px;" src="http://3.bp.blogspot.com/_IWJV2VJlogg/TEgp7_oBJMI/AAAAAAAAAZc/0JEhOa8vefs/s320/swogc_logo_gray.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5496689455873991874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On October 22 through 24th we are running a Give Camp located in Southwest Ohio. Collect your project manager and developer friends and we will connect you with a team to help out a Charity for one weekend. This is a great way to use my professional skills for a good cause.&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left: 50px;"&gt;&lt;a href="http://southwestohiogivecamp.org"&gt;http://southwestohiogivecamp.org&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We have an awesome group of volunteers putting the event together. We are organized into 6 teams to ensure we have a focus on the various areas that have to be worked on.&lt;br /&gt;&lt;br /&gt;The Charity team focuses on identifying Charities, collecting the details about what they need. Our goal was to support 10 charities and we already have 20 submitted proposals. This team is comprised of Andy Erickson (@axerickson), Eric Schwartz (@SchwartzE), Darrell Hulshult (@dhulshult) and Andy Douglas (@GoodPiper) all doing an amazing job pulling together all these organizations to coordinate so many successful projects. Just imagine the problem of  running 10 projects simultaneously in one weekend. &lt;br /&gt;&lt;br /&gt;The Developer team focuses on setting up the website and attracting all the tallent that will work on the Charities products. With a goal of 50 people, to give us 5 person teams for each Charity, we are now at 37 with 3 months to go. With this kind of ramp-up we may have to consider expanding our goals. This team is made up of Ernie Stormann (@EStormann), Jennifer Griffin (@jengriff), Bill Barnett (@agilous) and Matt Brewer (@MattBrewer).&lt;br /&gt;&lt;br /&gt;The Facilities team is responsible for finding the location for the event and managing the setup and orchestration of the event over the weekend. This is a mammoth task, to plan, find and acquire food for everyone, to manage the registration and leading of people to their work environments, and ensuring that everyone is getting everything they need. The idea of 100 people descending on a single location for two days is going to be quite an  experience. Fortunately, the team is incredible, made up of Ryan Cromwell (@cromwellryan), Matt Brewer (@MattBrewer) and Sandi Sumerfield. They found a fabulous facility in the Miami University Voice of America location which has the most up-to-date and state-of-the-art video, network and teaching facilities I have ever seen. This building is basically being donated to us for this event because Miami University is so invested in helping the charities in this community.&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left: 50px;"&gt;&lt;a href="http://www.muohio.edu/voalc"&gt;Miami University's Voice of America Learning Center&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The Finance team is just me but I am fortunate to have made contact with some great partners to help me through this process and so many generous sponsors. However, I am learning that the financing of charity events is much harder than for-profit events. It seems that the word Charity discourages companies from sponsoring it. If anyone is interested in donating please let me know.&lt;br /&gt;&lt;br /&gt;&lt;div style="padding-left: 50px;"&gt;&lt;a href="http://southwestohiogivecamp.org/Home/Sponsor"&gt;http://southwestohiogivecamp.org/Home/Sponsor&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The Marketing team is a combination of people from all teams since each team has requirements to reach the people they need to reach. I just manage it but everyone contributes what they need. Andrea N. Brady from The Marketing Shop Consultants has been a great help, donating her time to craft articles for publishing.&lt;br /&gt;&lt;br /&gt;The process for putting this together starts with lots of enthusiastic smiles and then you start to realize all the details that are involved. The key to success rests on the team you choose. it's the Charities that need to win, not us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4761123270407984757?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4761123270407984757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4761123270407984757&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4761123270407984757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4761123270407984757'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2010/07/southwest-ohio-give-camp.html' title='Southwest Ohio Give Camp'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_IWJV2VJlogg/TEgp7_oBJMI/AAAAAAAAAZc/0JEhOa8vefs/s72-c/swogc_logo_gray.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-950475171718603238</id><published>2010-04-15T12:37:00.000-04:00</published><updated>2010-04-15T12:51:53.078-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Cincinnati Day of Agile - Registration Opens Today</title><content type='html'>Registration opens TODAY at noon. Seating for this event is very limited and this event is going to quickly sell out. Do not wait - register today at http://cincydayofagile.eventbrite.com/.&lt;br /&gt;&lt;br /&gt;What is Cincinnati Day of Agile?&lt;br /&gt;&lt;br /&gt;As the Agile project management process sweeps across the software industry, businesses not understanding the details are being left behind. The Cincinnati Day of Agile is an opportunity to understand what Agile is all about and hear from people that have used it, succeeded with it and have the results to prove it.&lt;br /&gt;&lt;br /&gt;At this one day event on Saturday, May 15th, a host of industry experts will be on hand to offer their hard won experiences. By bringing together a mix of developers, managers, Agile professionals, and technologists, the Cincinnati Day of Agile also provides excellent networking opportunities for its attendees. We hope you will join us to learn how Agile can make your software development process more effective, productive, and profitable.&lt;br /&gt;&lt;br /&gt;More about the event can be found at http://cincydayofagile.org/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-950475171718603238?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/950475171718603238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=950475171718603238&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/950475171718603238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/950475171718603238'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2010/04/cincinnati-day-of-agile-registration.html' title='Cincinnati Day of Agile - Registration Opens Today'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7254614175973391005</id><published>2009-12-06T11:07:00.008-05:00</published><updated>2010-03-15T20:24:32.985-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Kanban - A small practice project</title><content type='html'>A few months ago I completed my first &lt;a href="http://en.wikipedia.org/wiki/Kanban"&gt;Kanban&lt;/a&gt; project. The team was small and the introduction informal but it went well.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_IWJV2VJlogg/S51MsyMGkpI/AAAAAAAAAX4/A7E2_jwPpi0/s1600-h/2009-09-25+16.32.17.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_IWJV2VJlogg/S51MsyMGkpI/AAAAAAAAAX4/A7E2_jwPpi0/s320/2009-09-25+16.32.17.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5448595456458658450" alt="Kanban Board"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The team comprised 5 people. A technical manager, 3 web developers and me. They managed many projects simultaneously which resulted in a great deal of task switching for the developers.&lt;br /&gt;&lt;br /&gt;There were no detailed plans and few team planning sessions. The technical manager was able to keep track of the teams goals on the fly. As tasks and priorities changed, the team would be notified.&lt;br /&gt;&lt;br /&gt;Three of the team members had experienced a full agile project in the past which resulted in the team continuing daily stand-up meetings. They stated that they wanted to continue using TDD but that hadn't persisted as strongly. While one of the developers had used TDD in the past, they did not use it consistently, and the rest of the team did not have any training on the technique.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The project was estimated at 2 weeks and involved a UI replacement of an existing web application. A couple of minor business flows were going to change but essentially it was just large segments of the site getting new HTML/CSS. All HTML/CSS was developed by a 3rd Party design company so the in-house work was limited to verifying what was delivered and implementing the designs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Process&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We started with a little presentation on what Kanban is. Ran through some examples of how a project might be run with a focus on software projects. The whole team was in attendance along with a couple from other teams and a Director.&lt;br /&gt;&lt;br /&gt;Feedback seemed good with statements like "We need something like this" and "I wish we could get all teams to do this".&lt;br /&gt;&lt;br /&gt;From there we got the team together to chunk up the tasks and played &lt;a href="http://store.mountaingoatsoftware.com/products/planning-poker-cards"&gt;Planning Poker&lt;/a&gt; to come up with some high level estimates on how long it would take. Each task was written on a post-it note and stuck on a white board in the left hand column ready to be pulled forward into the work in progress.&lt;br /&gt;&lt;br /&gt;The columns we started with were:&lt;br /&gt;&lt;br /&gt;o  Backlog&lt;br /&gt;o  Work in progress&lt;br /&gt;o  QA&lt;br /&gt;o  Complete&lt;br /&gt;&lt;br /&gt;Even though "everything had to be done" it was agreed that some were more important than others so a loose prioritization scheme was devised that ensured that the correct post-its were pulled forward first. The manager took on the role of adding priorities to post-its in the Backlog column when needed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Results&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Team members initially needed some encouragement to move the post-its on their own. This soon past as they were offered the opportunity to take control of the work they were going to do.&lt;br /&gt;&lt;br /&gt;By the end of the first day we had blocked tasks. We started adding red stickies to the post-its but eventually moved them to a new blocked column between the Backlog and Work in Progress columns.&lt;br /&gt;&lt;br /&gt;When asked, the team said they liked the process because it helped them see what was needed and completed.&lt;br /&gt;&lt;br /&gt;A great indicator of the teams investment was the exclaimation "Wow, look how much we have got done" as they looked at the completed column full of post-its.&lt;br /&gt;&lt;br /&gt;Since the team was switched to and from other projects the estimated two weeks was not an elapsed time but the project was released before the business needed it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comparison with Agile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We did take the time to estimate the stories which wouldn't necessarily be part of a Kanban project. However, there was concern about the completion time which needed some up front guestimates to allow the team size to be predicted.&lt;br /&gt;&lt;br /&gt;Beyond release estimating, no time was spent planning what tasks should be worked in the first iteration. While it was only a two week project, in a Scrum or XP project we might have tried for 2 one week iterations. Not doing this did save us a little time and since the Kanban board continued to show tasks getting completed there was always a clear understanding that things that were getting completed. &lt;br /&gt;&lt;br /&gt;Additionally, without iterations we didn't ever ask ourselves about what to do if we had not finished the estimated work in the iteration. Instead we maintained the column constraints and monitored how long items stayed there.&lt;br /&gt;&lt;br /&gt;If this team ran all their projects using Kanban, the lack of planned iterations might allow some projects too fall through the net. This can be handled with simple organizational changes so shouldn't be a risk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7254614175973391005?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7254614175973391005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7254614175973391005&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7254614175973391005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7254614175973391005'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/12/kanban-small-practice-project.html' title='Kanban - A small practice project'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_IWJV2VJlogg/S51MsyMGkpI/AAAAAAAAAX4/A7E2_jwPpi0/s72-c/2009-09-25+16.32.17.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2409807273707190571</id><published>2009-11-21T10:09:00.009-05:00</published><updated>2009-11-21T14:10:59.116-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Grand Rapids Give Camp - Cincinnati Satelite - Retrospective</title><content type='html'>What an excellent time, hanging with friends, meeting new people and the opportunity to help out some charities at the same time.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://grgivecamp.org"&gt;&lt;img style="display:block; margin:0px auto 0px; text-align:center;cursor:pointer; cursor:hand;width: 224px; height: 77px;" src="http://4.bp.blogspot.com/_IWJV2VJlogg/SwgbmCHNvFI/AAAAAAAAAWo/pfEkkofIUfo/s320/logo_grand_rapids_give_camp.jpg" border="0" alt="Grand Rapids Give Camp"id="BLOGGER_PHOTO_ID_5406601692874390610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I first heard about Give Camp when &lt;a href="http://twitter.com/mikewo"&gt;Mike Wood&lt;/a&gt; published his involvement at one of last years events. When Mike mentioned Grand Rapids I knew it was something I wanted to be involved with. Only a 5 hour drive from Cincinnati but it turned out that the drive was not going to be possible. Fortunately, with some great support and nagging from friends I decided we needed to organize a Cincinnati based satellite to see if we could help out.&lt;br /&gt;&lt;br /&gt;Now that it is over, everyone is talking about doing our own in Cincinnati next year so here are some memories to remind us.&lt;br /&gt;&lt;br /&gt;Over the coarse of the of the weekend twelve local developers volunteered their time and were able to contribute to 5 different projects with their Rails, PHP (Joomla/Drupal) and .Net (dotNetNuke) experience. A great diversity of skills allowed this group to really make a difference.&lt;br /&gt;&lt;br /&gt;Thanks everyone, you rock, &lt;a href="http://twitter.com/rabiedenharn"&gt;Rob Biedenharn&lt;/a&gt;, &lt;a href="http://twitter.com/BradLeydorf"&gt;Brad Leydorf&lt;/a&gt;, &lt;a href="http://twitter.com/skimedic"&gt;Phil Japikse&lt;/a&gt;, &lt;a href="http://twitter.com/markhaskamp"&gt;Mark Haskamp&lt;/a&gt;, &lt;a href="http://twitter.com/fglandorf"&gt;Frank Glandorf&lt;/a&gt;, &lt;a href="http://twitter.com/KevinLongshore"&gt;Kevin Longshore&lt;/a&gt;, &lt;a href="http://twitter.com/agilous"&gt;Bill Barnett&lt;/a&gt;, &lt;a href="http://twitter.com/hellogerard"&gt;Gerard Sychay&lt;/a&gt;, &lt;a href="http://twitter.com/sunilkom"&gt;Sunil Kommirshetty&lt;/a&gt;, &lt;a href="http://twitter.com/oliwa19"&gt;Brian Harwell&lt;/a&gt;, &lt;a href="javascript:alert('what no twitter?')"&gt;Andy Douglas&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It was great working with the Grand Rapids team, &lt;a href="http://twitter.com/cwoodruff"&gt;Chris Woodruff&lt;/a&gt;, &lt;a href="http://twitter.com/rmontgomery429"&gt;Ryan Montgomery&lt;/a&gt;, &lt;a href="http://twitter.com/carl_furrow"&gt;Carl Furrow&lt;/a&gt;, &lt;a href="http://twitter.com/lukerumley"&gt;Luke Rumley&lt;/a&gt;, &lt;a href="http://twitter.com/emilystoddard"&gt;Emily Stoddard&lt;/a&gt; and an apparent endless list of others that I never got to talk to.&lt;br /&gt;&lt;br /&gt;However, as with all experience, it wasn't just buttercups and blue bells. As a remote team we experienced the usual problems that distributed developers face. We had a hard time connecting with the teams in Grand Rapids. To make Give Camp Satellites more effective they really need full Voice/IM connections with the teams they work with.&lt;br /&gt;&lt;br /&gt;On the first night Luke took on the the role of runner and was great at matching the experiences we had in Cincinnati with the work opportunities up there.&lt;br /&gt;&lt;br /&gt;The second day involved us bugging people we learned about on the first day to see if we could help. We heard that they were mostly involved with design work and we were not UI people so the pickings were lean to start with. As the day rolled on we started getting more hits and ended up being able to make some real connections and contributing some positive changes.&lt;br /&gt;&lt;br /&gt;The last day left us with one, particularly difficult, bug to address which ended up taking input from 5 developers, over 7 hours, to find the eventual 2 character fix. Oh Safari, the pain you put us through.&lt;br /&gt;&lt;br /&gt;As the closing ceremony started in Grand Rapids, we had our own celebration with the most popular food of the weekend, a giant bag of M&amp;M's and promises to work on a Cincinnati Give Camp next year.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://edgecase.com"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 64px;" src="http://2.bp.blogspot.com/_IWJV2VJlogg/Swgab-I4r8I/AAAAAAAAAWY/0y2YB1yggFI/s200/logo_edgecase.jpg" border="0" alt="EdgeCase Software Artisans"id="BLOGGER_PHOTO_ID_5406600420497338306" /&gt;&lt;/a&gt; Thanks to &lt;a href="http://edgecase.com"&gt;EdgeCase&lt;/a&gt; for donating their Cincinnati office space, and for those that work there, letting us use their desks and plug-in to their monitors.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.budgetsketch.com"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 53px;" src="http://2.bp.blogspot.com/_IWJV2VJlogg/Swgaipc1f8I/AAAAAAAAAWg/q6qYkMM8jQc/s200/logo_budget_sketch.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5406600535202955202" /&gt;&lt;/a&gt; Thanks to &lt;a href="https://www.budgetsketch.com"&gt;Finagilous&lt;/a&gt; for supplying food.&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both;"&gt;Some pictures:&lt;/div&gt;&lt;br /&gt;    &lt;a href="http://twitpic.com/pe97d"&gt;EdgeCase Office&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://twitpic.com/pep87"&gt;All Volunteers waiting for work&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://twitpic.com/peghj"&gt;Bill, Frank and Mark&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://agilous.posterous.com/i-love-this-picture-of-me-taken-by-fglandorf"&gt;Rob and Bill&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://brightkite.com/objects/fd4670405eb7d97b1e9be0aef7ff19ea"&gt;Kevin, Ed and Andy&lt;/a&gt;&lt;br /&gt;    &lt;a href="http://twitpic.com/pjz5w"&gt;Bill and Rob&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2409807273707190571?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2409807273707190571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2409807273707190571&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2409807273707190571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2409807273707190571'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/11/grand-rapids-give-camp-cincinnati.html' title='Grand Rapids Give Camp - Cincinnati Satelite - Retrospective'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_IWJV2VJlogg/SwgbmCHNvFI/AAAAAAAAAWo/pfEkkofIUfo/s72-c/logo_grand_rapids_give_camp.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6744018939182875343</id><published>2009-06-27T12:19:00.009-04:00</published><updated>2010-04-15T12:58:31.647-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Security and Quality through Testing or Process?</title><content type='html'>As an Agile software developer I talk alot about testing. I promote and teach Test Driven Development and push to change the habits of developers to encourage quality traits that make the software we produce just work.&lt;br /&gt;&lt;br /&gt;I want to draw a distinction between the understanding that I am "testing" and the fact that I am following a "process". This may be moot in the grand scheme of things but it strikes me as important because of a sentence I was about to make to a security professional.&lt;br /&gt;&lt;br /&gt;Consider this:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: Monospace; font-size: 1em;"&gt;As a software developer, my primary goal is to make software work.&lt;br /&gt;&lt;br /&gt;A QA developer is focused on making software NOT work.&lt;br /&gt;&lt;br /&gt;This is why I am not capable of testing.&lt;br /&gt;&lt;br /&gt;Similar logic demands that&lt;br/&gt;I am not capable of producing secure code.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;The problem with this logic is that is contradicts everything I teach. Test, test, test but, oh by the way, you are not capable of succeeding.&lt;br /&gt;&lt;br /&gt;So, perhaps I should describe TDD as a development process that improves quality instead of a process that tests code. While the eventual result is a set of tests that verify features of code, the developer gets there by following the TDD process, not by trying to make things break.&lt;br /&gt;&lt;br /&gt;This is not a statement of whether TDD is a design process or not. Different discussion. I am addressing developer intent, not defining the outcome of the TDD process.&lt;br /&gt;&lt;br /&gt;In TDD we first follow a simple mantra:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: Monospace; font-size: 0.9em;"&gt;Run the Test,&lt;br /&gt;Change the Test,&lt;br /&gt;Change the Code,&lt;br /&gt;Repeat every 60 seconds.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Step two of this process could be argued to be an attempt to break code. However, this is not true since all we are doing is writing tests that will break because the functionality is not implemented yet.&lt;br /&gt;&lt;br /&gt;TDD offers us a process to ensure that we end up with a suite of testing code that matches our running code.  So TDD is not a testing process, just a development process that encourages a higher quality of working code than other processes.&lt;br /&gt;&lt;br /&gt;From a higher level, the software development process we use already "values" a Quality Assurance team that double checks the work that we do. These people focus on breaking our code and do a really good job at it. They are a critical step to producing reliable software.&lt;br /&gt;&lt;br /&gt;Another important role that software developers are unable to be good at is producing secure code. While we can learn the best practices and gain an understanding of the &lt;a href="http://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project"&gt;OWASP Top 10 attacks&lt;/a&gt; we are still trying to make software work for the business, we are not trying to prevent customers from attacking it.&lt;br /&gt;&lt;br /&gt;Even with this problem, the software development process doesn't "value" a security organization reviewing the product that is produced.&lt;br /&gt;&lt;br /&gt;Our industry is just starting to learn how to integrate security intelligence into the software build process and, to date, we software developers do not have a Security Driven Development process to improve our odd for success.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ddj.com/architect/184414985"&gt;Scott Ambler's 2003 article&lt;/a&gt; predicted its creation in 2004 but his predicted internet shutdown wasn't as impressive a game changer as he thought. Unfortunately, that remains a learning curve in our future.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6744018939182875343?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6744018939182875343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6744018939182875343&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6744018939182875343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6744018939182875343'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/06/security-and-quality-through-testing-or.html' title='Security and Quality through Testing or Process?'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-9205008935619997225</id><published>2009-06-19T08:58:00.004-04:00</published><updated>2009-06-19T09:10:45.458-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Dynamic vs Static Typing: An Observation</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;This is a dynamically typed language&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;pron. This v. is prep. a adj. statically n. typed n. language&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-9205008935619997225?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/9205008935619997225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=9205008935619997225&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9205008935619997225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9205008935619997225'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/06/dynamic-vs-static-typing-observation.html' title='Dynamic vs Static Typing: An Observation'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2840953055882222316</id><published>2009-03-13T19:35:00.005-04:00</published><updated>2009-10-06T08:35:09.930-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Careful, Java Programmers going to Ruby</title><content type='html'>&lt;div style="text-align: center; font-weight: bold;"&gt;Good evening everyone, I am a Java programmer.&lt;br /&gt;It happened quickly, I didn't even notice.&lt;br /&gt;One day I was merrily strncpy'ing and the next it was immutable.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We joke about languages of old while new shinny languages are paraded in front of us, but in the end they all teach us something and make us forget other things.&lt;br /&gt;&lt;br /&gt;Today I came across the first serious change that the Java world thrust upon my weak mind. I am working a Ruby project, a great new shinny language which is lots of fun to learn and work with.&lt;br /&gt;&lt;br /&gt;When working in Java I use the usual Agile development process; write your test, write some code and repeat. As I progress, my code, and indeed the API design, evolve into a nice usable, stable set of libraries.&lt;br /&gt;&lt;br /&gt;Working in Java, with Eclipse, the simplest technique is to start by writing your test, reference a public method, press a key to create it and flush out the implementation. As you go, you will naturally refactor pieces of code into new methods to keep it simple.&lt;br /&gt;&lt;br /&gt;Well, this is where things get a little too easy for Java developers in Eclipse. To refactor a block of code into a new method just select it, press a couple of keys and Eclipse creates the new method for you. A new private method in the same class.&lt;br /&gt;&lt;br /&gt;Sounds good right? Well it is, except, that you have now learned to not thing about the scoping your your methods when you create them. Your first is always public or protected because your test is driving it and subsequent methods are private by default as created by the IDE. It's a beautiful system.&lt;br /&gt;&lt;br /&gt;Now you switch to Ruby.&lt;br /&gt;&lt;br /&gt;You write your test and implement your public method, you refactor with the cut/paste/rename/suffle and low and behold, because you have learned not to think about it, you have loads of public methods in your class.&lt;br /&gt;&lt;br /&gt;The project I am working on takes it one step further and has tests for every method, examining all its nuances, mocking all its dependencies and going to town making the implementation as couple to the test as possible. It's easy to do, they are all public, what else is a programmer to do?&lt;br /&gt;&lt;br /&gt;Unit testing philosophy does vary depending on who you talk to but my basic goal is to:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Test all public methods,&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test all protected methods,&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If a private method is particularly complex make it protected and test it,&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If I have loads of "untested" private methods I need to move some to new classes and make them public. I leave it to you to quantify "loads".&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Trust your coverage tool to tell you the private code you never use and delete it.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;So, starting tomorrow, I change my Ruby development process and consider all new methods private unless part of a test driven process. This will do lots of things to improve the final product:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Simplify the test/code dependencies making the tests less brittle.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Prevent call sequence bugs where you have to call one method before another or it all falls over. Too many publics will do that you know.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Make the calling conventions exposed by the class easier to grok by new programmers reading the code.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Improve Class API design which is one of the primary benefits of TDD, lost to the lazy public manic people like me.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Oh, yes, an stop putting java semicolons in Ruby code. That really upsets the Ruby people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2840953055882222316?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2840953055882222316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2840953055882222316&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2840953055882222316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2840953055882222316'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/03/careful-java-programmers-going-to-ruby.html' title='Careful, Java Programmers going to Ruby'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2687431152898686118</id><published>2009-03-13T10:03:00.004-04:00</published><updated>2009-03-13T10:40:23.999-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Tests and Blank Lines</title><content type='html'>Add blank lines please.&lt;br /&gt;&lt;br /&gt;This might sound stupid and, indeed, alternate DSL's for unit testing are making this less of an issue but there are still a lot of the old XUnit frameworks that prevent isolation of the 3 areas of your tests.&lt;br /&gt;&lt;br /&gt;Every test you have needs to be setup, executed and validated. Let's start with a Java example.&lt;br /&gt;&lt;span style="white-space: pre-wrap; font-family: monospace;"&gt;&lt;br /&gt;    public static void testSomething()&lt;br /&gt;    {&lt;br /&gt;       Address address = new Address();&lt;br /&gt;       address.setName("The House");&lt;br /&gt;       address.setLine1("1234 Street Ave");&lt;br /&gt;       address.setCity("Cityville");&lt;br /&gt;       address.setCountry("US");&lt;br /&gt;       address = dao.geocode(address);&lt;br /&gt;       assert_equals(-86.234, address.getLatitude());&lt;br /&gt;       assert_equals(46.234, address.getLongitude());&lt;br /&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What does this test do? Which lines of code are being tested? Ok, lets try again with blank lines.&lt;br /&gt;&lt;span style="white-space: pre-wrap; font-family: monospace;"&gt;&lt;br /&gt;    public static void testSomething()&lt;br /&gt;    {&lt;br /&gt;       Address address = new Address();&lt;br /&gt;       address.setName("The House");&lt;br /&gt;       address.setLine1("1234 Street Ave");&lt;br /&gt;       address.setCity("Cityville");&lt;br /&gt;       address.setCountry("US");&lt;br /&gt;&lt;br /&gt;       address = dao.geocode(address);&lt;br /&gt;&lt;br /&gt;       assert_equals(-86.234, address.getLatitude());&lt;br /&gt;       assert_equals(46.234, address.getLongitude());&lt;br /&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Doesn't that help? A simple change and you can clearly see the three areas of your code.&lt;br /&gt;&lt;br /&gt;I hear you shout "setup method", I know but junit sucks in that the only way to write enough tests with enough setup's is to have lots of separate test classes. Certainly go that way if you have a complex class to test but simpler stuff can be done in one class with a little setup and tests with blank lines.&lt;br /&gt;&lt;br /&gt;OK, what is the future of these blank lines? Well, Ruby has unit test libraries like &lt;a href="http://thoughtbot.com/projects/shoulda/"&gt;Shoulda&lt;/a&gt; that make these concepts easy to express.&lt;br /&gt;&lt;span style="white-space: pre-wrap; font-family: monospace;"&gt;&lt;br /&gt;  context "an address" do&lt;br /&gt;&lt;br /&gt;    setup do&lt;br /&gt;      @address = Address.new(&lt;br /&gt;        :name =&gt; "The House",&lt;br /&gt;        :line1 =&gt; "1234 Street Ave",&lt;br /&gt;        :city =&gt; "Cityville",&lt;br /&gt;        :country =&gt; "US"&lt;br /&gt;      )&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    should "be geocoded to a specific lat and long" do&lt;br /&gt;&lt;br /&gt;      @address = @address.geocode&lt;br /&gt;&lt;br /&gt;      assert -86.234, @address.latitude&lt;br /&gt;      assert 46.234, @address.longitude&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This allows us to separate and describe the areas of our tests, however, common usage has taken this API to the next level which, I think speaks to the need for the original idea behind the blank lines.&lt;br /&gt;&lt;span style="white-space: pre-wrap; font-family: monospace;"&gt;&lt;br /&gt;  context "an address" do&lt;br /&gt;&lt;br /&gt;    setup do&lt;br /&gt;      @address = Address.new(&lt;br /&gt;        :name =&gt; "The House",&lt;br /&gt;        :line1 =&gt; "1234 Street Ave",&lt;br /&gt;        :city =&gt; "Cityville",&lt;br /&gt;        :country =&gt; "US"&lt;br /&gt;      )&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    context "when geocoded" do&lt;br /&gt;&lt;br /&gt;      setup do&lt;br /&gt;        @address = @address.geocode&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      should "have a specific latitude" do&lt;br /&gt;        assert -86.234, @address.latitude&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      should "have a specific longitude" do&lt;br /&gt;        assert 46.234, @address.longitude&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the use of the sub-context for each "test" and the use of the setup method to actually run the test, allows us to isolate the specifics of what the test is all about and describe each area.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2687431152898686118?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2687431152898686118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2687431152898686118&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2687431152898686118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2687431152898686118'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/03/tests-and-blank-lines.html' title='Tests and Blank Lines'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4144227362939530201</id><published>2009-03-11T10:09:00.003-04:00</published><updated>2009-03-11T10:41:24.141-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Extreme Arguments and the Slippery Slope</title><content type='html'>So often we hear doubters ripping into ideas for their "potential" for destroying the world we know. Why the crazy extreme?&lt;br /&gt;&lt;br /&gt;Most recently it was argued that code refactoring was bad because a programmer will spend so much time "perfecting" the code that they will never finish the project.&lt;br /&gt;&lt;br /&gt;Another, states that we spend so much time unit testing that we don't write production code.&lt;br /&gt;&lt;br /&gt;Another that you have to "corrupt" your beautiful domain design so much to make it testable that it makes OO irrelevant.&lt;br /&gt;&lt;br /&gt;The Republicans are doing with the whole stimulus thing. A few billion spent means that we are on the slippery slope that results in the government owning every house in the country.&lt;br /&gt;&lt;br /&gt;The "Slipper Slope" argument is the favorite argument of the person that doesn't have an argument for the proposal on the table.&lt;br /&gt;&lt;br /&gt;Perhaps we should attempt assess the benefits of a proposal based on the proposal.&lt;br /&gt;&lt;br /&gt;If you don't understand why something is bad you should not announce your opinion about your fears of what it might lead to. If it ends up leading there, announce away, until then, lets improve our world one step at a time.&lt;br /&gt;&lt;br /&gt;Sticking to the facts is the single hardest thing we do. Especially, since facts can be a little slippery themselves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4144227362939530201?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4144227362939530201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4144227362939530201&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4144227362939530201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4144227362939530201'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/03/extreme-arguments-and-slippery-slope.html' title='Extreme Arguments and the Slippery Slope'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8444967378804019377</id><published>2009-02-02T09:29:00.005-05:00</published><updated>2009-02-02T14:58:57.219-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Garmin nuvi 760</title><content type='html'>I had a Gadget Frenzy this morning that worked out quite well. This years birthday produced a Garmin nuvi 760 which will prevent me from getting lost unless I am too busy playing with its features to notice the turns it is telling me about.&lt;br /&gt;&lt;br /&gt;Oh, by the way, don't play with your Garmin while driving. This is the first and largest warning the device gives you, even ahead of the one about how the device may, &lt;span style="font-weight:bold;"&gt;or may not&lt;/span&gt;, get you where you want to go.&lt;br /&gt;&lt;br /&gt;This device also includes an SD Card slot and mp3 player, plus Bluetooth phone headset connectivity, an FM transmitter and an audio jack. Oh, and a picture viewer, but what on early is the point if that.&lt;br /&gt;&lt;br /&gt;Unfortunately the FM transmitter is no use in Cincinnati because all the radio stations are too close and powerful, however, the audio jack and an audio cassette adapter work wonderfully.&lt;br /&gt;&lt;br /&gt;So, imagine the scene. Car stereo blaring but with no sound, just yet, a fresh set of podcasts loaded onto the SD Card and a willingness to connect as many pieces simultaneously as possible.&lt;br /&gt;&lt;br /&gt;Select the media player on the Garmin, create a play list and hit play for the latest episode of &lt;a href="http://www.furledsails.com"&gt;Furled Sails&lt;/a&gt; sailing podcast. &lt;br /&gt;&lt;br /&gt;Hit Back and select "Where To" enter my work address and press Go. The mp3 pauses and a nice lady with British accent says, "Please drive to the beginning of the route" and back to the sailing adventures. She even says route like the Brits say it, root, I had forgotten, how sweet.&lt;br /&gt;&lt;br /&gt;My Treo 650 Bluetooth has already synced with the Garmin so if someone would call me, please, we can have all three audio streams passing through this device, hopefully, appropriately paused.&lt;br /&gt;&lt;br /&gt;So my problem now is, do I continue listening to the Sailing podcast or switch over to my &lt;a href="http://www.amazon.com/His-Excellency-Washington-Joseph-Ellis/dp/1402544766"&gt;His Excellency: George Washington&lt;/a&gt; audio CD. Either way, I should arrive at my destination, precisely at 8:29am.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8444967378804019377?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8444967378804019377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8444967378804019377&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8444967378804019377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8444967378804019377'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/02/garmin-nuvi-760.html' title='Garmin nuvi 760'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7267813747990444354</id><published>2009-02-01T13:48:00.003-05:00</published><updated>2009-02-01T13:59:53.095-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Wordle - like a tag cloud but wordier</title><content type='html'>&lt;p&gt;A &lt;a href="http://www.wordle.net"&gt;Wordle&lt;/a&gt; creates a word cloud of your blog&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.wordle.net/gallery/wrdl/495389/esumerfield.blogspot.com"&gt;&lt;br /&gt;&lt;img src="http://www.wordle.net/thumb/wrdl/495389/esumerfield.blogspot.com" alt="Wordle: esumerfield.blogspot.com" style="padding:4px;border:1px solid #ddd"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;or capture the state of the world at a single instant.&lt;/p&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.wordle.net/gallery/wrdl/495408/cnn.com_Feb_01%2C_2009" title="Wordle: cnn.com Feb 01, 2009"&gt;&lt;br /&gt;&lt;img src="http://www.wordle.net/thumb/wrdl/495408/cnn.com_Feb_01%2C_2009" alt="Wordle: cnn.com Feb 01, 2009" style="padding:4px;border:1px solid #ddd"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7267813747990444354?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7267813747990444354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7267813747990444354&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7267813747990444354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7267813747990444354'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/02/wordle-like-tag-cloud-but-wordier.html' title='Wordle - like a tag cloud but wordier'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5227937082883555163</id><published>2009-01-29T09:57:00.000-05:00</published><updated>2009-01-29T09:58:13.082-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><title type='text'>Prototype Ajax Responders - Disabling</title><content type='html'>The &lt;a href="http://www.prototypejs.org/api/ajax"&gt;Prototype Ajax&lt;/a&gt; API allows us to make requests to our web servers very easily. It also supports &lt;a href="http://www.prototypejs.org/api/ajax/responders"&gt;Responders&lt;/a&gt; that allow you to declare standard behaviors to occur before and after your Ajax calls, like show the spinning ball and dim the page and fun things like that.&lt;br /&gt;&lt;br /&gt;The nice thing about this approach is that you don't have to worry about setting up these behaviors around your send and receive methods for each call. Instead, they just work, until you don't want them to.&lt;br /&gt;&lt;br /&gt;I have a session timeout popup that needs to submit an Ajax request to tickle the server session stopping it from timing out. I do not want my standard behaviors  occurring since this is not a modal interaction like all my other Ajax calls.&lt;br /&gt;&lt;br /&gt;What I need to do is let my "responders" know that this is not a call that I want handled. This is my standard Ajax API that wraps the prototype call. As you can see, I am enforcing a json interface to the callback supplied by my application.&lt;br /&gt;&lt;span style="white-space: pre-wrap;font-family:monospace;font-size:12;"  &gt;&lt;br /&gt;  var Url = Class.create(&lt;br /&gt;  {&lt;br /&gt;      get: function(a_url, a_callback)&lt;br /&gt;      {&lt;br /&gt;          new Ajax.Request(a_url,&lt;br /&gt;          {&lt;br /&gt;              method :'get',&lt;br /&gt;              onSuccess : function(a_transport)&lt;br /&gt;              {&lt;br /&gt;                  var json = eval(a_transport.responseText);&lt;br /&gt;                  a_callback(a_transport, json);&lt;br /&gt;              }&lt;br /&gt;          });&lt;br /&gt;      }&lt;br /&gt;  });&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The behaviors I am using are simple dimming of the background and the usual spinner image.&lt;br /&gt;&lt;span style="white-space: pre-wrap;font-family:monospace;font-size:12;"  &gt;&lt;br /&gt;  Ajax.Responders.register(&lt;br /&gt;  {&lt;br /&gt;      onCreate : function(a_request)&lt;br /&gt;      {&lt;br /&gt;          if (Ajax.activeRequestCount &gt;= 1)&lt;br /&gt;          {&lt;br /&gt;              document.body.addClassName('ajax-processing');&lt;br /&gt;              new Popup('spinning_wait',null,&lt;br /&gt;              {&lt;br /&gt;                  position: 'screen',&lt;br /&gt;                  modal:true,&lt;br /&gt;                  effect: 'blink'&lt;br /&gt;              }).show();&lt;br /&gt;           }&lt;br /&gt;      },&lt;br /&gt;      onComplete : function(a_request)&lt;br /&gt;      {&lt;br /&gt;          if (Ajax.activeRequestCount == 0)&lt;br /&gt;          {&lt;br /&gt;              $('spinning_wait').popup.hide();&lt;br /&gt;              document.body.removeClassName('ajax-processing');&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  });&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So the problem is how do I specify, at call time, whether a specific Ajax call should be modal or not. Fortunately, the Prototype library passes the options to your Responders so that you can push in variables as you like.&lt;br /&gt;&lt;br /&gt;To do this add your own options to your Prototype Ajax call.&lt;br /&gt;&lt;span style="white-space: pre-wrap;font-family:monospace;font-size:12;"  &gt;&lt;br /&gt;  new Ajax.Request(a_url,&lt;br /&gt;  {&lt;br /&gt;      my_custom_modal_option: true,&lt;br /&gt;      ...&lt;br /&gt;  });&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;And in your handlers you can access this custom option.&lt;br /&gt;&lt;span style="white-space: pre-wrap;font-family:monospace;font-size:12;"  &gt;&lt;br /&gt;  onCreate : function(a_request)&lt;br /&gt;  {&lt;br /&gt;      if (a_request.options.my_custom_modal_option)&lt;br /&gt;      {&lt;br /&gt;          ...&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can of coarse pass in any property name to drive any kind of behavior you like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5227937082883555163?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5227937082883555163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5227937082883555163&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5227937082883555163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5227937082883555163'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/prototype-ajax-responders-disabling.html' title='Prototype Ajax Responders - Disabling'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7991298461521084244</id><published>2009-01-24T12:53:00.004-05:00</published><updated>2009-01-24T15:37:33.219-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>2D, 3D and 4D Languages</title><content type='html'>If you are looking for something about graphics, then go away. Nothing of interest here.&lt;br /&gt;&lt;br /&gt;I want to coin some terms that allow us to describe the languages we use. Nothing fancy but we might find it useful to limit the pro/con discussions and abstract them to something simpler.&lt;br /&gt;&lt;br /&gt;We have talked bout 3rd Generation and 4th Generation languages to allow us to conceptualize the abstractions at the language level as opposed the class level. 4G languages are still being sold by those after some money but continue to be generally despised by programmers that can't make them do what they need.&lt;br /&gt;&lt;br /&gt;OK, so why add the concept of a dimension here? Well, it probably has something to do with how my mind works and is not necessarily anything anyone else might share but when you say "refactor these lines into another method" I see that as a vertical or horizontal shift in behavior. Perhaps they are being generalized into a base class, vertical obviously, or moved into a delegate class that would be a right shift. These are 2D movements performed in all languages but C, for example, is limited to these kinds of adjustments.&lt;br /&gt;&lt;br /&gt;Some languages are able to move along the Z axis. Object Oriented languages add to the 2D shifts the ability to distribute behaviors across instances, while not being able to vary behavior along this axis they are varying state and therefore execution paths vary by vertical plane. Each layer represents a keenly scoped set of behaviors driven by the state passed in. These are cones of execution, from a single method entry point at the tip of the cone, the state is distributed out across a set of associated instances to apply the appropriate behavior.&lt;br /&gt;&lt;br /&gt;These 3D models become more complicated when you consider how some line of code inside a cone might throw an exception that provides a pipe to some layer of your application, in-front-of and left-of the throw point. It produces a hole in the side of the cone where flow can pass to another location.&lt;br /&gt;&lt;br /&gt;Cones are contained within other cones of coarse, the applications main method being the pointy end of the outer cone. The API design rules we apply like no globals, no leaky abstractions, scope actions on state within their own class, all go to explain why no cone sides should ever intersect.&lt;br /&gt;&lt;br /&gt;If you are still with me, then on we move to the 4th Dimension. I don't know how you conceive this in real space but I tend to look at the time dimension as a set of invisibility cloaks. As you move forward throw the cloaks, the last set of 3D stuff you were looking at disappears and another set appears. Presumably, we could move backwards to start seeing back in time.&lt;br /&gt;&lt;br /&gt;Well Ruby, and other dynamic languages, have started playing with this dimension. Each instance, executing it's methods in it's cone, can be changed at runtime. A call to File.new here is different from the same call there. This allows us to evolve what is being executed based on state, time or idle whim. Code is data, data is code.&lt;br /&gt;&lt;br /&gt;Now these concepts have some evolution ahead of them since these changes are made at "indiscreet points" at the moment. So I have to make the change and then execute that change. I can't encapsulate a change and an execution into a single language concept but these are just the semantics we play with today.&lt;br /&gt;&lt;br /&gt;Behind each invisibility cloak is a 3D model of a runtime. Each model contains a set of finite behaviors and their changing state. Any statement that mutates it's own behavior, creates an invisibility cloak.&lt;br /&gt;&lt;br /&gt;Don't confuse these with threads. Threads are shiny, sparkly little stars, like the sparklers from fireworks night, that run around your 3D cones doing stuff. There may be many of these things in a single 2D or 3D model, all buzzy and excitable. Some running around the same cone, trying to find your threading bugs for you but as long as your cones don't have cracks you will be fine.&lt;br /&gt;&lt;br /&gt;When you hear Ruby programmers arguing about that there are no static methods in Ruby, what they are saying is that Ruby is a 4D language and the person they are arguing with only knows 3D languages. It's just like the old arguments that prompted 2D experienced people to say that we could do anything in C that you could do in C++. Yes, I used to argue that one back in the day. Fundamentally true only because it's also true that you can build a house with matchsticks if you really, really wanted to.&lt;br /&gt;&lt;br /&gt;Ruby offers far more than just it's 4D features. Open classes, modules and closures are different ways to describe static, 3D concepts. A language becomes 4D when it can vary it's behavior at runtime. This isn't a new concept on it's own. I used to write basic programs that added code as it ran 20 years ago but this is more than this simple concept.&lt;br /&gt;&lt;br /&gt;When we look at programming we talk less about the detailed syntax of how features are coded and more at the best constructs that survive change and optimize re-usability. We don't have many strategies defining how to mutate code as it runs to augment the runtime model that is executing.&lt;br /&gt;&lt;br /&gt;The best proof that I don't know what I am doing in 4D is to look at the invisible cloak. I think this shape needs to change to better describe the scoped change that a piece of behavior might adopt.&lt;br /&gt; &lt;br /&gt;I wonder what 5D means?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7991298461521084244?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7991298461521084244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7991298461521084244&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7991298461521084244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7991298461521084244'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/2d-3d-and-4d-languages.html' title='2D, 3D and 4D Languages'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5379445802577426988</id><published>2009-01-22T12:17:00.004-05:00</published><updated>2009-01-22T14:02:15.497-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>BDD test framework Shoulda</title><content type='html'>Behavior Driven Development is an interesting slant on testing. There appear to be many opinions on its advantages and disadvantages. At the end of the day, if you are testing, you have already won.&lt;br /&gt;&lt;br /&gt;So, the question is, how can you tweak your method to improve on your bugs-per-line-of-code metric. This post isn't about that because I have no idea if BDD or Shoulda will help.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thoughtbot.com/projects/shoulda"&gt;Shoulda&lt;/a&gt; is an alternative BDD framework to &lt;a href="http://rspec.info/"&gt;RSpec&lt;/a&gt; that has been argued about for so long. I can't help you with that either.&lt;br /&gt;&lt;br /&gt;Instead, I just started using Shoulda in a Rails app so thought I would share some complaints, because being constructive is just too much work.&lt;br /&gt;&lt;br /&gt;I switch a simple controller test over to Shoulda and it ran and passed but the original 3 tests that used to pass are now reported as "0 tests, 0 failures, 0 errors". While I proved that if there was an error it did explain precisely what was wrong to me, this 0 tests thing is severely demotivating. It is amazing how watching the number of tests grow in your project can encourage you to continue to strive for perfection.&lt;br /&gt;&lt;br /&gt;IDE integration is always a problem with new stuff. NetBeans allows me to run a single test case with ctrl-shift F6 which is convenient if you have few that are suddenly failing. No such luck with the Shoulda version, all tests all the time.&lt;br /&gt;&lt;br /&gt;However, all this is trivia compared to being able to do something like this:&lt;br /&gt;&lt;span style="white-space: pre-wrap;  font-family:monospace;font-size:12px;"&gt;&lt;br /&gt;require 'test/unit'&lt;br /&gt;require 'shoulda'&lt;br /&gt;&lt;br /&gt;class Lion&lt;br /&gt;  def speak&lt;br /&gt;    "rarrrr hickup"&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class TestLion &lt; Test::Unit::TestCase&lt;br /&gt;&lt;br /&gt;  context "the lion" do&lt;br /&gt;    setup do&lt;br /&gt;      @lion = Lion.new&lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;    should "say rarrr" do&lt;br /&gt;      assert_equal "rarrr", @lion.speak&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;and get this explanation of what you did wrong. &lt;br /&gt;&lt;span style="white-space: pre-wrap;  font-family:monospace;font-size:12px;"&gt;&lt;br /&gt;1) Failure:&lt;br /&gt;test: &lt;b&gt;the lion should say rarrr.&lt;/b&gt; (TestLion):&lt;br /&gt;&lt;"rarrrr"&gt; expected but was &lt;"rarrr hickup"&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Craft your feedback as carefully as you craft your output.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5379445802577426988?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5379445802577426988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5379445802577426988&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5379445802577426988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5379445802577426988'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/bdd-test-framework-shoulda.html' title='BDD test framework Shoulda'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1495304670822244313</id><published>2009-01-20T09:46:00.001-05:00</published><updated>2009-01-20T09:48:41.247-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Definition of old technology</title><content type='html'>A technology is old when Google returns forum hits with answers that have since been deleted from the forum.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Struts 1 still blows.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1495304670822244313?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1495304670822244313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1495304670822244313&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1495304670822244313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1495304670822244313'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/definition-of-old-technology.html' title='Definition of old technology'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7472227009751401129</id><published>2009-01-03T15:23:00.003-05:00</published><updated>2009-01-03T16:53:21.875-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Christmas 2008 Connections</title><content type='html'>Another slant on this holiday period. Our family combined presents this year and find ourselves with a new 40" LCD 1080p TV, cheap by comparison. Expensive were the new cabinet required to hold it, cables to plug it in and investment in time admiring the details of the baby wilder beasts eyelashes as the croc eats them off.&lt;br /&gt;&lt;br /&gt;Well this post is about connections because it seems all I have done is work out how to connect apparently useful devices together to produce alternate results. Lets start with the new WII.&lt;br /&gt;&lt;br /&gt;The best way to by a WII is to purchase your kids college education using the National City Bank card and then use the points you accrue to invest in a gaming system to take your mind off the amount of money it cost you. So this "free" WII was plugged in using a low def composite cable (1) since Mario in low detail is still Mario.&lt;br /&gt;&lt;br /&gt;The WII is internet connectable so that you can use the WII Shop online, oh how convenient that is. So a simple DHCP connection to the Linksys wireless router (2).&lt;br /&gt;&lt;br /&gt;The welcome screen of the WII shows a set of "channels" to select. One is the CD with the game you plugged in last, another the WII Shop Online channel. Well if you head off to this shop you are offered additional channels to purchase in the "point" currency. Each "point" is equivalent to 1 cent US so the fact that it is a "point" only serves to help you forget you are spending real money. One of the items to purchase for a very reasonable 500 points is the "Internate Channel". I could not resist (3). What it appears to do is download and install a cut down version of the &lt;a href="http://www.opera.com/devices/"&gt;Opera browser&lt;/a&gt; into your WII so that you can navigate the web with with the WII remote. No flash, no video support but very large buttons to shoot with your WII remote. On the whole not a bad experience.&lt;br /&gt;&lt;br /&gt;I needed to backup my Mac so invested in a &lt;a href="http://store.apple.com/us/product/MB276LL/A"&gt;Time Capsule&lt;/a&gt; which is a little white box that you plug some power into and hey presto you have backup (4). My first full backup took 27 hours. Needless to say the wireless part has a down side, however, now that it is just doing delta backups it is great. The Time Capsule is also a wireless access point but it didn't seem necessary to add a third subnet to the house.&lt;br /&gt;&lt;br /&gt;A long time ago I was lucky enough to win a high end XBox from the &lt;a href="http://cinnug.org"&gt;Cincinnati DotNet User Group&lt;/a&gt;. Well it was finally time to crack the seals and see what she could do. A special high definition connection to the TV with the switch on the side of the cable set appropriately (5) gave us an excellent view of videos and music that we could buy if we wanted to. See, I only buy things that give me the option to buy more. If only Paulson could have come up with this strategy.&lt;br /&gt;&lt;br /&gt;It didn't end there, with all these things to buy, what should one choose? Oh yes, Netflex, instant streaming of high def video through my XBox onto my TV, what could be better. Plus, bonus of bonuses, free for the first two weeks. I am in (6).&lt;br /&gt;&lt;br /&gt;To hook up Netflix Instant Viewing through your XBox is not too hard but does require a little "out of the box" thinking. Firstly, spool through the stream of adverts that the new horrendous XBox console throws at you until you find the randomly inserted Netflix. Sometimes it doesn't appear, so you have to go out and back in until the right random ad appears. I was persistent enough to beat the ad rampage.&lt;br /&gt;&lt;br /&gt;Once you click on this ad it downloads and installs something magical on you XBox that does nothing. Well I say nothing because it didn't do anything except tell me to go and find my computer and access the Netflix web site to create an account and enter a six character code.&lt;br /&gt;&lt;br /&gt;Once you have created your account and entered all your relevant bank draining information you are ready to go. The first thing we did was go back to the XBox and try to work out how to get a selection of movies. That will not work. Don't do it. Wastes lots of time and there is likley some frustrated screaming and a little cussing going on as well. I feel sure this is in the Netflix business goals, "Maximise setup frustration to optimize relief when complete".&lt;br /&gt;&lt;br /&gt;Instead, stay on the Netflix web site and select the movies you want to watch. Don't "Play" them even if it asks you to, that will just show them on your PC. Don't "Add" them because that means they will be arriving in the mail in a few days. Instead you have to find the few movies available for "instant viewing", hover over the "Add" button (don't click it), and a secret menu opens up inviting you to add the movie to your "instant queue".&lt;br /&gt;&lt;br /&gt;Finally, with movies in your instant queue you can go back to your XBox controller and they will appear in the list of available moves to watch. Note, to go back into that list on the XBox later you will have to go and find the randomly displaying Netflix advert which offers you the opportunity to practice your zen deep breathing. We chose "Then she found me", some might call a chick flick but I call a delightful romp through the hideous decisions people make when in love.&lt;br /&gt;&lt;br /&gt;Connection (7) is the XBox Extender which allows me to use the Media Center app on our little, slow, wireless connected laptop as a movie streaming hub. Yes, you guessed it, it's damned slow. However, we did find a nice use for it. It will play a slideshow of all the photos you have on your PC which allowed us a few minutes of joy with the "oohs" and "aaahs" and "do you remember that? No? Damn it thats were we met?" moments of our past.&lt;br /&gt;&lt;br /&gt;The next connection is to my Mac Book Pro. Another $20 and I am in posession of a fine looking cable, kindley posted to me by my friend Apple. This connects the DVI port on the Mac with the HDMI port on the TV (8). The 17" laptop screen runs at 1920x1200 and the 40" TV runs at 1920x1080 interlaced. So if my post Christmas figurin' is anything to go by, a TV pixel is 2.3 times bigger but only 9/10ths the relative height. This makes for a grainy hard to read image that I can't distinguish the "i"s and "l"s on.&lt;br /&gt;&lt;br /&gt;The last planned connection is a 17" 5x7 LCD picture frame to a 4G SD card from our camera (9). This was my present to my wife, the idea is, and note, this is how you make cool techy gagits romatic, that each time a pictures changes a new emotion enters the room. Say it together, aaahhhh.&lt;br /&gt;&lt;br /&gt;The moral of this story is that connected life is an amuzing way to while a way a cold Christmas week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7472227009751401129?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7472227009751401129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7472227009751401129&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7472227009751401129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7472227009751401129'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/christmas-2008-connections.html' title='Christmas 2008 Connections'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3974547333925866220</id><published>2009-01-03T15:12:00.004-05:00</published><updated>2009-01-03T15:21:29.053-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Christmas 2008</title><content type='html'>Yes, it happened again.&lt;br /&gt;&lt;blockquote&gt;3 days ignoring family squabbles,&lt;br /&gt;1 day opening presents and contemplating their impact to debt,&lt;br /&gt;2 days loosing battles with chocolate covered cherries,&lt;br /&gt;1 additional day loosing the battle with Bourbon Fudge,&lt;br /&gt;2 days contemplating why we do this,&lt;br /&gt;3 days rebelling against productivity, staying up till 3am watching bad movies,&lt;br /&gt;1 day realizing that time is running out so, re-insulated the attic to R49, replaced two windshields and a failing septic tank motor. Oh, correction, watched hard working people do these things.&lt;br /&gt;1 day remembering how lucky we are,&lt;br /&gt;The last day noting that this is going to happen again next year and there is nothing you can do about it so just smile, damn it.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3974547333925866220?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3974547333925866220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3974547333925866220&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3974547333925866220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3974547333925866220'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2009/01/christmas-2008.html' title='Christmas 2008'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8572760271542176631</id><published>2008-12-20T15:02:00.005-05:00</published><updated>2008-12-20T15:17:45.152-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Experience, Maturity and Smiling</title><content type='html'>&lt;blockquote&gt;Experience is having the ability&lt;br /&gt;to know what you don't know.&lt;br /&gt;&lt;br /&gt;Experience requires the maturity&lt;br /&gt;to admit your failures.&lt;br /&gt;&lt;br /&gt;Maturity involves experiencing&lt;br /&gt;failures and smiling.&lt;br /&gt;&lt;br /&gt;Smiling is the most precious&lt;br /&gt;experience that maturity brings.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8572760271542176631?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8572760271542176631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8572760271542176631&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8572760271542176631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8572760271542176631'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/12/experience-maturity-and-smiling.html' title='Experience, Maturity and Smiling'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8012722565321869067</id><published>2008-12-20T14:54:00.004-05:00</published><updated>2008-12-20T15:01:07.265-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>You Assumed your Win</title><content type='html'>&lt;blockquote&gt;Don't assume I'm not defending myself&lt;br /&gt;because I think you are correct.&lt;br /&gt;Sometimes, my silence just indicates that&lt;br /&gt;you have already been presumed irrelevant.&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8012722565321869067?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8012722565321869067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8012722565321869067&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8012722565321869067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8012722565321869067'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/12/you-assumed-your-win.html' title='You Assumed your Win'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8849188578870993681</id><published>2008-12-20T14:44:00.003-05:00</published><updated>2008-12-20T14:47:43.606-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Man from the inside</title><content type='html'>&lt;blockquote&gt;A man of steel&lt;br /&gt;until I am crying,&lt;br /&gt;a man of stone&lt;br /&gt;till I'm in love,&lt;br /&gt;a raging warrior&lt;br /&gt;tending a child,&lt;br /&gt;a human man&lt;br /&gt;intent in confusion.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8849188578870993681?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8849188578870993681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8849188578870993681&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8849188578870993681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8849188578870993681'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/12/man-from-inside.html' title='Man from the inside'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8766446038830726855</id><published>2008-12-10T09:00:00.003-05:00</published><updated>2008-12-10T09:35:11.967-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Ignorance and Enlightenent</title><content type='html'>I hate when I think of a cool line and the world thought of it first. I think this is a loosing race. Anyway, I can extrapolate, so there.&lt;br /&gt;&lt;blockquote&gt;The first step to enlightenment&lt;br /&gt;is an understanding of ones ignorance,&lt;br /&gt;however, I expect that any enlightenment&lt;br /&gt;that we achieve will only serve to&lt;br /&gt;clarify our ignorance.&lt;br /&gt;&lt;/blockquote&gt;I take solice in the acceptence of my inability to know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8766446038830726855?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8766446038830726855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8766446038830726855&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8766446038830726855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8766446038830726855'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/12/ignorance-and-enlightenent.html' title='Ignorance and Enlightenent'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7100147063059378450</id><published>2008-12-01T19:38:00.003-05:00</published><updated>2008-12-01T19:44:37.440-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Mac Missing Startup Sound Switch</title><content type='html'>Thanks to Alex at &lt;a href="http://www.hacktheday.com/mac-tips-turn-off-your-macs-startup-sound"&gt;Hack the Day&lt;/a&gt; I can finally turn off the Mac OSX startup sound.&lt;br /&gt;&lt;br /&gt;Just in case you haven't experienced this before. The sound itself isn't bad. However, if you were listing to some Black Sabbath when you shut your machine down, then toddle over to a quiet coffee shop to continue your day, the entire store will be regaled with the startup sound at Black Sabbath volume and that is embarrassing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7100147063059378450?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7100147063059378450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7100147063059378450&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7100147063059378450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7100147063059378450'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/12/mac-missing-startup-sound-switch.html' title='Mac Missing Startup Sound Switch'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2300777304695055861</id><published>2008-11-25T09:41:00.004-05:00</published><updated>2008-11-25T09:49:57.319-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Measurment of Human Greed</title><content type='html'>Two pots of coffee, one sitting beside the maker, just brewed, the other sitting in the maker right under the spout, just finished brewing.&lt;br /&gt;&lt;br /&gt;Which do you think will be emptied first?&lt;br /&gt;&lt;br /&gt;Be aware of the person that switches the pots and watches, gleefully, while fellow drinkers think they are pouring the better cup.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2300777304695055861?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2300777304695055861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2300777304695055861&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2300777304695055861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2300777304695055861'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/11/measurment-of-human-greed.html' title='Measurment of Human Greed'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-583440729103766339</id><published>2008-11-05T09:13:00.007-05:00</published><updated>2008-11-14T08:44:27.670-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>First time voter</title><content type='html'>As you may remember from a &lt;a href="http://esumerfield.blogspot.com/2007/12/new-nationality.html"&gt;previous post&lt;/a&gt;, I became an American Citizen December last year, so this election has been particularly exciting for me. I had the opportunity to effect the selection of the president of the United States of America. Wow, just saying it gives me chills.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a new citizen, about to vote, I had an obligation. Choose the voter that would now be canceled out by my diligent coloring in of that little rectangle. I found them too, don't know their name, but they have a Chabot sign in their front yard and under it some drivel about protecting the rights of kids to have guns to shoot each other. Yes, that person, will not be able to effect the outcome of an American election again. I am canceling out their opinion and that is satisfying.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a story, because I had no idea how crucial my vote would be. It turns out that I was the deciding vote. Through a sequence of apparently random events I caused Barack Obama to be elected.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As an Ohio resident I am told that I am special. We, apparently, are the chosen ones and are able to dictate who wins, so I already know that my vote is more important that the rest of America.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Additionally, I live in Hamilton county, a very red place, and CNN said that the switching of this county to blue allowed Obama to win Ohio. CNN said it so it must be true.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, by canceling a Republicans vote that wasn't canceled last year, I swung Hamilton county and so the election. Now that is power.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Neil Armstrong said it best during &lt;a href="http://esumerfield.blogspot.com/2007/12/new-nationality.html"&gt;my naturalization&lt;/a&gt;, "Immigrants are the life blood of America continually infusing new ideas to help this great country improve" (paraphrased). So, I humbly offer my voting services in the hope that my choice ends up being correct.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-583440729103766339?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/583440729103766339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=583440729103766339&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/583440729103766339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/583440729103766339'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/11/first-time-voter.html' title='First time voter'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5236327677370239550</id><published>2008-10-20T14:35:00.005-04:00</published><updated>2008-10-21T08:38:06.297-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Eclipse, bad UI change</title><content type='html'>I am sure that I am not the first to notice but Eclipse has gone through some changes that are causing a significant slow down in my productivity.&lt;br /&gt;&lt;br /&gt;This has been the premiere IDE for many years, offering best of breed user interface design concepts to optimize the life of the Java developer.&lt;br /&gt;&lt;br /&gt;I now find it increasingly hard to use for one simple fact. The changes have made it really hard to run unit tests.&lt;br /&gt;&lt;br /&gt;One of the magical features was that ctrl-F11 would run the last test I ran so I could continue coding, in any source file, and press this vital key combination to see if I had broken anything yet.&lt;br /&gt;&lt;br /&gt;Now, this keystroke, and the action that it is associated with, have been changed in two ways.&lt;br /&gt;&lt;br /&gt;Firstly, if you have to be in the test file to reliably run the last test. It is inconsistent in this regard. Most of the time it just asks "How would you like to run ''? On the server or blah blah blah".&lt;br /&gt;&lt;br /&gt;Secondly, if it does remember the test I want to run, it now also remembers that last time I ran it in the debugger. So each subsequent run promptly stops on a breakpoint.&lt;br /&gt;&lt;br /&gt;This is a flow problem and it is possible that non-test driven developers use the debugger a great deal. I understand, even sympathize, but couldn't Eclipse support both flows? Especially the original, and in my opinion, the far superior. Just run my tests, that's all I ask.&lt;br /&gt;&lt;br /&gt;Now if I could just get NetBeans to stop deleting my "build" directory when it creates a project I could say goodbye to this annoying change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5236327677370239550?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5236327677370239550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5236327677370239550&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5236327677370239550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5236327677370239550'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/10/eclipse-bad-ui-change.html' title='Eclipse, bad UI change'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5971924610615084325</id><published>2008-10-19T21:15:00.004-04:00</published><updated>2008-10-20T08:42:25.487-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><title type='text'>GIT, yes, another source control solution</title><content type='html'>and you thought Subversion was the latest thing. Ha. How old and slow you are.&lt;br /&gt;&lt;br /&gt;You see how cool I can sound when I have just learned something new?&lt;br /&gt;&lt;br /&gt;I have &lt;a href="http://git.or.cz/"&gt;GIT&lt;/a&gt; installed and working under OSX Leopard and it seems pretty cool so far, given that I haven't done anything worth while with it yet.&lt;br /&gt;&lt;br /&gt;First, don't do what I did, which was to goto github, download gitx and expect it to work. Ha, that route is for losers.&lt;br /&gt;&lt;br /&gt;Instead, goto the &lt;a href="http://git.or.cz/"&gt;git &lt;/a&gt;site itself and get the zip.gz file and go from there. Wait, no, don't do that either, only losers waste time compile from source.&lt;br /&gt;&lt;br /&gt;See, how many pit falls I am saving you. This is a great blog.&lt;br /&gt;&lt;br /&gt;So, ignore the links you have seen so far and aim for the Download link. This will not down the file, do not worry about that.&lt;br /&gt;&lt;br /&gt;Amongst the download formats there is an OS X entry to the Google code site. Be patient, you are on the right track.&lt;br /&gt;&lt;br /&gt;There, at the top of the list, is the git-1.6.0.2-intel-leoard.dmg file. Yes, this is the real download that will work. The download for non-losers like you.&lt;br /&gt;&lt;br /&gt;This will give you command line GIT which is probably all you need, if you are a loser. I was a loser for a short time when I finally realized what I was doing. Man oh man these things take time to work out.&lt;br /&gt;&lt;br /&gt;I love NetBeans. I also love Eclipse but its Ruby support blows by comparison so I love NetBeans more. And NetBeans has a GIT plugin. This is for non-losers. It's called nbgit.&lt;br /&gt;&lt;br /&gt;Now remember, losers will try to install nbgit in their NetBeans IDE, and we all know that would be a dumb move. Unless you really love searching through reams of dependency errors, and what the hell is the NetBeans Presentation crappy thing that I don't have anyway.&lt;br /&gt;&lt;br /&gt;Go get NetBeans 6.1 and install that first. Then, as a non-loser, you will be selecting Tools-Plugins-Downloads and selecting the nbgit nbm file that you download earlier.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    git clone git:/reality&lt;br /&gt;    update to life version niner dot niner&lt;br /&gt;    git diff&lt;br /&gt;    See all the good changes that you have made&lt;br /&gt;    git commit&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And here, courtesy of the kind blogger &lt;a href="http://dysinger.net/2007/12/30/installing-git-on-mac-os-x-105-leopard/"&gt;Tim Dysinger&lt;/a&gt;, are some cool git settings that you might want to use.&lt;br /&gt;&lt;br /&gt;Get started with &lt;a href="http://cworth.org/hgbook-git/tour/"&gt;this tutorial&lt;/a&gt;, short and to the point.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5971924610615084325?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5971924610615084325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5971924610615084325&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5971924610615084325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5971924610615084325'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/10/git-yes-aother-source-control-solution.html' title='GIT, yes, another source control solution'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5480646452968155272</id><published>2008-08-12T08:57:00.000-04:00</published><updated>2008-08-12T08:58:16.606-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Thought</title><content type='html'>Life rocks, despite reality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5480646452968155272?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5480646452968155272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5480646452968155272&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5480646452968155272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5480646452968155272'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/08/thought.html' title='Thought'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2243444070004644373</id><published>2008-08-08T17:39:00.003-04:00</published><updated>2008-08-08T17:53:46.301-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Picture Admiration</title><content type='html'>This is a video by someone I admire. I didn't have to watch much of it to recognize that this is a special person. A state thrust upon her by life, though she made the choice of what to do next.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://link.brightcove.com/services/player/bcpid1456296467?bctid=1509866086"&gt;Video 4.4 minutes&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.hilarylister.com/"&gt;Hilary Lister&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2243444070004644373?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2243444070004644373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2243444070004644373&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2243444070004644373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2243444070004644373'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/08/picture-admiration.html' title='Picture Admiration'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1225015689576074702</id><published>2008-07-28T10:37:00.003-04:00</published><updated>2008-07-28T11:08:27.780-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Eclipse 3.4 to NetBeans 6.5 M1</title><content type='html'>It is time to get back into NetBeans. It used to be my primary IDE before Eclipse hit the scene and now with its excellent Ruby and now PHP support it seem appropriate to start re-learning how it works.&lt;br /&gt;&lt;br /&gt;It is certainly faster now and the UI is cleaner than it used to be. Steps in the right direction.&lt;br /&gt;&lt;br /&gt;This is where things went horribly wrong.&lt;br /&gt;&lt;br /&gt;Import an eclipse java project into a netbeans java project. Netbeans decided that I didn't want my "build" directory anymore so replaced it with it's own. How assignign is that.&lt;br /&gt;&lt;br /&gt;So, first hint, do not, import an eclipse project into a netbeans project if you have a build directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1225015689576074702?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1225015689576074702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1225015689576074702&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1225015689576074702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1225015689576074702'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/07/eclipse-34-to-netbeans-65-m1.html' title='Eclipse 3.4 to NetBeans 6.5 M1'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7268865821107916612</id><published>2008-06-23T12:13:00.005-04:00</published><updated>2008-06-29T20:32:01.247-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photrade'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Leaving Photrade Behind</title><content type='html'>I have decided to resign from &lt;a href="http://www.photrade.com"&gt;Photrade&lt;/a&gt;. We both decided that this relationship wasn't a good fit for either one of us.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The Photrade team has grown immensely in the four months I was with them. With the latest improvements in the beta product bringing on new customers by the day, it is clear that Photrade will continue to be a great product and with its enthusiastic and talented team it will surely be a great success.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;My next steps are to take a few days off to go sailing with my wife which is something we have missed while getting the Photrade site up and running. Then back into the software consulting world, which has been really good to me in the past but, this time, as an independent.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So, if anyone needs some software built, drop me a line, I will see if I can fit you in.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://edsumerfieldconsulting.com/"&gt;Ed Sumerfield Consulting, LLC&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7268865821107916612?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7268865821107916612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7268865821107916612&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7268865821107916612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7268865821107916612'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/leaving-photrade-behind.html' title='Leaving Photrade Behind'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3804885784213217685</id><published>2008-06-13T20:06:00.004-04:00</published><updated>2008-06-13T20:15:02.620-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photrade'/><title type='text'>Don't use gmail in production</title><content type='html'>because, one day, you will have too many customers, and generate more emails than the great Google deems appropriate for your company.&lt;pre&gt;550 5.4.5 Daily sending quota exceeded.&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I would have to say that the smtp gmail service isn't reliable anyway with it's two second response times, &lt;pre&gt;421 4.7.0 Temporary System Problem.  Try again later (WS).&lt;/pre&gt; and &lt;pre&gt;550 5.7.0 Mail Sending denied.&lt;/pre&gt; all up in my face.&lt;br /&gt;&lt;br /&gt;Switching to a local &lt;a href="http://www.postfix.org/"&gt;postfix&lt;/a&gt; server tonight. 5 emails/second, no errors. Much nicer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3804885784213217685?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3804885784213217685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3804885784213217685&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3804885784213217685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3804885784213217685'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/dont-use-gmail-in-production.html' title='Don&apos;t use gmail in production'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-656253085604224683</id><published>2008-06-13T10:25:00.004-04:00</published><updated>2008-06-13T11:08:39.479-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>IE Better for Testing HTML</title><content type='html'>Sorry about the inflammatory title. Let me explain.&lt;br /&gt;&lt;pre&gt;  &amp;lt;input type="checkbox" CHECKED"&amp;gt;&lt;/pre&gt;&lt;br /&gt;See the error? Just an extra quote but it fails in IE 7 and works in Firefox and Safari.&lt;br /&gt;&lt;br /&gt;Firefoxs' FireBug plugin represents the checkbox as perfectly formatted dispite the syntax problem. Safaris' developer plugin shows the checked attribute as checked"="" which looks weird but it still works.&lt;br /&gt;&lt;br /&gt;So, do I want to test with a browser that can make crap look good? I think not. I want a strict validator of my rendered code so that I can be sure that it will work consistently in all places.&lt;br /&gt;&lt;br /&gt;The other thing that we break in IE all the time is the missing var in the javascript variable declaration. Firefoxs' and Safaris' javascript interpreter just auto-allocate on first assignment but IE complains of an undefined variable. I think IE wins here as well enforcing the script standard more closely.&lt;br /&gt;&lt;br /&gt;So, while I don't have any decent javascript debugger or DOM inspector, for validating your HTML/JavaScript, it a better solution. Then back to FireBug for the rest of your day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-656253085604224683?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/656253085604224683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=656253085604224683&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/656253085604224683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/656253085604224683'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/ie-better-for-testing-html.html' title='IE Better for Testing HTML'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6827368542666184547</id><published>2008-06-12T15:18:00.002-04:00</published><updated>2008-06-12T15:23:36.871-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Domain Modeling Measure - Alpha Theory</title><content type='html'>If you find yourself passing this or self to things instead of other things you are moving in the right direction.&lt;pre&gt;    public function doSomething()&lt;br /&gt;    {&lt;br /&gt;        return $someDoer-&gt;does($this);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6827368542666184547?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6827368542666184547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6827368542666184547&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6827368542666184547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6827368542666184547'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/domain-modeling-measure-alpha-theory.html' title='Domain Modeling Measure - Alpha Theory'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7548419599742245408</id><published>2008-06-12T13:36:00.003-04:00</published><updated>2008-06-12T15:18:07.107-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photrade'/><title type='text'>Using ShareThis on Photrade</title><content type='html'>A sample post of a &lt;a href="http://www.photrade.com/esumerfd?photo_id=26362"&gt;Photrade&lt;/a&gt; image to my blog using the &lt;a href="http://www.sharethis.com"&gt;Share This&lt;/a&gt; API. &lt;br /&gt;&lt;br /&gt;A Cincinnati local company offering a really nice way for our users to distribute their images. See it at a Photrade site near you soon.&lt;br /&gt;&lt;br /&gt;&lt;map name="phoMap_26362"&gt;&lt;area href="http://www.photrade.com/forwardAd.php?photo_id=26362" shape="rect" coords="114,348,342,373"/&gt;&lt;/map&gt;&lt;a href="http://www.photrade.com/esumerfd?photo_id=26362"&gt;&lt;img src="http://www.photrade.com/photos/personal_26362_430x350_0_0_1_0.jpg" usemap="#phoMap_26362"&gt;&lt;/a&gt;&lt;br /&gt;&lt;em&gt;&lt;a href="http://www.photrade.com/" style="font-size: 12px; color: #3F6BB5; font-weight: bold; font-family: Arial; margin-top: 0; padding-top: 0"&gt;Sell photos on photrade&lt;/a&gt; | &lt;a href="http://www.photrade.comhttp://www.blogger.com/img/gl.link.gif/esumerfd" style="font-size: 12px; color: #3F6BB5; font-weight: bold; font-family: Arial;margin-top: 0; padding-top: 0"&gt;By esumerfd&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Posted using &lt;a href="http://sharethis.com"&gt;ShareThis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7548419599742245408?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7548419599742245408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7548419599742245408&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7548419599742245408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7548419599742245408'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/share.html' title='Using ShareThis on Photrade'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-211305414163228554</id><published>2008-06-10T12:08:00.003-04:00</published><updated>2008-06-10T12:24:19.090-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photrade'/><title type='text'>Photrade Release Party</title><content type='html'>The Photrade site is improving by the day. With new features being added, tested and released in a daily release cycle, it is really exciting to see it grow.&lt;br /&gt;&lt;br /&gt;We were written up on &lt;a href="http://mashable.com/2008/06/09/photrade/"&gt;Mashable&lt;/a&gt; last night which ended up causing our CPU's to blink, pause, and go back to sleep. It increased our load around 500% but we have loads of capacity to spare. You have to love fast machines, I get goose bumps just thinking about it.&lt;br /&gt;&lt;br /&gt;Checkout the &lt;a href="http://upcoming.yahoo.com/event/779372/?ps=7"&gt;launch party&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-211305414163228554?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/211305414163228554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=211305414163228554&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/211305414163228554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/211305414163228554'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/06/photrade-release-party.html' title='Photrade Release Party'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2249325521177839282</id><published>2008-05-16T15:19:00.008-04:00</published><updated>2008-05-30T09:40:22.521-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP Reflections In Time</title><content type='html'>Reflection in PHP is a little clunky and I say that with the greatest of compassion.&lt;br /&gt;&lt;br /&gt;First of all we have the standard function interface to all that is good, call_user_func, call_user_method, func_get_args, get_defined_functions and so on.&lt;br /&gt;&lt;br /&gt;So you can imagine a call_user_func to start with and then when classes came in they added call_user_method that takes the instance as well (surmising the history, I don't have any facts).&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   class Fred&lt;br /&gt;   {&lt;br /&gt;       public function someMethod()&lt;br /&gt;       {&lt;br /&gt;           echo "Hello World\n";&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   $fred = new Fred();&lt;br /&gt;   $fred-&gt;someMethod();&lt;br /&gt;&lt;br /&gt;   // OR&lt;br /&gt;&lt;br /&gt;   call_user_method("someMethod", $fred);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;However, this method is deprecated, in preference to old call_user_function with different parameters.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   call_user_func(array($fred, "someMethod"));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then there are the new class oriented evolution with ReflectionClass, ReflectionMethod,  ReflectionProperty and so on.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   $method = new ReflectionMethod("Fred", "someMethod");&lt;br /&gt;   $method-&gt;invoke($fred);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;It doesn't seem to bad but there are new problems. This fails because "someMethod" is private, even though the call is from the same class. There doesn't appear to be a way around this. You can not call private methods with the new Reflection classes.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;   class Fred&lt;br /&gt;   {&lt;br /&gt;       private function someMethod()&lt;br /&gt;       {&lt;br /&gt;           echo "Hello World\n";&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       public function testInvoke()&lt;br /&gt;       {&lt;br /&gt;           $method = new ReflectionMethod(__CLASS__, "someMethod");&lt;br /&gt;           $method-&gt;invoke($this);&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   $fred = new Fred();&lt;br /&gt;   $fred-&gt;testInvoke();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This produces this error message:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Fatal error: Uncaught exception 'ReflectionException' with message 'Trying to invoke private method Fred::someMethod() from scope ReflectionMethod'&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;However, you can switch back to the old way of doing it like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    class Fred&lt;br /&gt;   {&lt;br /&gt;       private function someMethod()&lt;br /&gt;       {&lt;br /&gt;           echo "Hello World\n";&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       public function testInvoke()&lt;br /&gt;       {&lt;br /&gt;           call_user_func(array($this, "someMethod"));&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   $fred = new Fred();&lt;br /&gt;   $fred-&gt;testInvoke();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The same situation exists with the two forms of property access:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    $prop = new ReflectionProperty("Fred", "property");&lt;br /&gt;   $prop-&gt;getValue($fred);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;    $fred-&gt;$propertyName&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This mix of old an new techniques is how PHP is today and there is not much we can do but to wrap the variations in our own classes so that we can stay as portable as possible across future versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2249325521177839282?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2249325521177839282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2249325521177839282&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2249325521177839282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2249325521177839282'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/05/php-reflections-in-time.html' title='PHP Reflections In Time'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3389203419300380043</id><published>2008-05-16T09:31:00.003-04:00</published><updated>2008-05-16T10:34:54.149-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP, First Impressions</title><content type='html'>It has been 3 months now since I started learning PHP, I have spent lots of time fixing an existing site and reading over the good and bad of the available open source PHP projects.&lt;br /&gt;&lt;br /&gt;I would describe PHP as a function based language with object oriented dreams. PHP lives in the between world where functions rule and programmers try to work out how to make use of its new OO features.&lt;br /&gt;&lt;br /&gt;These OO features are new and many are missing key functionality so this has to be looked at as the evolution of a language that isn't quite there yet. It has the functions to get anything done, it doesn't have the class libraries to get much done.&lt;br /&gt;&lt;br /&gt;I am not saying you shouldn't use PHP. This is a versatile language that can be made to describe some advanced language constructs.&lt;br /&gt;&lt;br /&gt;It is widely regarded as a slow language that scales well. Not an oxymoron when you consider performance a mixture of response time and throughput.&lt;br /&gt;&lt;br /&gt;One thing to get used to with PHP is typing. Everything you want to do will take more characters than java, c#  and especially ruby. Every method is a minimum of 19, every property reference roles in at 8 and I can assure you, we programmers do that a lot.&lt;br /&gt;&lt;br /&gt;I spend my days developing an class model to support my web project. Some classes support the business functions I need and others just wrap the plethora of php function calls that perform the low level work I need.&lt;br /&gt;&lt;br /&gt;Architecturally PHP offers some interesting problems. It relies a great deal of the tuning of the environment that it runs in but from a code design perspective you have to look at the transaction path as a primary and inevitable cost. In java you might start with a simple transaction path through your product layers with the realization that you can cache strategic parts as you advance your performance footprint.&lt;br /&gt;&lt;br /&gt;In PHP there is no "cross transaction" static. So every PHP file is parsed and executed for every request. Now PHP does this pretty fast but the more you add into the transaction stream  the slower things will go.&lt;br /&gt;&lt;br /&gt;Performance is approached at the environment and code optimization level. You tune apache and add in PHP JITs to make the code run faster but you can't do much to dynamically improve transaction path across requests.&lt;br /&gt;&lt;br /&gt;The local user group, &lt;a href="http://oinkpug.ning.com"&gt;OINKPUG&lt;/a&gt;, is an excellent resource full of great PHP programmers always ready to help.&lt;br /&gt;&lt;br /&gt;All in all, I am enjoying PHP and look forward to continuing to twist to my will.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3389203419300380043?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3389203419300380043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3389203419300380043&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3389203419300380043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3389203419300380043'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/05/php-first-impressions.html' title='PHP, First Impressions'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4465248654171764976</id><published>2008-03-10T14:57:00.004-04:00</published><updated>2008-06-23T12:12:45.302-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='photrade'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Photrade.com</title><content type='html'>and life moves on.&lt;br /&gt;&lt;br /&gt;Twenty five years playing with computers, ten years of consulting, two point one years in startups. It's time for another change.&lt;br /&gt;&lt;br /&gt;March began my time with &lt;a href="http://www.photrade.com"&gt;Photrade.com&lt;/a&gt;, a small startup in Cincinnati with a lot of promise. They are a great team of people and it is my pleasure to join them.&lt;br /&gt;&lt;br /&gt;We will be building a solution in PHP, which is new for me, but has already proved itself in many other solutions. So, expect my blogging topics to change to PHP shortly, though I will probably still keep complaining about my Mac for a while.&lt;br /&gt;&lt;br /&gt;If you would like to help mold the company you can start by completing this ten minute survey.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.surveymonkey.com/s.aspx?sm=89zRHgec8ncfdTftfQ5Dkg_3d_3d"&gt;Survey&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4465248654171764976?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4465248654171764976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4465248654171764976&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4465248654171764976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4465248654171764976'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/03/photradecom.html' title='Photrade.com'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8409276538362224624</id><published>2008-03-10T14:33:00.005-04:00</published><updated>2008-03-10T14:57:19.894-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Site Help Advancement</title><content type='html'>I am browsing the site of a hosting service checking on prices and a little window pops up with a simple question, "Do you want help with this site?".&lt;br /&gt;&lt;br /&gt;This is not an ad but a means to draw their customers into IM conversations. I have to say it worked very well. A quick chat and I had all the info I needed. Saved lots of reading spec sheets etc.&lt;br /&gt;&lt;br /&gt;At the end it asked me if I wanted to send the chat session to an email address. A useful and unobtrusive way to collect email addresses. Nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8409276538362224624?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8409276538362224624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8409276538362224624&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8409276538362224624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8409276538362224624'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/03/site-help-advancement.html' title='Site Help Advancement'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8864224061088804742</id><published>2008-02-27T15:33:00.003-05:00</published><updated>2008-02-27T15:37:43.674-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Concurring</title><content type='html'>Saying it with pictures, Jim, speaks empires.&lt;br /&gt;&lt;br /&gt;    &lt;a href="http://onestepback.org/index.cgi/Tech/Programming/DarthTest.red"&gt;On my wall ...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8864224061088804742?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8864224061088804742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8864224061088804742&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8864224061088804742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8864224061088804742'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/02/concurring.html' title='Concurring'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5145795928059142296</id><published>2008-02-11T15:50:00.000-05:00</published><updated>2008-02-11T16:25:43.075-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>DRY as in Dry Bugs</title><content type='html'>We talk of DRY code as in Don't Repeat Yourself. Instead, we should talk in terms of DRY bugs.&lt;br /&gt;&lt;br /&gt;For every piece of code you copy you are also copying a number of bugs. Depending on your propensity for adding bugs to you code you may be copying lots of bugs or just the occasional one. In either case, bugs are really expensive, so stop it.&lt;br /&gt;&lt;br /&gt;You may want to say, "It's faster to copy working code than to refactor it into a common module". We have heard it all before and you are deluded. Besides, DRY bugs are easier to pin and mount&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Do not duplicate your bugs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R7C7s4P2I3I/AAAAAAAAAL0/r1V6xyHIJlY/s1600-h/dried_bug.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_IWJV2VJlogg/R7C7s4P2I3I/AAAAAAAAAL0/r1V6xyHIJlY/s320/dried_bug.jpg" alt="" id="BLOGGER_PHOTO_ID_5165835152281445234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5145795928059142296?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5145795928059142296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5145795928059142296&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5145795928059142296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5145795928059142296'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/02/dry-as-in-dry-bugs.html' title='DRY as in Dry Bugs'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R7C7s4P2I3I/AAAAAAAAAL0/r1V6xyHIJlY/s72-c/dried_bug.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7489010922915382279</id><published>2008-02-06T08:18:00.001-05:00</published><updated>2008-02-06T09:33:24.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Life's Filaments</title><content type='html'>&lt;div style="text-align: center;"&gt;The filaments&lt;br /&gt;of many lives&lt;br /&gt;pass through me.&lt;br /&gt;&lt;br /&gt;Filament collisions&lt;br /&gt;held lovingly&lt;br /&gt;in my palm.&lt;br /&gt;&lt;br /&gt;For filaments sake,&lt;br /&gt;backup your life.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R6nELg_KzGI/AAAAAAAAALs/El2G6trpTgg/s1600-h/palm_in_palm.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_IWJV2VJlogg/R6nELg_KzGI/AAAAAAAAALs/El2G6trpTgg/s320/palm_in_palm.jpg" alt="" id="BLOGGER_PHOTO_ID_5163874149869472866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7489010922915382279?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7489010922915382279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7489010922915382279&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7489010922915382279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7489010922915382279'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/02/lifes-filaments.html' title='Life&apos;s Filaments'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R6nELg_KzGI/AAAAAAAAALs/El2G6trpTgg/s72-c/palm_in_palm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6423839063125250096</id><published>2008-02-04T08:29:00.000-05:00</published><updated>2008-02-04T08:54:28.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Fear</title><content type='html'>&lt;div style="text-align: center;"&gt;Fear is an emotion,&lt;br /&gt;not necessarily a disability.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.photrade.com/esumerfd?photo_id=20469&amp;adsDelay"&gt;&lt;img src="http://www.photrade.com/photos/personal_20469_430x350_0.jpg?pip" border=0&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6423839063125250096?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6423839063125250096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6423839063125250096&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6423839063125250096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6423839063125250096'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/02/fear.html' title='Fear'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6549709957973604674</id><published>2008-02-01T07:50:00.000-05:00</published><updated>2008-02-01T13:32:45.880-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>A Fathers Pride</title><content type='html'>As I pondered a question and worried about an outcome my son gently said, "the greatest rewards go to those who risk, you have nothing to loose and a family to support you, so what are you whining about". &lt;br /&gt;&lt;br /&gt;It is my greatest honor to watch my kids grow up into fabulous adults.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6549709957973604674?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6549709957973604674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6549709957973604674&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6549709957973604674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6549709957973604674'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/02/fathers-pride.html' title='A Fathers Pride'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6142131757207569327</id><published>2008-01-28T10:35:00.000-05:00</published><updated>2008-01-28T10:48:08.773-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>VmWare Fusion PinPoint Compatibility</title><content type='html'>I last blocked about a comparison between &lt;a href="http://esumerfield.blogspot.com/2008/01/mac-windows-virtualization-parallels-vs.html"&gt;VmWare Fusion and Parallels&lt;/a&gt; but concluded that the click problem prevented me from using VmWare. Well I have found a solution to that problem.&lt;br /&gt;&lt;br /&gt;Specifically, I am using a product called &lt;a href="http://esumerfield.blogspot.com/2007/12/new-machine-utilities.html"&gt;PinPoint&lt;/a&gt; to improve the visibility of my cursor and this appears to be causing focus problems in the executing virtual machine.&lt;br /&gt;&lt;br /&gt;To show you I have prepared my first mac based screencast using a tool called &lt;a href="http://www.araelium.com/screenflick/"&gt;ScreenFlick&lt;/a&gt;. This tool does most of the things that I wanted, with screen size and visibility control, audio recording and mouse and keystroke highlighing. It did hang on me a few times which seemed to be related to large recording sizes.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt; &lt;param name="movie" value="http://www.youtube.com/v/yC678cxTKcc"&gt;  &lt;embed src="http://www.youtube.com/v/yC678cxTKcc" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So, with the click problem removed I am going to start working with VmWare Fusion again to see if it beats Parallels.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6142131757207569327?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6142131757207569327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6142131757207569327&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6142131757207569327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6142131757207569327'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/vmware-fusion-pinpoint-compatibility.html' title='VmWare Fusion PinPoint Compatibility'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3202267609807969518</id><published>2008-01-21T11:36:00.000-05:00</published><updated>2008-01-21T12:28:54.681-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>Mac Windows Virtualization - Parallels vs VmWare</title><content type='html'>Just another of the many review out there but this explain why I can not use the Vmware Fusion product.&lt;br /&gt;&lt;br /&gt;Both have the same $79 price so which should you buy. I bought Parallels with the machine because of the hype and a couple of recommendations from friends but with all the problems I have been having I though it worth a 30 trial of VmWare Fusion.&lt;br /&gt;&lt;br /&gt;This is my experience.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Parallels&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Installation was a problem because the CD contained a version that didn't work on Leopard. A download from the site fixed the problem.&lt;br /&gt;&lt;br /&gt;Repeated crashes for various reasons documented in previous posts.&lt;br /&gt;&lt;br /&gt;Ideally, I could work in the windows environment in full screen mode with the same keystrokes that I am used to in Windows. There is no way to do this in Parallels.&lt;br /&gt;&lt;br /&gt;When in full screen mode, Parallels hides its menu bar and allows you to get it back by pressing the "ctrl-option" keys. This kind of "mode" switching makes it less likely to accidentally bring up the mac menu.&lt;br /&gt;&lt;br /&gt;I wanted to play &lt;a href="http://www.virtualskipper-game.com/en/"&gt;Virtual Skipper 5&lt;/a&gt;, a nice, graphic intensive game that allows me to continue sailing during he winter. The trial version of this game uses DirectX so initially it failed because my Windows Vista installation was not up to date. Once DirectX was upgraded it appeared to run correctly though in a small window that I couldn't full screen but having never played this game on a native windows machine I can't say if this is abnormal or not.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Vmware Fusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Installation was perfect but I downloaded the trial copy from the web so we can't compare this with the difficult Parallels installation.&lt;br /&gt;&lt;br /&gt;VmWare has not crashed on me but I haven't used it so much so this may be an unfair comparison.&lt;br /&gt;&lt;br /&gt;VmWare has an option that allows me to ignore mac keystrokes. While very promising this didn't seem to work very well. Infact, when in full screen Vista, I tried  ctrl-left to switch spaces and was moved to a mac space. However, the mac keystrokes were still disabled so I was not able to do anything. Fortunately, the mouse allowed me to select the other space and turn off this feature.&lt;br /&gt;&lt;br /&gt;When in full screen mode, VmWare Fusion hides its menu bar and allows you to get it back by moving the mouse to the top of the screen. This is a little annoying when you are working in windows and accidentally get the mac menu. I prefer the Parallels solution.&lt;br /&gt;&lt;br /&gt;The Virtual Skipper 5 test was not as successful despite the fact that VmWare Fusion boasts about support for DirectX. I still had to install the DirectX upgrade to Vista as expected but when the game started it complained that it would not run inside a virtual machine. Now presumably this is the games fault for doing this check and only doing it successfully in VmWare but I have to conclude that, for this game, Parallels was the better virtual machine.&lt;br /&gt;&lt;br /&gt;There is a serious two click problem in VmWare Fusion. This is not a double click. It is hard to pin down the types of objects that require this. So, for example, browser links only require one click however icons on the desktop and menu options seem to require two. It appears as though the first click focuses on the object then the second actually selects it. This makes it impossible to use. I couldn't find any reference to the problem anywhere.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compared to the two click problem with VmWare all the other issues are moot. This problem makes VmWare Fusion impossible to use.&lt;br /&gt;&lt;br /&gt;So, despite the nasty crashes, Parallels remains the vm of choice for the mac.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3202267609807969518?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3202267609807969518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3202267609807969518&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3202267609807969518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3202267609807969518'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/mac-windows-virtualization-parallels-vs.html' title='Mac Windows Virtualization - Parallels vs VmWare'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2638142473523972119</id><published>2008-01-21T11:03:00.000-05:00</published><updated>2008-01-21T11:21:00.160-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Adium Keystroke Options</title><content type='html'>We have already &lt;a href="http://esumerfield.blogspot.com/2008/01/new-machine-default-button-shenanigans.html"&gt;established&lt;/a&gt; that the Adium end key is a &lt;a href="http://esumerfield.blogspot.com/2008/01/new-machine-default-button-shenanigans_09.html"&gt;problem&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Well, yesterday I find that the Adium developers have implemented a solution but as an option that allows me to select the key to use to "Switch tabs" which, unfortunately defaults to the commonly used command-right arrow keystroke. I switched it to the shift-command-right arrow making Adium behavor like a well behaved mac application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R5TGMpVApTI/AAAAAAAAALk/yvdei4CivK0/s1600-h/adium_end_key_option.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R5TGMpVApTI/AAAAAAAAALk/yvdei4CivK0/s320/adium_end_key_option.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5157965393800766770" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2638142473523972119?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2638142473523972119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2638142473523972119&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2638142473523972119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2638142473523972119'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-adium-keystroke-options.html' title='New Machine - Adium Keystroke Options'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_IWJV2VJlogg/R5TGMpVApTI/AAAAAAAAALk/yvdei4CivK0/s72-c/adium_end_key_option.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-9157308374604702926</id><published>2008-01-21T10:55:00.000-05:00</published><updated>2008-01-21T11:03:13.469-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - User Account Menu Item</title><content type='html'>As you login to your Mac the menu bar contains a nice little silhouette of a human bust to represent my user information. Shortly, after that, this is replaced by my name. Do you think that telling a user their name might be a tad overly informative?&lt;br /&gt;&lt;br /&gt;My primary complaint isn't that I am insulted by the idea that I need to be reminded but that it uses valuable space in an icon cluttered zone of the screen.&lt;br /&gt;&lt;br /&gt;Is there a way to switch this menu option back to the simple silhouetted bust?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-9157308374604702926?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/9157308374604702926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=9157308374604702926&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9157308374604702926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9157308374604702926'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-user-account-menu-item.html' title='New Machine - User Account Menu Item'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-207460286960636624</id><published>2008-01-18T15:45:00.000-05:00</published><updated>2008-01-18T16:32:35.717-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Scrum Certified - Ready to rock</title><content type='html'>A group of us just complete the two day Scrum Certification class so I can add CSM after my name now. It actually doesn't feel any different from before the class and customers would refuse to use Agile to manage their projects.&lt;br /&gt;&lt;br /&gt;It was a good class, taught by &lt;a href="http://www.winnowmanagement.com"&gt;Peter Borsella&lt;/a&gt;, it covered all the usual parts of Scrum in good detail. There was enough time to talk about the Agile projects we have worked over the years and get feedback.&lt;br /&gt;&lt;br /&gt;Refresher or not it is worth while remembering why we keep fighting this Agile battle. Renews your passion for doing it right.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R5EawJVApSI/AAAAAAAAALc/U1cSlBwF9IA/s1600-h/scrum_class.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R5EawJVApSI/AAAAAAAAALc/U1cSlBwF9IA/s320/scrum_class.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156932462756013346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Red splotches to protect the innocent and my liability. Feel free to contact me with authorization to show your picture and I will un-red-spotch you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-207460286960636624?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/207460286960636624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=207460286960636624&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/207460286960636624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/207460286960636624'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/scrum-certified-ready-to-rock.html' title='Scrum Certified - Ready to rock'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R5EawJVApSI/AAAAAAAAALc/U1cSlBwF9IA/s72-c/scrum_class.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-378709435691460016</id><published>2008-01-18T07:49:00.000-05:00</published><updated>2008-01-18T12:38:55.692-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Finder Problems Continued</title><content type='html'>The mac Finder is just astonishingly bad, and, I hear, the Leopard version I am using is far superior to the Tiger version. What an atrocious experience that must have been.&lt;br /&gt;&lt;br /&gt;I have made some comments on this &lt;a href="http://esumerfield.blogspot.com/2007/12/new-machine-finder-problems.html"&gt;window of woes&lt;/a&gt; already but there appears to be more to say.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Folder Creation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It turns out that it is not an easy process to create a folder. Perhaps one of the most fundamental of features is scattered and inconsistent, but let me show you.&lt;br /&gt;&lt;br /&gt;We have to look at this problem from each View because they are all different. We have 4 possible views, Icons, List, Columns and the new Cover Flow. Windows Explorer only supports Icons and List equivalents but it does it in a consistent manner. You decide which is important in a UI but if you decide that lots of inconsistent features are better then you are wrong.&lt;br /&gt;&lt;br /&gt;Icon view shows large images with file names below. Of all the views this view seems to remain consistent supporting the right-click "New Folder" and the command-shift-n option to create a new folder.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R5CtOJVApLI/AAAAAAAAAKk/9LE0uCSOWPM/s1600-h/new_folder_icon_view.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R5CtOJVApLI/AAAAAAAAAKk/9LE0uCSOWPM/s320/new_folder_icon_view.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156812031873033394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;List view represents the folders in tree form with the details of each folder/file shown to the right. The right-click "New Folder" and command-shift-n both create a new folder in the current directory. The problem arises when you consider that the tree folders allow you to see and select a number of different locations in the hierarchy, however, you can not create folders at the different levels. The right-click on a sub-folder doesn't even contain the option. You have to navigate down a level to create the folder. It's like they replicated the Icon views features in a tree without considering what improvements the tree might offer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R5CtA5VApKI/AAAAAAAAAKc/GefUmq7W5jM/s1600-h/new_folder_list_view.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R5CtA5VApKI/AAAAAAAAAKc/GefUmq7W5jM/s320/new_folder_list_view.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156811804239766690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I must admit that you might be able to find some twisted logic to conclude that each view allows you to create a new folder in the "current directory" which in the list view is the top level folder. However, this conclusion would be wrong because it would mean that you are a unix developer and have a brain limited to thinking in terms of current directory and changing current directory. This is a UI we are talking about here, you see it, you click it, you interact with it. Simple. Consistent.&lt;br /&gt;&lt;br /&gt;Let's look at Columns view. This changes things a little giving you lots of options since it shows lots of "current directories" at the same time. So what does this image  tell you is going to happen.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R5C425VApOI/AAAAAAAAAK8/VHKpCYG3GZg/s1600-h/new_folder_columns_view.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R5C425VApOI/AAAAAAAAAK8/VHKpCYG3GZg/s320/new_folder_columns_view.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156824826580608226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you answered "create a folder under untitled folder 2" then you would be wrong since folders can only be created in the current directory. However the behavior is consistent with the a intent of my UI action. I actually right clicked on the white background indicating that I want to create a folder in that directory. What is bad about this is that the folder remains selected retaining the visual cue that I am working with that folder. Since this is not the case this is a poor UI feedback problem. Windows Explorer explicitly un-selects the selected folder when the background is left or right clicked since it is a good user interface offering quality feedback.&lt;br /&gt;&lt;br /&gt;Cover Flow is the new view introduced in Leopard and offers a nice representation of files in picture form. It is a great way to scan through images. Since this is new it appears to be new code because they have fixed the selected folder problem, and introducing the new problems that I mentioned in the previous post on the Finder.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R5C3xJVApNI/AAAAAAAAAK0/bpK5ihhwUD4/s1600-h/new_folder_coverflow_view.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R5C3xJVApNI/AAAAAAAAAK0/bpK5ihhwUD4/s320/new_folder_coverflow_view.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156823628284732626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cover Flow behaves in a similar manner to List view, you can see the folders but you can use them to create new folders. One might say, consistently bad.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Folder Movement&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How to move a file/folder from one place to another. Not so simple. There are a few nice mousing features&lt;br /&gt;&lt;blockquote&gt;Drag folder to move it&lt;br /&gt;Drag folder with options key pressed to copy it&lt;/blockquote&gt;&lt;br /&gt;These are consistent across the views, however, as we have come to learn with the mac, the keystroke support is somewhat disabled. The glaring omission is the lack of the command-x to cut a file. You can command-c to copy it and command-p to paste it in another location. There is even an option for the operation in the Finders' Edit menu but it is always disabled.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R5C9U5VApPI/AAAAAAAAALE/fXGW993dWqg/s1600-h/move_folder_no_cut.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R5C9U5VApPI/AAAAAAAAALE/fXGW993dWqg/s320/move_folder_no_cut.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156829740023194866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This prevents me doing simple operations like cutting a file from the desktop, navigating somewhere, and pasting it into some other folder. I actually have to copy it and then navigate back to the original location and delete it. This seems to me to be a major problem. I download files to the desktop and want to move them to a downloads folder when I am finished with them. &lt;br /&gt;&lt;br /&gt;Fortunately, QuickSilver solves this problem for me with, command-g to select the file in QuickSilver, so that I can select the "Move To" action and the "Downloads" folder. This is about 7 keystrokes but it much simpler than copy, paste, navigate back and delete.&lt;br /&gt;&lt;br /&gt;Now there is a way to do this with the mouse but it is hideous. Drag the file, hover over the next folder and it will open in a new window after a half second or so, keep dragging to hover over the next folder in the path, wait a little more for the new folder to open in another new window, yes I now have 3 windows open, keep going because JBoss paths are long and I need it way down there, oh, and this sentence is really helping illustrate what a stupid feature this is, so keep dragging, and waiting, until you get to the folder you want, then drop. The source windows and the final target window remain open and the intervening windows close. What a horrendous process.&lt;br /&gt;&lt;br /&gt;To Windows Explorer credit, you can not do this. Windows explorer has a cut paste feature. Ooooo aaaaa UI candy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Long filenames&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A simple problem of visibility. I create an icon on the desktop that has a long name and it will not show me the name. In Windows, really long names are truncated as well but when the icon is selected the name is shown. Mac just hides it forcing me to command-i to get the information about that folder and even then I have to resize the window because my filename is to wide. This makes working with long filenames on the desktop a problem. And yes, my photo images have long names, so do my podcast downloads, and I hate this problem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R5DjjJVApQI/AAAAAAAAALM/J2Tg4O4t6C0/s1600-h/long_filenames.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R5DjjJVApQI/AAAAAAAAALM/J2Tg4O4t6C0/s320/long_filenames.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5156871766278186242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This file name is "this is a folder with a readly long filename" but I guess mac doesn't care.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Change View Consistency&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you change view in the Finder the location on the disk that you are looking at changes. This makes it hard to look at the same thing in different formats. There are two flavors to this.&lt;br /&gt;&lt;br /&gt;Firstly the limited current directory mindset. This is the most pronounced in List or Cover Flow views. Select a folder in the view and press command-3 for example but any other view will demonstrate the problem. The new view is centered on the current directory which is not the directory that you just spent time navigating to in the list view. &lt;br /&gt;&lt;br /&gt;The use case is this. Say I want to scan through some images in Cover Flow but when I open my Finder it is in List view. If I started navigating down the directories, opening this and that directory, navigating to the images directory and when I find it. I press command-4 for Cover Flow and low and behold all my navigation was for naught. I am relocated back at the top of the tree.&lt;br /&gt;&lt;br /&gt;Some might say that I should select my view before I navigate, and I would say they are excuse making knuckle heads. The point of a UI is to be intuitive, not to force me to work in a certain way to get around how crappy it is.&lt;br /&gt;&lt;br /&gt;Secondly the new window completely ignores the current directory of the first window. So, navigate to a directory, or not it doesn't matter, it's going to ignore you anyway. Then press command-n to open a new window. This new window will be located at your home directory so, if you are working in a project folder and want to move some things around then you will have to re-navigate back to that project folder.&lt;br /&gt;&lt;br /&gt;And yes, you didn't want to hear it, but, Windows Explorer ctrl-n opens a new window at the selected folder. Now this is a nice user interface. They must have put lots of work into that. Really nice.&lt;br /&gt;&lt;br /&gt;To do this with finder you have to use the "Open" metaphor instead. Right click open or command-o will open a new window at the selected folder. So, all it not lost.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Navigating Up&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am not going to say much about this because it is so crappy. I want to move up one directory. I press command-up arrow and a new window opens. I didn't want a new window just a different picture of the directory structure.&lt;br /&gt;&lt;br /&gt;This doesn't occur in Columns View. If it wasn't for Columns View, the Finder would be practically useless.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;URL Context Options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have categorized this as a Finder problem because when I quit the finder the desktop icons disappear. However, that may have nothing to do with it.&lt;br /&gt;&lt;br /&gt;If I drag my browser address bar to the desktop it becomes a .webloc file. I can double click and open the page in a browser. However, I can not copy the url of that site to the clipboard for pasting into emails or blog posts etc. I can not even open the information window on that file to get the URL. Window manages urls as files in a similar way to mac but the file type is supported with copy operations as well as lots of drag and drop opportunities. A url file acts like a url as it shoul in a good UI.&lt;br /&gt;&lt;br /&gt;I am not sure what this would take to achieve. The file is just a little XML file with the URL in it but presumably there needs to be some OS extension to handle actions that can be performed on a file. Wait, stop right there. My inner developer is creeping out.&lt;br /&gt;&lt;br /&gt;The mac sucks at handling URL files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-378709435691460016?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/378709435691460016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=378709435691460016&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/378709435691460016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/378709435691460016'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-finder-problems-continued.html' title='New Machine - Finder Problems Continued'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R5CtOJVApLI/AAAAAAAAAKk/9LE0uCSOWPM/s72-c/new_folder_icon_view.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4194723506332746804</id><published>2008-01-16T14:57:00.000-05:00</published><updated>2008-01-16T15:14:50.372-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>ClearCase Depression Again</title><content type='html'>For such a great source control system this thing can certainly get a person down. Biggest road block from Clear Case is the checkout requirement. It doesn't sound too hard but when you consider that you can not refactor rename your code you start to get an inkling of how serious this is. This could be a problem with the Eclipse ClearCase plug-in of coarse.&lt;br /&gt;&lt;br /&gt;It needs to do a rename first which doesn't require a file checkout, and then checkout the file to do change the class name. Then do the checkout for all the dependent classes and make the updates to them.&lt;br /&gt;&lt;br /&gt;Well, it doesn't do this, so I have to fight the urge to leave the name alone. This is really hard because we all know that the manual rename of a commonly used class is going to take some time and leaving as the wrong name of a class is very bad.&lt;br /&gt;&lt;br /&gt;The only option is to spiral back into a depression and wait for hope to arrive.&lt;br /&gt;&lt;br /&gt;To all those coding in Ruby or javascript et al, with no refactoring IDE, you are like titans to me. &lt;br /&gt;&lt;br /&gt;Ok, enough whining. Go depression.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4194723506332746804?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4194723506332746804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4194723506332746804&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4194723506332746804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4194723506332746804'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/clearcase-depression-again.html' title='ClearCase Depression Again'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8570380670411357891</id><published>2008-01-10T17:16:00.000-05:00</published><updated>2008-01-10T17:35:27.825-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Triple Click or Two Slow Clicks</title><content type='html'>I know I said that I wouldn't waste my time spouting about how great this machine was because everyone else does that. I have slipped a couple of nice things in but only when balanced by bad things. Well here it is, this is a good thing, all on it's own.&lt;br /&gt;&lt;br /&gt;This is the simplest little thing but it is really nice. How many times do you have to click in your address bar before you can edit the URL?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Mac == one&lt;br /&gt;Windows == two&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The UI philosophies are completely different. Is the normal case to replace the entire URL or to edit and existing URL. It seems like a simple solution and I can't argue with Microsoft's solution that usually we need to enter completely new URLs so we should highlight the whole thing on the first click.&lt;br /&gt;&lt;br /&gt;There is another practical consideration here. On Mac you can triple click to highlight the whole URL. So, I would ask, which is easier, triple clicking or making two slow clicks. It is clear to me, the slow clicking is for the birds, I have web pages to download people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8570380670411357891?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8570380670411357891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8570380670411357891&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8570380670411357891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8570380670411357891'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-triple-click-or-two-slow.html' title='New Machine - Triple Click or Two Slow Clicks'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8188950927978140370</id><published>2008-01-10T09:17:00.000-05:00</published><updated>2008-01-10T10:35:52.136-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Parallels Hang</title><content type='html'>We keep complaining about Parallels but we keep using it. What is our problem.&lt;br /&gt;&lt;br /&gt;A Parallels Vista process ran beautifully yesterday, it was shutdown, the machine slept the night, and today it failed to respond. Would not quit, would not force quit, no response to "kill -9", nothing.&lt;br /&gt;&lt;br /&gt;After much wastage of time, and hope, I start the shutdown and restart of a machine. The dialogs get amusing while OSX decides that it really doesn't have control over the machine either.&lt;br /&gt;&lt;br /&gt;After the ctrl-options-command eject keystroke to shutdown the machine, I wait some time before this little gem.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R4Y3ZpVApFI/AAAAAAAAAJg/W4wGmzTefFY/s1600-h/loggout-timedout.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R4Y3ZpVApFI/AAAAAAAAAJg/W4wGmzTefFY/s320/loggout-timedout.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5153867737302344786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The image doesn't show it but the cursor, hanging over the continue button is displaying the wait cursor so it can not be clicked. After some time OSX gets aggressive.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R4Y4DJVApGI/AAAAAAAAAJo/Y-__9x1c7vc/s1600-h/force-quit.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R4Y4DJVApGI/AAAAAAAAAJo/Y-__9x1c7vc/s320/force-quit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5153868450266915938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, I can not press the "Force Quit" button either. Of coarse it wouldn't have worked anyway, I tried that already.&lt;br /&gt;&lt;br /&gt;I re-initiate the shutdown request.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R4Y5R5VApII/AAAAAAAAAJ0/3chK0RpwprQ/s1600-h/shutdown-in-60.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R4Y5R5VApII/AAAAAAAAAJ0/3chK0RpwprQ/s320/shutdown-in-60.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5153869803181614210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice the current time and the promise the dialog is making to me. See, you need to trust you computer so these dialogs are like little contracts, just waiting to be enforced by the all knowing OS. Breath, OSX has it under control.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R4Y5r5VApJI/AAAAAAAAAJ8/OzDuMowf9y0/s1600-h/shutdown-in-57.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R4Y5r5VApJI/AAAAAAAAAJ8/OzDuMowf9y0/s320/shutdown-in-57.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5153870249858213010" /&gt;&lt;/a&gt;&lt;br /&gt;OSX is even trying to bend time for me. We traverse 3 seconds in 2 minutes, nice.&lt;br /&gt;&lt;br /&gt;In the two months of ownership, this is the third time I am having to hold that power button down until all my problems go away. The common theme being Parallels. Perhaps its time to try vmware.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8188950927978140370?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8188950927978140370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8188950927978140370&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8188950927978140370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8188950927978140370'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-parallels-hang.html' title='New Machine - Parallels Hang'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R4Y3ZpVApFI/AAAAAAAAAJg/W4wGmzTefFY/s72-c/loggout-timedout.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3519977132218488403</id><published>2008-01-09T09:26:00.000-05:00</published><updated>2008-01-09T09:43:22.746-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Default Button Shenanigans - Correction</title><content type='html'>I have to apologies for complaining about something I know nothing about. I indicated that the Adium IM end key was reassigned to a different feature, command-right arrow switches IM windows much like the command-grave keystroke.&lt;br /&gt;&lt;br /&gt;While this is correct, the Adium IM end key is the func-right arrow as opposed to the command-right arrow in other applications like the blogger text box I am typing this into. So, while I have to retract my innacuracy it does offer the opportunity to whine about another mac UI inconsistency.&lt;br /&gt;&lt;br /&gt;When should I be using the func-right arrow over the command-right arrow. I would have thought that the concepts of home and end would have been fairly simple for a UI designer to grok. Such is the ineffectiveness of the mac UI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3519977132218488403?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3519977132218488403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3519977132218488403&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3519977132218488403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3519977132218488403'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-default-button-shenanigans_09.html' title='New Machine - Default Button Shenanigans - Correction'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3790400181523911029</id><published>2008-01-07T08:39:00.000-05:00</published><updated>2008-01-07T09:00:05.973-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Another Opinion</title><content type='html'>&lt;a href="http://def-end.blogspot.com/2008/01/screaming.html"&gt;Dave&lt;/a&gt; talks of Edvard Munch but I think, if my history is correct, Edvard used a mac. Infact, if you zoom in to the painting you can see that he is screaming in hatred and frustration as he tosses his mac over the bridge.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R4IwJJVApDI/AAAAAAAAAJQ/Noff-PBMC_4/s1600-h/scream-with-mac.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R4IwJJVApDI/AAAAAAAAAJQ/Noff-PBMC_4/s320/scream-with-mac.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5152733857346266162" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3790400181523911029?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3790400181523911029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3790400181523911029&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3790400181523911029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3790400181523911029'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-another-opinion.html' title='New Machine - Another Opinion'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_IWJV2VJlogg/R4IwJJVApDI/AAAAAAAAAJQ/Noff-PBMC_4/s72-c/scream-with-mac.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2358658719063824824</id><published>2008-01-07T08:13:00.000-05:00</published><updated>2008-01-07T09:03:34.209-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Default Button Shenanigans</title><content type='html'>I had this post prepared to whine about the way that mac presents its' default buttons on its' dialogs. It was going to be o-so-contrite with subtle sneers here and there for effect and all toped off with the classic "windows does it better". Who could have hoped for anything more.&lt;br /&gt;&lt;br /&gt;OK, I take it back. Tentatively mind you, because I am sure there is something subtle to sneer about here.&lt;br /&gt;&lt;br /&gt;The mac dialog shows two types of highlighting. A complete fill-in or a subtle ring. Well, it turns out that the fill-in is activated with the "enter" key and the ring with the "space" key.&lt;br /&gt;&lt;br /&gt;The Stickies application, on closing a sticky note, offers a ringed "Don't Save" and a filled-in "Save" option. Only one key is required to select an option. There is a third button with no highlighting that you have to tab to. The tabbing moves the ring highlighting allowing the "space" key to select the button.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R4IxEJVApEI/AAAAAAAAAJY/NUNIvD55H38/s1600-h/stickies-cdialog.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R4IxEJVApEI/AAAAAAAAAJY/NUNIvD55H38/s320/stickies-cdialog.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5152734870958548034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The downside of this is my expectation that it is a non-standard feature of the Stickies application. There seems to be so many in-consistencies that I have come to expect them.&lt;br /&gt;&lt;br /&gt;The latest inconsistency hearkens back to older post complaining the lack of a consistent end key. Command-right arrow doesn't work in gmail. Well now I find that Command-right arrow is assigned to a completely different function in Adium, allowing me to select the next IM window. Nice feature, bad key selection.&lt;br /&gt;&lt;br /&gt;Is this Adium's fault or the fact that mac doesn't have a consistent end key.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2358658719063824824?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2358658719063824824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2358658719063824824&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2358658719063824824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2358658719063824824'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2008/01/new-machine-default-button-shenanigans.html' title='New Machine - Default Button Shenanigans'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_IWJV2VJlogg/R4IxEJVApEI/AAAAAAAAAJY/NUNIvD55H38/s72-c/stickies-cdialog.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6041199190037217692</id><published>2007-12-16T10:21:00.000-05:00</published><updated>2007-12-16T10:24:46.280-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Smackbook Pro</title><content type='html'>I am not sure how long it is going to be before I am confident enough with my mac to do this but this rocks. Of coarse, this was posted in May 06 so I still have years of information to catch up on.&lt;br /&gt;&lt;br /&gt;    &lt;a href="http://blog.medallia.com/2006/05/smacbook_pro.html"&gt;SmackBook Pro&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6041199190037217692?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6041199190037217692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6041199190037217692&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6041199190037217692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6041199190037217692'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-smackbook-pro.html' title='New Machine - Smackbook Pro'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4209773719241759059</id><published>2007-12-15T19:09:00.000-05:00</published><updated>2008-01-10T09:16:29.248-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Coherence Revelation</title><content type='html'>Having posted positive things about Parallels Coherence feature the other day I have just been blown away by a concept that completely passed me by. I was working on the last post, using the command-shift-3 and 4 to capture screen shots to png files, and I needed to convert these to jpg's to save a little space.&lt;br /&gt;&lt;br /&gt;Right click on the png file and select "Open With" and peruse the list, there is Gimp, a fine tool but a little clumsy, then, near the bottom of the list was "Paint.app". Well I hadn't ever seen a Paint program on the mac so I thought I would see what it could do.&lt;br /&gt;&lt;br /&gt;This is when it happened. To my complete surprise Parallels showed a little dialog indicating that it was booting Windows XP and within 4 seconds, Windows Paint started, in Coherence mode. So it was just another window on the Mac background. That is just awesome because Paint does a great job of converting png's to jpg's.&lt;br /&gt;&lt;br /&gt;With the VM started the subsequent startups was sub-second and the job was done.&lt;br /&gt;&lt;br /&gt;So, the mac is really good at image conversion now that it supports a Windows application. Nice.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R2Rzo5VApCI/AAAAAAAAAJI/TlpLfcfnUtk/s1600-h/open_with_paint.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R2Rzo5VApCI/AAAAAAAAAJI/TlpLfcfnUtk/s320/open_with_paint.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144363820784854050" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4209773719241759059?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4209773719241759059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4209773719241759059&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4209773719241759059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4209773719241759059'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-coherence-revelation.html' title='New Machine - Coherence Revelation'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_IWJV2VJlogg/R2Rzo5VApCI/AAAAAAAAAJI/TlpLfcfnUtk/s72-c/open_with_paint.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7359608252225498047</id><published>2007-12-15T17:48:00.003-05:00</published><updated>2007-12-16T10:25:42.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Utilities</title><content type='html'>Here is the list of utilities that I have added to the basic Leopard installation so that I can get my work done.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.scriptsoftware.com/iclock/iclockmac.php"&gt;iClock&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This replaces that standard OS X clock so that i can show the day of the month and the time in the menu bar. Simple and compact.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R2RakJVAo8I/AAAAAAAAAIY/s3cMr1abv4k/s1600-h/iClock.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_IWJV2VJlogg/R2RakJVAo8I/AAAAAAAAAIY/s3cMr1abv4k/s320/iClock.JPG" alt="" id="BLOGGER_PHOTO_ID_5144336251389780930" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.islayer.com/index.php?op=item&amp;amp;id=28"&gt;iStat&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This utility allows you to select various performance counters and add them to your menu bar. The appearance can be altered to make them easy to read and they allow access to the activity monitor for a more detailed look.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R2Rb5pVAo9I/AAAAAAAAAIg/4YTgYpWBLBs/s1600-h/iStat.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_IWJV2VJlogg/R2Rb5pVAo9I/AAAAAAAAAIg/4YTgYpWBLBs/s320/iStat.JPG" alt="" id="BLOGGER_PHOTO_ID_5144337720268596178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://macchampion.com:16080/pinpoint_features.shtml"&gt;PinPoint&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This utility tracks the mouse pointer and adds overlays to make it easier to see. The  latest 3.0 beta version supports animated cursors which is really cool. They even have an audio cursor so you can shout at your mouse to make it blink at you. The downside of animated cursors is CPU usage. I was seeing numbers in the 10 range so switched back to the 2.52 version for CPU down at 1%. Even this version has lots of nice features. Full screen cross hairs is nice for image editing and screen capturing.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R2ReWZVAo-I/AAAAAAAAAIo/ezd6wcIazqA/s1600-h/PinPointer.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_IWJV2VJlogg/R2ReWZVAo-I/AAAAAAAAAIo/ezd6wcIazqA/s320/PinPointer.JPG" alt="" id="BLOGGER_PHOTO_ID_5144340413213090786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.adiumx.com/"&gt;Adium&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A nice instance messaging app that can be compressed into a very clean looking interface. It supports all the usual services.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R2RgqpVAo_I/AAAAAAAAAIw/yLeyhXC_ArI/s1600-h/adium.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_IWJV2VJlogg/R2RgqpVAo_I/AAAAAAAAAIw/yLeyhXC_ArI/s320/adium.JPG" alt="" id="BLOGGER_PHOTO_ID_5144342960128697330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.blacktree.com/"&gt;QuickSilver&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the greatest productivity tool out there. With a couple of keystrokes I can find and execute any application on my machine. With a couple more I can select any action to be performed on any item. There is nothing like this for windows but a few clones are getting closer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R2Rjq5VApAI/AAAAAAAAAI4/ygqtxigVwnY/s1600-h/QuickSilver.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_IWJV2VJlogg/R2Rjq5VApAI/AAAAAAAAAI4/ygqtxigVwnY/s320/QuickSilver.jpg" alt="" id="BLOGGER_PHOTO_ID_5144346262958547970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;Screen Capture from Black Tree web site since I couldn't screen capture my own. I hope they don't mind.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://jumpcut.sourceforge.net/"&gt;JumpCut&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a multi-clipboard utility. When you press the hotkey you get a small window overlay with the last text that was copied. I would like to see the last 10 or so to see if what I want is in the list. It allows me to press the down arrow to sequence through older text but this makes the visual queues harder to spot. Still, a worth while utility to have.&lt;br /&gt;&lt;br /&gt;You can, however, if you use the mouse, select the menu bar scissors to select the paste operation from there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R2Rr9pVApBI/AAAAAAAAAJA/ih3HA4T0I4M/s1600-h/jumpcut.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R2Rr9pVApBI/AAAAAAAAAJA/ih3HA4T0I4M/s320/jumpcut.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144355381174117394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.manytricks.com/witch"&gt;Witch&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This takes me back to simple Windows style alt-tabbing. Just select the window you want to see and focus on it. None of this command-tab to an application and then click to get focus etc. This is much easier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7359608252225498047?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7359608252225498047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7359608252225498047&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7359608252225498047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7359608252225498047'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-utilities.html' title='New Machine - Utilities'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R2RakJVAo8I/AAAAAAAAAIY/s3cMr1abv4k/s72-c/iClock.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-401053530445018005</id><published>2007-12-15T11:41:00.000-05:00</published><updated>2007-12-15T13:58:17.025-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>New Nationality</title><content type='html'>Everything changes while everything stays the same. It's like staring at the other side of the sphere as a new soul.&lt;br /&gt;&lt;br /&gt;At 14:45 on December 14, 2007 I became a US citizen.&lt;br /&gt;&lt;br /&gt;This is my 20th year in this great country and I feel extremely lucky to have had this opportunity in my life.&lt;br /&gt;&lt;br /&gt;I have to say that these are rather selfish thoughts because, it turns out, that the most perfect woman in the world, happens to live here, so what is a guy to do.&lt;br /&gt;&lt;br /&gt;The ceremony was really inspiring. Presided over by the Honorable S. Arthur Spiegel and the guest speaker was Mr. Neil A. Armstrong.&lt;br /&gt;&lt;br /&gt;There were 87 people eager to become citizens, from 36 different counties. I was number 22 in line between a young husband and wife from Bulgaria and an older mother from China.&lt;br /&gt;&lt;br /&gt;The speeches centered on the responsibility that we were taking on with the realization that America isn't perfect but that, as citizens, we are responsible to help improve it. I thought it refreshing to hear these words since it really speaks to the reality of all societies trying to become the best they can be. This is a privilege to be a part of.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R2QgWJVAo2I/AAAAAAAAAHo/KpG4ktiLv-Q/s1600-h/ed_spiegal_handshake.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R2QgWJVAo2I/AAAAAAAAAHo/KpG4ktiLv-Q/s320/ed_spiegal_handshake.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144272239197201250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R2QgkZVAo3I/AAAAAAAAAHw/U6BSQztHnQE/s1600-h/ed_armstrong_handshake.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R2QgkZVAo3I/AAAAAAAAAHw/U6BSQztHnQE/s320/ed_armstrong_handshake.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144272484010337138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As I left the courtroom I was greeted was greeted by the &lt;a href="http://www.dar.org"&gt;Daughters of the Revolution&lt;/a&gt; who are direct decedents of those that fought for the freedom of this great land.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R2QgzJVAo4I/AAAAAAAAAH4/SLJonwAukDI/s1600-h/ed_daughters_of_revolution.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R2QgzJVAo4I/AAAAAAAAAH4/SLJonwAukDI/s320/ed_daughters_of_revolution.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144272737413407618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My first act as a citizen was to register to vote. Important times ahead, I hope I can make the right choice for my grand kids.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R2QhZpVAo6I/AAAAAAAAAII/0qgobZc7RZQ/s1600-h/ed_voter_registration.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R2QhZpVAo6I/AAAAAAAAAII/0qgobZc7RZQ/s320/ed_voter_registration.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144273398838371234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apparently, one of the lesser known perks of becoming a citizen is an introductory taste of fine cookies and punch, yummy.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R2QhB5VAo5I/AAAAAAAAAIA/m7gYM8nxClM/s1600-h/ed_cookies_and_punch.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R2QhB5VAo5I/AAAAAAAAAIA/m7gYM8nxClM/s320/ed_cookies_and_punch.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144272990816478098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Finally, leaving Potter Stewart Courthouse at 5th and Walnut in Cincinnati, I stand by the Bill of Rights, the cornerstone of freedom to live by. I carry with me a congratulatory letters from George Voinovich, one of the Senators for Ohio and George W. Bush, though I don't think that was his actual signature.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R2QhopVAo7I/AAAAAAAAAIQ/mYKrAJTYzKM/s1600-h/ed_bill_of_rights.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R2QhopVAo7I/AAAAAAAAAIQ/mYKrAJTYzKM/s320/ed_bill_of_rights.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5144273656536409010" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-401053530445018005?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/401053530445018005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=401053530445018005&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/401053530445018005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/401053530445018005'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-nationality.html' title='New Nationality'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R2QgWJVAo2I/AAAAAAAAAHo/KpG4ktiLv-Q/s72-c/ed_spiegal_handshake.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7965734628196715751</id><published>2007-12-13T11:50:00.000-05:00</published><updated>2007-12-16T10:27:26.075-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Parallels strickes again</title><content type='html'>A simple software update but much, much more. I was trying to get windows running in Parallels again after the &lt;a href="http://esumerfield.blogspot.com/2007/12/new-machine-multilingual-power-button.html"&gt;horrendous experience&lt;/a&gt; last week.&lt;br /&gt;&lt;br /&gt;Parallels is launched and prompts me to download an update. I am excited about this because I install these all the time on Windows and never have any issues. I smile at the thought of little bugs being crushed by new clean software. Ah, dead bugs.&lt;br /&gt;&lt;br /&gt;The download dialog pops up and things look good. I wait a little but it appears to be taking some time so I slide my chair left and get back to my Windows machine to play for a while.&lt;br /&gt;&lt;br /&gt;Perhaps it was the Mac clock, Alex, announcing the next hour, or the rumble in my stomach hinting at food time, but it dawned on me that the Parallels download had not completed. Well, first day out I imagine there are lots of people as eager as I to fix bugs.&lt;br /&gt;&lt;br /&gt;How much longer should a person wait for a download. The original dmg didn't take nearly as long to download. Eventually you have to accept the fact that something is not working. Ah, yes, of coarse, they must be testing their download code. I can assert that it doesn't work. I press cancel, nothing happens, quit is ignored and a force quit shows me an elegant C dump which I kindly forward to Apple to work on. I am sure they love getting those things.&lt;br /&gt;&lt;br /&gt;After the Parallels restart, things started going well, which surprised me, and lulled me into a sense of calm vulnerability, destined to be wiped clean by reality. So, there was a moment, when the mac seemed as though it might do something well.&lt;br /&gt;&lt;br /&gt;I feel I have to share the good news. I start up Parallels and install Windows XP. It installs and boots beautifully. I am even brave enough to try Coherence mode which hadn't worked last time but, to my giddy excitement, my Windows start bar appeared at the bottom of my OS X screen. Press the Start bar and select IE and, more giddy excitement, it launches and works. I even tried setting auto-hide and now when I move my mouse to the bottom of the screen the start bar and the dock both pop up. Who could ask for anything more.&lt;br /&gt;&lt;br /&gt;Let's stop and reflect on the good times, because this is where they end. Ah, Coherence.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R2KbKpVAozI/AAAAAAAAAHA/Wig-uWaShEY/s1600-h/parallels_coherence.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R2KbKpVAozI/AAAAAAAAAHA/Wig-uWaShEY/s320/parallels_coherence.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5143844331605500722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have a Vista upgrade and decided to give it a shot. See how giddy excitement can lead to stupid decisions?&lt;br /&gt;&lt;br /&gt;I make a snapshot of the Windows XP VM, clone it, and throw in the Vista DVD. Now I have to admit to some user error at this juncture.&lt;br /&gt;&lt;br /&gt;I started the upgrade in XP not considering that Parallels actually asks for the OS type at VM create time. So, as I considered the problem of how Parallels would run a Vista OS in an XP VM, I found the Parallels option "Prepare VM for Vista Upgrade". Of coarse this was a little late now.&lt;br /&gt;&lt;br /&gt;I canceled the install, selected this option and followed the instructions. Back to the install process which went through all the way to the final boot and the login as Administrator. It proudly told me that it was "setting up desktop".&lt;br /&gt;&lt;br /&gt;Alex piped up again as another hour passed  and it registered that things had been going well for far too long. Turns out Apple came up with better voice simulation for the time announcement so that we could more clearly hear the warning that things were about to go down the shitter. An hour is way too long for things on a mac to work correctly.&lt;br /&gt;&lt;br /&gt;With the hung install all I could do was shutdown the VM and delete it. I thought this was the end of the problem but Parallels had corrupted OS X. Yes, it appears that is what happened. Let's say it a little louder so everyone can hear.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;Parallels corrupted OS X&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The symptom is clear. You do not have a user directory any more. After further investigation, it appeared as though my /Users/esumerfd directory did actually exist on the disk but was not showing up in Finder.&lt;br /&gt;&lt;br /&gt;The all knowing oracle, Google, pointed me to &lt;a href="http://docs.info.apple.com/article.html?artnum=307033"&gt;a solution&lt;/a&gt; on the Mac site. Fortunately, they prefixed their solution with the genial phrase "Don't worry". I would have thought that a &lt;a href="http://en.wikipedia.org/wiki/Don%27t_Panic_%28Hitchhiker%27s_Guide_to_the_Galaxy%29"&gt;"DON'T PANIC"&lt;/a&gt; suggestion would have helped more, since, OS X&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;"looked insanely complicated" to operate, and&lt;br /&gt;partly to keep intergalactic travelers from, well, panicking.&lt;sup&gt;(p. 27)&lt;/sup&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So, head off to the Users directory and try this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;: ls -lO&lt;br /&gt;total 0&lt;br /&gt;drwxrwxrwt   4 root      wheel  -       136 Nov 26 18:13 Shared&lt;br /&gt;drwxr-xr-x@ 35 esumerfd  staff  &lt;font color="red"&gt;&lt;b&gt;hidden&lt;/b&gt;&lt;/font&gt; 1190 Dec 13 17:21 esumerfd&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see the user directory is hidden. So, Parallels was so depressed about its performance it thought that it would hide everything trying to convince me to run away. After all, I am not a user on this machine anymore.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;chflags nohidden ~/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And she's back. WooHoo.&lt;br /&gt;&lt;br /&gt;So, we learn another valuable lesson. DON'T PANIC, they have added all the information you will ever need to Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7965734628196715751?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7965734628196715751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7965734628196715751&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7965734628196715751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7965734628196715751'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-parallels-strickes-again.html' title='New Machine - Parallels strickes again'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R2KbKpVAozI/AAAAAAAAAHA/Wig-uWaShEY/s72-c/parallels_coherence.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7195392811720883423</id><published>2007-12-11T16:59:00.000-05:00</published><updated>2007-12-16T10:27:57.099-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Date Time</title><content type='html'>Two complaints.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The date time that is showing in the menu bar allows me to see the day name and the time but no day of the month.&lt;br /&gt;&lt;br /&gt;Now that is just crazy. I usually know the day name but rarely remember the day of the month. I thought UI specialists were all about putting the most commonly used data in the simplest place. I guess with  Apple employees having to work on these machines all day they must get so frustrated that they even forget what day it is.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I am forced to live in Columbus. The timezone requires me to select a city name and does not include Cincinnati. While there are some City or at least county exceptions to timezones, I don't live in one. Can't I just have an EST?&lt;br /&gt;&lt;br /&gt;This wouldn't be so bad if I didn't have to see it every time I look at the dashboard clock. It is just irritating.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;Hey, Apple,&lt;br /&gt;please move me to Cincinnati,&lt;br /&gt;or stop reminding me that you suck.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I should point out, that, in this case, Mac sucks less than Windows. After all, I can add the time to the system tray but that is all she wrote. No day of month or day name. There are some after market apps that can produce nice looking clocks with all the info you need on the system tray. I would imagine that I will eventually find some after market menu plug-in for the Mac to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7195392811720883423?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7195392811720883423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7195392811720883423&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7195392811720883423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7195392811720883423'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-date-time.html' title='New Machine - Date Time'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7308882787605944331</id><published>2007-12-09T10:00:00.000-05:00</published><updated>2007-12-16T10:28:12.444-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Mac User Unfriendly things</title><content type='html'>Yes, I know, blasphemy. What else can it be when the only prevailing thoughts expressed in the world are about how easy it is to use. Sorry, you are brain-washed hype-mongers (all bloggers should insult their audience before they start just to set the tone correctly :-) ).&lt;br /&gt;&lt;br /&gt;So, here is a short list so far.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dialog transitions.&lt;br /&gt;&lt;br /&gt;What is the deal with not allowing me to tab to an OK button and pressing space. I have already had to enable the tabbing from control to control because it wasn't the default. Now, even with that enabled, I can not tab to an OK button.&lt;br /&gt;&lt;br /&gt;Specific case, Twitterrific properties dialog.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Keyboard Inconsistent&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Snitter&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;When entering tweets into the new Snitter client, based on the newly renamed and re-hyped, Air framework, we find that the options-arrow doesn't jump the cursor by words anymore. Is this a Mac problem or an Air problem?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Firefox&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Another example would be the command-w to close a window. Firefox uses this key to close tabs and makes you add a shift to close the window. I would have reversed that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Firefox&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;Firefox downloads a file, it appears in the download window, command-o opens the file in the an open file dialog box?. Not quite right since the file was already selected but ok, pressing on. Now in the open file dialog, select the file and press "open" button (or just Command-O, they are both wrong) on the file and you get a "do you want to save the file" prompt? If you agree and you get a second download file. &lt;br /&gt;&lt;br /&gt;None of this is anything to do with the "open" semantic we were going for. Again I am forced back to the mouse to click "open" or double click the file to open it in the Firefox download dialog.&lt;br /&gt;&lt;br /&gt;Tricky logic coming up, watch out. Windows uses the enter key to open. Firefox under Windows doesn't do anything when enter is pressed in the download window. So this lack of functionality is better than inconsistent functionality. Mac or Firefox fault indeterminate.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Spaces&lt;br /&gt;&lt;br /&gt;You can not drag an Air application (experimented with Snitter) to a Spaces boundary to move it to another Space. Let's all hate Apple, after all, we have been hating Microsoft for so long, why not spread the joy. In reality, they both appear to deserve some well crafted derision.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Command-Tab Behavior&lt;br /&gt;&lt;br /&gt;Coming from Windows this is certainly going to take some getting used to. I am used to being able to get to the windows I want and have it in focus EASILY.&lt;br /&gt;&lt;br /&gt;When a window is minimized, using Command-Tab to select it does nothing. It seems like a simple UI request. "Go to my window" I say but the Mac refuses to give me access to it. Instead, back to the mouse to navigate to the dock to find and click on the window that I want.&lt;br /&gt;&lt;br /&gt;When a window exists in a different Space, you can Command-Tab to it, but, when you get there it will not have focus, so you have to click on it to use it. Another simple window selection that requires multiple steps to achieve a simple goal.&lt;br /&gt;&lt;br /&gt;I do like the Command-` for cycling through many windows from the same program. That is really nice with Firefox.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Google Mail&lt;br /&gt;&lt;br /&gt;There is no "goto end of line in the gmail compose dialog. It doesn't seem to be related to a Firefox rendered textarea since it is working in this blog entry page. This may very well be a bug in the page code managing the compose input field but it is only effecting macs.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Gimp&lt;br /&gt;&lt;br /&gt;This is an old X application and runs with a completely different set of UI design standards. Now that Mac is based on unix it has the ability to run these old unix applications so its hard to contend that this is a Mac problem. However, the UI standards for Gimp are closer to the Windows standards.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;There are obviously going to be minor differences between UI libraries, cocoa, carbon, Air, HTML/JavaScript etc. I have barley scratched the surface of whole &lt;a href="http://www.macports.org"&gt;Macports&lt;/a&gt; tool set with all it's X implementations.&lt;br /&gt;&lt;br /&gt;One of the realities that Mac faces is that it is a Unix based UI. While they smartly replaced X with their own UI toolkit to improve usability they are still fighting the draw of the old Unix habits. The Command-Tab behavior is straight out of your old X environment.&lt;br /&gt;&lt;br /&gt;Windows has the advantage of using a more standard UI toolkit. All programs on a Windows machine write to the Windows user interface libraries. This means that everything works the same way all the time and that makes Windows a better user experience.&lt;br /&gt;&lt;br /&gt;The problem here is not that there are a few non-standard interactions on a Mac but that all we hear is how user friendly a Mac is. I am hear to say that a Mac is "usable" and when you get through the arduous process of learning all it's foibles it will feel like that old car with no mirrors, a clear view of the road through the floor and no 2nd gear, that you will never part with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7308882787605944331?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7308882787605944331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7308882787605944331&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7308882787605944331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7308882787605944331'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-mac-user-unfriendly-things.html' title='New Machine - Mac User Unfriendly things'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5794915894070878868</id><published>2007-12-08T11:08:00.000-05:00</published><updated>2007-12-08T11:36:39.608-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>New Dog</title><content type='html'>Switching from plastic and metal changes in my life to biological and pooping changes. We have a new dog to keep us company. He is a Rottweiler and Mastiff mix called Bernie , he is around a year and a half old and just the most lovable bouncy animal we could have hoped for.&lt;br /&gt;&lt;br /&gt;We found him on &lt;a href="http://www.petfinder.com"&gt;Pet Finder&lt;/a&gt; located at a &lt;a href="http://www.petfinder.com/shelters/OH308.html"&gt;Coshocton County Shelter&lt;/a&gt; which is about 3 hours drive north of us.&lt;br /&gt;&lt;br /&gt;Well he is still settling into his new surroundings and we are still getting used to a 100 pound animal wondering around. He is the best exercise program we have ever invested in, beats the gym easily, because you have to walk Bernie, you don't have to go to the gym.&lt;br /&gt;&lt;table border="0"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R1rG77UNYmI/AAAAAAAAAGw/ycfFQmitbjg/s1600-h/sitting_headshot.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R1rG77UNYmI/AAAAAAAAAGw/ycfFQmitbjg/s320/sitting_headshot.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5141640657433879138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R1rHIrUNYnI/AAAAAAAAAG4/a22n12MvePs/s1600-h/sleeping_bed.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R1rHIrUNYnI/AAAAAAAAAG4/a22n12MvePs/s320/sleeping_bed.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5141640876477211250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5794915894070878868?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5794915894070878868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5794915894070878868&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5794915894070878868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5794915894070878868'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-dog.html' title='New Dog'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_IWJV2VJlogg/R1rG77UNYmI/AAAAAAAAAGw/ycfFQmitbjg/s72-c/sitting_headshot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8793039220075533353</id><published>2007-12-08T10:49:00.000-05:00</published><updated>2007-12-16T10:28:25.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Window Re-size Conundrum</title><content type='html'>One of the annoyances I have been having with my new shiny mac is the lack of keyboard driven window control. I can %-m to minimize and %-w to close but there is nothing to re-size, move, maximize, or restore a selected window. Of coarse Windows has all these features so I am feeling a little lost.&lt;br /&gt;&lt;br /&gt;The other problem is that, even with the mouse I have limited control over re-sizing the window with the bottom right corner of the window being the only hot zone. Quite apart from the fact that it doesn't offer any cursor feedback when I am hoving over it,   I have found a problem that I can't solve with out more control.&lt;br /&gt;&lt;br /&gt;When I open the Finder, the window is taller than the screen so the re-size hot zone is  not accessible. I have tried switching the views, closing and reopening, restarting and cursing at it. Nothing helped.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R1q_VrUNYlI/AAAAAAAAAGo/gOo2GVzAX1o/s1600-h/window_too_big.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R1q_VrUNYlI/AAAAAAAAAGo/gOo2GVzAX1o/s320/window_too_big.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5141632303722488402" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8793039220075533353?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8793039220075533353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8793039220075533353&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8793039220075533353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8793039220075533353'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-window-re-size-conundrum.html' title='New Machine - Window Re-size Conundrum'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R1q_VrUNYlI/AAAAAAAAAGo/gOo2GVzAX1o/s72-c/window_too_big.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6885763161346204431</id><published>2007-12-07T19:44:00.000-05:00</published><updated>2007-12-16T10:28:37.051-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Finder Problems</title><content type='html'>Finder being similar in goal to Windows Explorer I was expecting some really easy ways to get things done. Apparently, Apple screwed up the user interface here as well.&lt;br /&gt;&lt;br /&gt;Baring in mind that I may know nothing but that is what comments are all about.&lt;br /&gt;&lt;br /&gt;So, lets consider some simple tasks that I would like to do:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Navigate a directory structure.&lt;br /&gt;&lt;br /&gt;In "List" mode things work as expected but switch to "Cover Flow" and the interface changes. The UI cardinal rule that is broken by the Mac so often.&lt;br /&gt;&lt;br /&gt;In "Cover Flow" mode when a folder is selected I have press command-right arrow to navigate. What's with the two keys. The right arrow moves me to the next sibling which is stupid because I have a perfectly good down arrow if I wanted to do that.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Open With&lt;br /&gt;&lt;br /&gt;I am playing with some images and want to learn more about iPhoto's features. The default action for a jpg file is preview. Perhaps useful for some things but I want to open it in iPhoto, the big iLife component extolled in the ad's, you would think the integration is great wouldn't you? So, ok not the default but right click on the file and select "Open With", search the list of apps, search again in astonishment. No iPhoto. I see Gimp, which I installed for better photo editing because we know iPhoto sucks for at photo editing, but not the grand app Apple touts so staunchly.&lt;br /&gt;&lt;br /&gt;Ok, no problem I am used to the whole "Open With" concept. I select "Other" to find the iPhoto application. The application selection dialog opens and I find the app in question. I see an "Always Open With" check box but I don't want that. I assume that it will be as good as windows and remember that I selected this app this time to will add it to the list ready for next time.&lt;br /&gt;&lt;br /&gt;The other option on this dialog is the "Enable: Recommended Applications" which can be switched to "All Applications" if I want to. This simplifies my selection of iPhoto because the down arrow jumps between "Recommended Application" saving some time.&lt;br /&gt;&lt;br /&gt;When I next go into "Open With" to open the next photo I find that iPhoto is not available. The Mac had forgotten that I selected this app. I am going to have to re-select "Other", arrow down to the application and press "Open".&lt;br /&gt;&lt;br /&gt;So, if Mac is maintaining a list of "Recommended Applications" and another list of "Open With" applications, how does one move one to the other list?&lt;br /&gt;&lt;br /&gt;Oh, yes, the burnt crust on this is that iPhoto doesn't open the photo in question but jumps to a list of all photo's available on the USB memory card. At this point I am not sure I would expect anything else. Why not force me to click some more and navigate some more, after all, Mac is so pretty :-P&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6885763161346204431?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6885763161346204431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6885763161346204431&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6885763161346204431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6885763161346204431'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-finder-problems.html' title='New Machine - Finder Problems'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-9056097848341191382</id><published>2007-12-07T18:51:00.000-05:00</published><updated>2007-12-16T10:28:50.951-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Multilingual Power Button of Doom</title><content type='html'>Well the Marble of Doom has some knock-on effects. The Parallels Windows session was up when the Marble rolled by and all I can say is that the VM image must be corrupt because when you try to re-start it you get the following "Multilingual Power Button of Doom".&lt;br /&gt;&lt;br /&gt;The lesson is to back-up your VM's often. They certainly take a long time to create you might as well invest in the disk to back them up.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R1ngj7UNYkI/AAAAAAAAAGg/twAiI3gvxTc/s1600-h/multilingual_power_button_of_doom.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_IWJV2VJlogg/R1ngj7UNYkI/AAAAAAAAAGg/twAiI3gvxTc/s320/multilingual_power_button_of_doom.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5141387357442630210" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-9056097848341191382?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/9056097848341191382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=9056097848341191382&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9056097848341191382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/9056097848341191382'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-multilingual-power-button.html' title='New Machine - Multilingual Power Button of Doom'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R1ngj7UNYkI/AAAAAAAAAGg/twAiI3gvxTc/s72-c/multilingual_power_button_of_doom.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3046904600988853771</id><published>2007-12-07T15:35:00.000-05:00</published><updated>2007-12-16T10:29:05.887-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Spinning Marble of Doom</title><content type='html'>After two weeks of ownership the honeymoon is over. I have been presented by the most prestigious of inducti experiences. The &lt;a href="http://en.wikipedia.org/wiki/Spinning_wait_cursor"&gt;Marble of Doom&lt;/a&gt; is my favorite of the few names it has.&lt;br /&gt;&lt;br /&gt;So, let's review. I left Windows land for two reasons. Vista was unusable and Windows XP was blue screening every time it looked at Google Earth.&lt;br /&gt;&lt;br /&gt;I now have an expensive MacBook Pro which is unusable because I don't know how to use it and it has just shown me the big middle Marble of Doom.&lt;br /&gt;&lt;br /&gt;I say to you. Computing is going to the dogs. Someone please do some damed testing will you.&lt;br /&gt;&lt;br /&gt;I was trying to copy something from the mac into a Parallels installed Windows Server and to do this all I wanted was a little FTP server. So, System Preferences, Shared, check the File Sharing checkbox and then in the options I selected "Share Files and folders using AFP", "Share files and folders using FTP" and "Share files and folders using SMB".  I selected the account to share and pressed Done.&lt;br /&gt;&lt;br /&gt;I saw the Marble of Doom but figured it would sort itself out, after all I was just envisioning some network restart it was doing in the background. Fortunately I had my old reliable Windows machine to play with while it was spinning.&lt;br /&gt;&lt;br /&gt;Is an hour too long to wait for a network to restart? I thought I was very patient.&lt;br /&gt;&lt;br /&gt;There didn't seem to be any way to kill the processes since I didn't have a terminal up at the time and the Finder would not open, QuickSilver would not pop up, and the  Activity Monitor was not doing anything. So, power button for 10 seconds and restart.&lt;br /&gt;&lt;br /&gt;I still don't regret buying the mac, after all, it is very pretty :-P&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_IWJV2VJlogg/R1nDc7UNYjI/AAAAAAAAAGY/3UBG9w0MDGU/s1600-h/middle_marble_of_doom.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_IWJV2VJlogg/R1nDc7UNYjI/AAAAAAAAAGY/3UBG9w0MDGU/s320/middle_marble_of_doom.jpeg" alt="" id="BLOGGER_PHOTO_ID_5141355351346340402" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3046904600988853771?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3046904600988853771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3046904600988853771&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3046904600988853771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3046904600988853771'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-spinning-marble-of-doom.html' title='New Machine - Spinning Marble of Doom'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_IWJV2VJlogg/R1nDc7UNYjI/AAAAAAAAAGY/3UBG9w0MDGU/s72-c/middle_marble_of_doom.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7457640901946627023</id><published>2007-12-04T20:52:00.001-05:00</published><updated>2007-12-16T10:29:18.401-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Palm</title><content type='html'>The palm web site indicates that the Palm Desktop software only works on OS X up to 10.4 so I was assuming that my 10.5 Leapard release wasn't supported.&lt;br /&gt;&lt;br /&gt;Thanks to the always informative &lt;a href="http://agileroundtable.org"&gt;Agile Round Table&lt;/a&gt; User Group suggested that it would work anyway so I gave it a shot.&lt;br /&gt;&lt;br /&gt;The good and the bad. The install requires me to restart the machine, which I really don't understand. It's just like installing application on windows.&lt;br /&gt;&lt;br /&gt;I configured the palm to hot sync using Blue Tooth but as I proceeded through the Windows based instructions there was nothing to do on the mac. Eventually, the final next button was pressed and off it went.&lt;br /&gt;&lt;br /&gt;My experience Blue Tooth synching on Windows resulted in repeated Palm crash restarts and Windows refusal to respond. Since then I have upgraded the Palm firmware which might explain the problems, but the Mac experience has been much better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7457640901946627023?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7457640901946627023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7457640901946627023&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7457640901946627023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7457640901946627023'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-palm.html' title='New Machine - Palm'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6570373825158062432</id><published>2007-12-03T18:17:00.000-05:00</published><updated>2007-12-16T10:29:31.551-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Dashboard</title><content type='html'>At first site this dashboard thingy looks static, perhaps useful for the basic date and time features but not much else. Then down in the bottom left corner you notice a little plus sign. The little, almost invisible, plus sign seems to be theme in Apple's idea of what a quality UI is.&lt;br /&gt;&lt;br /&gt;Anyway, the clock thinks I am in Atlanta? The closest I could move myself is Columbus. At least in the same state. What happened to trusty timezones. Why does the clock care which city I live in.&lt;br /&gt;&lt;br /&gt;I decided to installed the new &lt;a href="http://desktop.google.com/mac/"&gt;Google Desktop&lt;/a&gt; which places it's gadgets onto this Dashboard (F12). This adds all kinds of little doo-hickeys, some of which are even marginally useful. You don't have the full list available for Windows yet, but I guess, we expect the mac to be behind.&lt;br /&gt;&lt;br /&gt;Now that I have written this I can't remember if the plus sign was a google Desktop thing or a mac thing.&lt;br /&gt;&lt;br /&gt;Oh, yes, and I like the splash effect when I drop another gadget onto the dashboard. I works well with my watery background. Ooohhhh, Aaaaahhhh.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_IWJV2VJlogg/R1SVlYOuLXI/AAAAAAAAAF4/D4W72yOZmJo/s1600-R/DashboardSplash.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_IWJV2VJlogg/R1SVlYOuLXI/AAAAAAAAAF4/zJo9Dpyd5q0/s320/DashboardSplash.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5139897544128474482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6570373825158062432?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6570373825158062432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6570373825158062432&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6570373825158062432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6570373825158062432'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-dashboard.html' title='New Machine - Dashboard'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_IWJV2VJlogg/R1SVlYOuLXI/AAAAAAAAAF4/zJo9Dpyd5q0/s72-c/DashboardSplash.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4259096067244972498</id><published>2007-12-03T17:38:00.001-05:00</published><updated>2007-12-16T10:29:43.855-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - It's the little things</title><content type='html'>I found something I like about the Mac. Gasp.&lt;br /&gt;&lt;br /&gt;When you enter an invalid password the dialog box shakes it's head at you.&lt;br /&gt;&lt;br /&gt;Doesn't seem like much but it really adds to the emotional side of the relationship.&lt;br /&gt;&lt;br /&gt;Don't expect too many gushing things about mac from this feed. There are way too many brain washed hype-mongers out there to cover that side of things. However, I thought that I should add one just so you don't think I am evil or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4259096067244972498?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4259096067244972498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4259096067244972498&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4259096067244972498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4259096067244972498'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/12/new-machine-its-little-things.html' title='New Machine - It&apos;s the little things'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-7849375558816684154</id><published>2007-11-28T20:37:00.000-05:00</published><updated>2007-12-16T10:29:59.024-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Parallels doesn't work</title><content type='html'>Clean shiny mac with a clean shiny Leopard in it. So I try a clean install of Parallels 3.0 and I find a black and white C dump and a sweet encouraging messaging indicating that it "Unexpected Quit". It seems that when you give Apple loads of money for hardware and not so much for some software, they think that means that it doesn't have to work.&lt;br /&gt;&lt;br /&gt;Turns out I had to download the latest dmg from the Parallels site and install that to make it work. Not too hard but the I haven't seen a C dump in a long time. That is the user friendly mac at it's best.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-7849375558816684154?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/7849375558816684154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=7849375558816684154&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7849375558816684154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/7849375558816684154'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-parallels-doesnt-work.html' title='New Machine - Parallels doesn&apos;t work'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-78223540848285342</id><published>2007-11-26T22:47:00.000-05:00</published><updated>2007-12-16T10:30:20.809-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Tools</title><content type='html'>Life is all about acquiring the coolest tools so for all the Windows tasks that i used to do with ease I need to find the most efficient way to do the same thing on the Mac.&lt;br /&gt;&lt;br /&gt;This is a little bit of a tight rope walk because learning something new is about doing things a different way but it's also about being efficient so you have to try both and see which is the best.&lt;br /&gt;&lt;br /&gt;So these are the tools that I have currently installed that seem to help a little. I expect that we will need many more,&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    &lt;a href="http://jumpcut.sourceforge.net/"&gt;JumpCut&lt;/a&gt; multi-clip support&lt;br /&gt;    &lt;a href="http://blacktree.com/?quicksilver/"&gt;Quick silver&lt;/a&gt; fast access to anything on your computer&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-78223540848285342?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/78223540848285342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=78223540848285342&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/78223540848285342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/78223540848285342'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-tools.html' title='New Machine - Tools'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3356802888004152629</id><published>2007-11-26T21:30:00.000-05:00</published><updated>2007-12-16T10:30:32.092-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Default preferences to change</title><content type='html'>There seem to be lots of settings that appear to be different from what I expect. Since what I expect is a windows experience I wonder if I should be changing these. At least if I document them I can reverse the decision later.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    System Preferences&lt;br /&gt;        Security&lt;br /&gt;&lt;br /&gt;            General&lt;br /&gt;            - Defaults to no password and auto-login. &lt;br /&gt;            - Check the "Require password to wake this computer"&lt;br /&gt;            - Check the "Disable automatic login"&lt;br /&gt;&lt;br /&gt;            Firewall&lt;br /&gt;            - Defaults to "Allow all incoming connections". Very bad.&lt;br /&gt;            - Switch to "Allow only essential services".&lt;br /&gt;&lt;br /&gt;        Keyboard &amp; Mouse&lt;br /&gt;&lt;br /&gt;            Keyboard&lt;br /&gt;                Use all F1, F2, etc as function keys&lt;br /&gt;                - Defaults to disabled because you always need to&lt;br /&gt;                    adjust your screen brightness? Silly people.&lt;br /&gt;&lt;br /&gt;            Trackpad&lt;br /&gt;&lt;br /&gt;                Use two fingers to scroll&lt;br /&gt;                - Enable this so you don't have to move the mouse to&lt;br /&gt;                    the scroll arrows&lt;br /&gt;&lt;br /&gt;                Allow horizontal scrolling&lt;br /&gt;                - Enable the horizontal while you are about it. &lt;br /&gt;                    Not as useful but nice when it's needed.&lt;br /&gt;&lt;br /&gt;                Clicking&lt;br /&gt;                - Enable this so that you don't have to move your&lt;br /&gt;                    fingers so far to click something,&lt;br /&gt;&lt;br /&gt;                    Dragging&lt;br /&gt;                    - Dragging windows with the mouse is easy and&lt;br /&gt;                        only requires one finger.&lt;br /&gt;                    - Drag lock appears to be enabled whether the checkbox is&lt;br /&gt;                        checked or not.&lt;br /&gt;&lt;br /&gt;                Tab trachpad using two fingers for secondary click&lt;br /&gt;                - Defaults off but is a better way to get the context menu than&lt;br /&gt;                    holding down ctrl and clicking.&lt;br /&gt;&lt;br /&gt;           Keyboard Shortcuts&lt;br /&gt;               Full Keyboard Access&lt;br /&gt;               - Defaults to "Text boxes and lists only" instead of "All controls". &lt;br /&gt;                    Mac's hate the keyboard.&lt;br /&gt;&lt;br /&gt;            Accounts&lt;br /&gt;            - Unlock the properties and select "Name and password" &lt;br /&gt;                so hackers can't see a list of usernames.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3356802888004152629?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3356802888004152629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3356802888004152629&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3356802888004152629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3356802888004152629'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-default-preferences-to.html' title='New Machine - Default preferences to change'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1448419537088631018</id><published>2007-11-26T17:31:00.000-05:00</published><updated>2007-12-16T10:30:49.825-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - First impressions</title><content type='html'>My first impression was that it was really heavy. I wanted a big machine so I can't complain but man is it heavy.&lt;br /&gt;&lt;br /&gt;Plugged in the fancy magnetic power cord and it started up perfectly. A short setup and I am on the network and ready to go.&lt;br /&gt;&lt;br /&gt;Second impression, when the setup started it played this &lt;a href="http://www.youtube.com/watch?v=q6yW-mo-_t4"&gt;welcome video&lt;/a&gt; full screen on the hi-def glossy monitor. I can honestly say that I almost fell over. Stunning.&lt;br /&gt;&lt;br /&gt;So I am logged in and the "dock" shows some applications at the bottom of the screen and the finder appears. The finder window is small so I try to resize it but, third impression, the cursor doesn't change when you hover over the window frame. Strange that it doesn't offer that feedback.&lt;br /&gt;&lt;br /&gt;While wondering how to find Safari I notice a little bouncy thing in the dock. I look close to see that it says, "Software Updates". Wow they are already trying to improve my machine for me. Nice Apple.&lt;br /&gt;&lt;br /&gt;The update starts OK but with another UI problem. I thought Mac were supposed to be user friendly. The first option is "later" or "Install and Restart". Well after the surprise of having to restart has passed I select it "Install and Restart".&lt;br /&gt;&lt;br /&gt;It asked for a couple of legal agreements from iTunes and Mac OS X and then to my astonishment it asked me again if I want to restart. Didn't I just answer that question?&lt;br /&gt;&lt;br /&gt;Ok, here is another one. Being a developer I like the keyboard over the mouse but when I press the "Enter" key on a mac it seems to want me to rename the icon? That is just not logical. To start Safari I have to use the mouse and double click it.&lt;br /&gt;&lt;br /&gt;Yes, yes, you are going to hear some winy old Windows guy complaining about having to do things a different way for a little while.&lt;br /&gt;&lt;br /&gt;Here is another example. Safari opens and I am blasted by more ads (The PC Mac adverts are obviously propaganda). I am sucked in and click on a link to a new Alecia Keys song. I now have to setup iTunes which seems reasonable. One of the dialogs explains that "iTunes can download album art", which sounds nice but I read on, to do so I need "to create an account on iTunes", "Just go to iTunes and click on 'Get Album Artwork'." Does it sound odd to you that a dialog is explaining to me that I need to go to a web page and which link to press without including a hyperlink to the place? I have no idea where iTunes is or where this link is. This is just bad UI.&lt;br /&gt;&lt;br /&gt;So quite apart from the fact that the marketing people have worked out a way to get me to create an iTunes account for something that is freely available on the net, I am blown away by the horrendous user interface again.&lt;br /&gt;&lt;br /&gt;-----------------------&lt;br /&gt;&lt;br /&gt;Ok, I am a dummy. While user interfaces should be built for people like me I now feel stupid. The dialog explaining all this stuff that I need to do isn't actually expecting me to do it. I give up my search and press the Next button and guess what the options are? "Yes - take me to the iTunes store" or "No - don't". I think I should have known that these options were going to be available while I was studying the previous dialog. My bad.&lt;br /&gt;&lt;br /&gt;Alecia Keys is still not playing but I have the iTunes store in front of me. If I remember the instructions from that dialog then I am supposed to select "Advanced" and "Get Album Art". Lucky I used a pencil and paper to note that down. Perhaps that should be Mac new ad.&lt;br /&gt;&lt;br /&gt;PC - Hi Mac.&lt;br /&gt;Mac - Hi PC.&lt;br /&gt;PC - I hear that I need to use pencil and paper to use your crappy interface.&lt;br /&gt;Mac - Wait, just press the Next button and everything will be explained.&lt;br /&gt;&lt;br /&gt;but this little saga doesn't end here. You should see this, it is really funny.&lt;br /&gt;&lt;br /&gt;So I press "Advanced" and select "Get Album Art" as instructed. Guess where it takes me? Yes, that's it, the iTunes store that I am already looking at. Wow, this stuff is crappy. It turns out that that dialog was completely unnecessary, all I needed was a button titled "Create iTunes Store account so that you get Album Art" and I would have been happy.&lt;br /&gt;&lt;br /&gt;You will laugh at this. Turns out I already had an iTunes account. Go figure.&lt;br /&gt;&lt;br /&gt;So finally I got to listen to Alicia Keys. The song sucked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1448419537088631018?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1448419537088631018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1448419537088631018&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1448419537088631018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1448419537088631018'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-first-impressions.html' title='New Machine - First impressions'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-6722488709415041870</id><published>2007-11-26T08:54:00.000-05:00</published><updated>2007-12-16T10:31:08.538-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine - Arrived CINCINNATI, OH</title><content type='html'>While munching on Yogurt and a nice bowl of raisin bran, the nice FedEx man arrives and can you believe what he is carrying? Yes, a little brown box with a smaller white box in side.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R0rQzDYqW8I/AAAAAAAAAFw/CV8kCNio-WM/s1600-h/MacBookPro-Leg3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R0rQzDYqW8I/AAAAAAAAAFw/CV8kCNio-WM/s320/MacBookPro-Leg3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5137147900470123458" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-6722488709415041870?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/6722488709415041870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=6722488709415041870&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6722488709415041870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/6722488709415041870'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-arrived-cincinnati-oh.html' title='New Machine - Arrived CINCINNATI, OH'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R0rQzDYqW8I/AAAAAAAAAFw/CV8kCNio-WM/s72-c/MacBookPro-Leg3.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2096735425308846174</id><published>2007-11-25T18:12:00.000-05:00</published><updated>2007-12-16T10:31:19.962-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine, Now in MEMPHIS, TN</title><content type='html'>At 4:27pm on November 25th a short flight to Memphis puts it 2 states away.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_IWJV2VJlogg/R0oDXjYqW7I/AAAAAAAAAFo/CG05Fl7ziDc/s1600-h/MacBookPro-Leg2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_IWJV2VJlogg/R0oDXjYqW7I/AAAAAAAAAFo/CG05Fl7ziDc/s320/MacBookPro-Leg2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5136922028140026802" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2096735425308846174?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2096735425308846174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2096735425308846174&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2096735425308846174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2096735425308846174'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-now-in-memphis-tn.html' title='New Machine, Now in MEMPHIS, TN'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_IWJV2VJlogg/R0oDXjYqW7I/AAAAAAAAAFo/CG05Fl7ziDc/s72-c/MacBookPro-Leg2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8933017526945589180</id><published>2007-11-25T17:53:00.000-05:00</published><updated>2007-12-16T10:31:31.084-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine, Now in ANCHORAGE, AK</title><content type='html'>At 1:36pm on November 24th the MacBookPro has arrived in the US. They are so kind to be traveling on a Thanksgiving weekend, if only they would go a little faster :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_IWJV2VJlogg/R0n_jTYqW6I/AAAAAAAAAFg/yw1qckNKt2I/s1600-h/MacBookPro-Leg1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_IWJV2VJlogg/R0n_jTYqW6I/AAAAAAAAAFg/yw1qckNKt2I/s320/MacBookPro-Leg1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5136917831956978594" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8933017526945589180?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8933017526945589180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8933017526945589180&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8933017526945589180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8933017526945589180'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-now-in-anchorage-ak.html' title='New Machine, Now in ANCHORAGE, AK'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_IWJV2VJlogg/R0n_jTYqW6I/AAAAAAAAAFg/yw1qckNKt2I/s72-c/MacBookPro-Leg1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1533000736247374007</id><published>2007-11-25T17:24:00.000-05:00</published><updated>2007-12-16T10:31:48.642-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac'/><title type='text'>New Machine, From SHANGHAI, CN</title><content type='html'>What do 2.6, 4, 200, 7200, 17 and glossy have in common? They are all stored safely in a little, flat, white box with an ON button.&lt;br /&gt;&lt;br /&gt;If you haven't guessed yet, it's my new MacBook Pro. After a lifetime of Unix and Windows it's time to start on another adventure.&lt;br /&gt;&lt;br /&gt;I have to admit that it feels a little like I am just switching monopolies. While the Apple is not as large it seems just as controlling. Based on the delayed Java releases on OS X and the no Java on the iPhone this is not going to be all roses.&lt;br /&gt;&lt;br /&gt;However, my reasoning stands. I basically have three reasons to change.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;My Windows XP environment on my trusty Sony Vaio is old and in need of an upgrade.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The hardware compatibility issues with Windows continue with regular blue screens especially with graphic intensive applications.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The upgrade path for Windows seems fraught with problems. Vista's security issues persist with most continuing to run the 32 bit on 64 bit hardware.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;I can't say that the migration to a Mac will be ideal. I know they have hardware issues and as they become more popular they will inevitably encounter more security issues.&lt;br /&gt;&lt;br /&gt;The tipping point is for me came when I realized that moving to OS X doesn't preclude me from running Windows in a VM. I watch a buddy of mine use Parallels run Vista on OS X and everything just works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1533000736247374007?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1533000736247374007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1533000736247374007&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1533000736247374007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1533000736247374007'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/new-machine-from-shanghai-cn.html' title='New Machine, From SHANGHAI, CN'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2280000059397231397</id><published>2007-11-21T12:23:00.001-05:00</published><updated>2007-11-25T18:08:20.213-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Complexity, a perspective</title><content type='html'>Complexity, ranked high due to ignorance, is not complexity, but ignorance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2280000059397231397?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2280000059397231397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2280000059397231397&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2280000059397231397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2280000059397231397'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/11/complexity-perspective.html' title='Complexity, a perspective'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-471852548523350885</id><published>2007-09-23T12:35:00.000-04:00</published><updated>2007-09-23T20:37:36.808-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>JRuby Rails Project Day One, Lessons Learned</title><content type='html'>I blogged a while ago that Ruby was the way to go for the best language experience for the future. To that end I am starting to build a new site using Ruby on Rails and focusing on JRuby so that I can deploy it to my existing Tomcat hosting service.&lt;br /&gt;&lt;br /&gt;The site is going to present a new company Sewing Seeds of Literacy which is a venture my wife is embarking on to help supply books to under privileged children. I was hired as the technical help.&lt;br /&gt;&lt;br /&gt;Background over.&lt;br /&gt;&lt;br /&gt;I started by using the NetBeans V6 IDE and its Ruby Rails integration. This is a major step forward in IDE Ruby support and integrates with JRuby easily.&lt;br /&gt;&lt;br /&gt;So, right click, New Project, Ruby Rails Application, and you have your first Rails runtime on top of JRuby. This is really nice.&lt;br /&gt;&lt;br /&gt;Initial setup over.&lt;br /&gt;&lt;br /&gt;The first problem is the database access. The JRuby environment requires JDBC access. The database.yml setup is the same but there is an ActiveRecordJDBC gem that needs to be installed to manage the connection from ActiveRecord ORM library to the JDBC drivers.&lt;br /&gt;&lt;br /&gt;This is all detailed on the &lt;a href="http://www.headius.com/jrubywiki/index.php/Running_Rails_with_ActiveRecord-JDBC"&gt;Headius&lt;/a&gt; site.&lt;br /&gt;&lt;br /&gt;Then these JDBC drivers need to be available on the classpath. I am going in with MySQL so I needed to add the mysql-connector-java-5.0.4-bin.jar to the classpath.&lt;br /&gt;&lt;br /&gt;Unfortunately there are some competing configuration issues going on here.&lt;br /&gt;&lt;br /&gt;1) I had downloaded and installed my own JRuby environment and NetBeans comes with its own. This causes problems because each environment installs its own gems. You can set the environment that NetBeans will use in&lt;br /&gt;&lt;blockquote&gt;Tools-&gt;Options-&gt;Miscelanious-&gt;Ruby&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;2) I had my own c-ruby environment and my path specified jruby/bin before ruby/bin but the JRuby "rake" command is unix only so I was inadvertently running the c-ruby rake command expecting it to manage my migration properly but it couldn't find the JDBC gem.&lt;br /&gt;&lt;br /&gt;Anyway, after much googling, &lt;a href="http://donc.wordpress.com/2007/07/25/jruby-rake-and-windows/"&gt;Foo&lt;/a&gt; had the answer. You need to create a "jrake.bat" in your JRuby bin directory that looks like this:&lt;br /&gt;&lt;blockquote&gt;@echo off&lt;br /&gt;jruby -S rake %*&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Now you can jrake in your jruby environment and rake in your c-ruby environment. There are references to "jake" here and there but nothing concrete.&lt;br /&gt;&lt;br /&gt;3) Now that we are running the right commands we need to add the appropriate jar. There are a couple of ways to do this&lt;br /&gt;&lt;br /&gt;o Create the CLASSPATH environment variable and point it to your jar.&lt;br /&gt;o Copy your jar into the JRUBY_HOME/lib dir.&lt;br /&gt;&lt;br /&gt;One thing that does NOT appear to work is adding the jar to the Netbeans project classpath. &lt;br /&gt;&lt;br /&gt;I chose to copy to JRUBY_HOME/lib for the time being but I don't like this as a long term solution since it means each environment I deploy to needs some extra installation work. Ideally, the jars would be deployed with my war file so they are made available to the containers classpath automatically.&lt;br /&gt;&lt;br /&gt;JDBC Jar configuration over.&lt;br /&gt;&lt;br /&gt;Right click, generate, controller, simple. Right click, generate, model, no sweat. Right click, generate, migration, done.&lt;br /&gt;&lt;br /&gt;These are basic Rails concepts that work just as well in a JRuby environment. They make application development very easy.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mysqladmin create MYDB_development&lt;br /&gt;jrake db:migrate&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Database creation over.&lt;br /&gt;&lt;br /&gt;Now I have a model and a model test but I can't run them because there is no database. Yes, we just finished using our cool new migrations to create a database but that was the development database which is the default RAILS_ENV. We need the test database created from the same migrations. This is not so easy. In fact it is really hard. None of the books talk about it, all the migrations help pages just talk about the default development case. We are going to have to run our migration in test regularly and eventually in production as well so there has to be a solution.&lt;br /&gt;&lt;br /&gt;Along comes a new plugin called &lt;a href="http://www.elctech.com/2007/7/12/migrate_test_db"&gt;Migrate Test DB Rake Plugin &lt;/a&gt;. This is a rails plugin that performs a database schema create on the test database before rails tests are run. This means that when you execute "jrake test" it will create the schema first. This is not effective when running Test::Unit in NetBeans.&lt;br /&gt;&lt;br /&gt;So, I don't see that this is a good solution. As a side effect of testing I am able to create a test database schema. Still doesn't solve the production database situation but that is a little way off.&lt;br /&gt;&lt;br /&gt;Model create over.&lt;br /&gt;&lt;br /&gt;Oh, now I find the best documentation, on the &lt;a href="http://www.headius.com/jrubywiki/index.php/Rails_Integration"&gt;JRuby Wiki&lt;/a&gt;. This entry talks about the "goldspike" plugin which adds lots of java'esk features to rake like creating a war and how to declare the mysql jar as a dependency.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-471852548523350885?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/471852548523350885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=471852548523350885&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/471852548523350885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/471852548523350885'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/09/jruby-rails-project-day-one-lessons.html' title='JRuby Rails Project Day One, Lessons Learned'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5649800506766860242</id><published>2007-09-21T12:24:00.000-04:00</published><updated>2007-09-23T20:40:52.471-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Maven: Why does it have to be so hard?</title><content type='html'>Every project I start I try to use Maven. It seems like the right choice but I consistently fail. Every step is hard. It's not just that there are infrastructure hurdles, but the commands are hard, the POM is complex and nothing is easy.&lt;br /&gt;&lt;br /&gt;This J bites.&lt;br /&gt;&lt;br /&gt;Ok, enough whining. Maven is the right way to manage your build environment simply because it is the only tool that manages your dependencies. This is a simple concept.&lt;br /&gt;&lt;br /&gt;We can argue that ant has sufficed for a long time and that is true. So, we can argue that the dependency complexities that we face are actually not that hard since we appear to be able to work it out without another tool, but wouldn't it be great if we could leverage the learning that others have already put into setting up the correct dependencies?&lt;br /&gt;&lt;br /&gt;Well I am installing grails, an ant solution, and integrating CXF and Mule. I am facing continuous versioning problems with all the xml/soap/ws etc jars. I am sure that when I have solved this problem, I will promptly forget it and have to solve it all over again for the next project.&lt;br /&gt;&lt;br /&gt;I would like to be able to capture the solution in a POM so that I could reuse it even if no one else does.&lt;br /&gt;&lt;br /&gt;So, what is step one. Create a maven project. This is so hard. I can't believe they make us do this. No wonder this tool is taking so long to gain acceptance.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;mvn archetype:create -DgroupId=com.company.project-DartifactId=project-name-DarchetypeArtifactId=maven-archetype-webapp&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Yes, that is the command to create a project, and I didn't even specify all the other version options that they mention. All it does is create this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;./pom.xml&lt;br /&gt;./src&lt;br /&gt;./src/main&lt;br /&gt;./src/main/resources&lt;br /&gt;./src/main/webapp&lt;br /&gt;./src/main/webapp/index.jsp&lt;br /&gt;./src/main/webapp/WEB-INF&lt;br /&gt;./src/main/webapp/WEB-INF/web.xml&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It doesn't do much but it does allow us to enforce standards and, when we develope our own archetypes will improve project structure consistency accross the board. This is all good but why do I need to pass in system properties? Who ever heard of a command line interface that makes you declare system properties.&lt;br /&gt;&lt;br /&gt;Perhaps it could prompt for the required fields like "grails create-app". Perhaps there should be a web page on the maven site that will help. I had to go through google to find it. Their quick start doesn't even talk about it.&lt;br /&gt;&lt;br /&gt;I know, I know, I am whining. I could probably contribute to the project myself, it's open source and all that.&lt;br /&gt;&lt;br /&gt;There is an Eclipse and NetBeans plugin that makes life a little easier.&lt;br /&gt;&lt;br /&gt;There comees a point when we learn to love the new tool. I just pasted a glob of xml into my POM file because some CXF/Maven web page told me to, saved it, and the maven eclipse plugin promptly downloaded all the jars required to bring a CXF web service up and running. This took me an hour or so the first time. Maven just made my life easier.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;And again I am dashed to the jagged rocks of the learning curve. It appears maven doesn't use the JAVA_HOME environment variable to determine the JDK version to use and it is defaulting to JDK 1.3 which is not even installed on my machine. I have annotations so it will not work anyway.&lt;br /&gt;&lt;br /&gt;I suppose it makes sense because it is requiring explicit version declarations for all other jars so why not the rt.jar but it is not telling me how to specify it.&lt;br /&gt;&lt;br /&gt;This brings up the odd balance in our lives of detail vs default. If I require everything specified I know my build will always be correct. If I allow default selections using JAVA_HOME for example, it may fail but will usually work.&lt;br /&gt;&lt;br /&gt;This is why maven is so hard to deal with. Nothing is easy. Specify or die a bloody death and don't expect to block the gushin wound with documentation because even google is lost.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Ok, I found it, &lt;a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html"&gt;System Dependencies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;Oh wait, that is wrong, doesn't work and I don't know what it does though it sounded so close. Infact, we want this &lt;a href="http://maven.apache.org/general.html#Compiling-J2SE-5"&gt;Compiling-J2SE-5&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Man that took another 30 minutes, I almost gave up on Maven again.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;I might be back to loving maven again. Once you have run your "mvn package" to create your war file you can run "mvn tomcat:run" which will run tomcat in place from your generated war file. Now that is cool.&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;Well, while I can't expect maven to solve all my problems, since it's intent is to solve dependency problems I did have that expectation. Silly me.&lt;br /&gt;&lt;br /&gt;The CXF xml glob that I pasted to get all the CXF jars and dependencies downloaded apparently missed the SAAJ jars. I expect I will have to find and add these to my project file manually.&lt;br /&gt;&lt;br /&gt;I am starting to feel as though I might be starting to understand Maven, even if it isn't doing what I want.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5649800506766860242?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5649800506766860242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5649800506766860242&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5649800506766860242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5649800506766860242'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/09/maven-why-does-it-have-to-be-so-hard.html' title='Maven: Why does it have to be so hard?'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-8040390238855762873</id><published>2007-08-22T08:45:00.001-04:00</published><updated>2007-08-22T08:47:03.942-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Simplicity</title><content type='html'>Stop doting your eye's and just capitalize.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-8040390238855762873?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/8040390238855762873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=8040390238855762873&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8040390238855762873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/8040390238855762873'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/08/simplicity.html' title='Simplicity'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3466409160142904857</id><published>2007-07-28T23:10:00.000-04:00</published><updated>2007-07-28T11:13:43.097-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Waterfall Symptoms</title><content type='html'>As I stand in a sit down status meeting to listen to another hour long discussion I ponder what is going on to see if I can offer some help. The obvious suggestions have already been ignored: stand up during the meetings; stop designing the system in meetings; stop with all the detail please, just a summary is all I need.&lt;br /&gt;&lt;br /&gt;This meeting is a little special though. We have a list of components to be completed before we go live and another list of the outstanding bugs. 20 of one component and 197 of the other. We go live in 6 weeks.&lt;br /&gt;&lt;br /&gt;An analyst, that doubles as QA tester, spent their weekend testing but entered bugs like "couldn't test" because of environment problems. The release process is still pretty new and untested.&lt;br /&gt;&lt;br /&gt;Our leader asks for QA of a new module and the same dedicated analyst asks for help. There is none, of coarse, just a few extra of their hours in their day. They were allocated to their kids, but they are dedicated folk. Dedicated to their work I mean, can't be dedicated to work and kids on a waterfall project. Laughable.&lt;br /&gt;&lt;br /&gt;They mention code freeze, except for bugs of coarse; you understand, can't code freeze code that doesn't work. Laughable.&lt;br /&gt;&lt;br /&gt;6 weeks left and now we start raining in scope. Oh wonderful, just in time. Laughable.&lt;br /&gt;&lt;br /&gt;QA has no automation so there will be no regression, just wild retesting. They do a great job, work really hard and find lots of bugs. I just wonder how many are missed for the next go around.&lt;br /&gt;&lt;br /&gt;The project plan is stored in MS Access, a horrible solution, that few people use. We just code anyway, why should we know what the plan is, we weren't part of its creation, or its revisions. It was presented to us once, I asked some questions about it which had the usual optimistic answers.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;   Question: "There isn't enough time to complete coding and QA testing before the release date"&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;   Optimism: "Oh, that's ok, they will run in parallel. Each component we finish will go into QA test."&lt;/blockquote&gt;&lt;br /&gt;It all sounds so logical. Of coarse, I am an Agile developer, parallel coding and testing are the norm but my Agile projects are setup to support that feat. Waterfall projects aren't, well this project isn't anyway, seems a shame to speak for all falling water.&lt;br /&gt;&lt;br /&gt;Of coarse the reality has proved itself over the optimistic plan. It has a way of doing that. The QA regression testing is required and is being attempted. Best of luck to them. They work so hard. They deserve success.&lt;br /&gt;&lt;br /&gt;I try to get the ant scripts to release to production. Not to big a job, shame I couldn't get them to work on it 6 months ago. Anyway, I am talking to the tech lead and we have to have this finished by tomorrow. There is a problem with my ant properties so he exclaims that he will manually complete the production deployment so we don't need ant.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    "We don't release to production often anyway, so it doesn't matter"&lt;/blockquote&gt;&lt;br /&gt;I suggest that the less you deploy the more important the scripts, after all we got dev deployments reliable months ago, and we really want production deployments to work first time every time right?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;   "Yes, that's right, but we need it by tomorrow. We can try again in two weeks."&lt;/blockquote&gt;&lt;br /&gt;He really does have the best intentions. He has been put in a predicament. No production release practice for 10 months, now we have about a week to get it right.&lt;br /&gt;&lt;br /&gt;Why does our industry do this to itself? They can't predict where the next problem will be before it arrives. Experience? No, they have lots. Understanding? No they are smart people. They have always done it this way. This is how software projects always work. This is just the life of a software developer. It is all we can expect. Why change.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;    If it weren't for change,&lt;br /&gt;    I couldn't tell that I am standing still.&lt;br /&gt;    If it weren't for standing still,&lt;br /&gt;    I couldn't tell that the world around me was leaving me behind.&lt;br /&gt;&lt;br /&gt;    I see what I see with clarity,&lt;br /&gt;    I understand what I understand with certainty,&lt;br /&gt;    With this clarity of certainty,&lt;br /&gt;    I stand and watch and re-affirm my motionless state.&lt;br /&gt;&lt;br /&gt;    If I stand on the certainty,&lt;br /&gt;    That my knowledge is true,&lt;br /&gt;    Then my only conclusion must be,&lt;br /&gt;    That all that I see is foolish change.&lt;br /&gt;&lt;br /&gt;    The gulf between knowledge and change, stands in a persons need,&lt;br /&gt;    A persons need depends on their situations urgency,&lt;br /&gt;    A situations urgency is created by those who don't change,&lt;br /&gt;    so the lack of change is our choice, because that has always been our situation.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3466409160142904857?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3466409160142904857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3466409160142904857&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3466409160142904857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3466409160142904857'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/03/waterfall-symptoms.html' title='Waterfall Symptoms'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5872998012953303545</id><published>2007-07-28T11:38:00.000-04:00</published><updated>2007-08-22T11:02:56.157-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>New Knowledge vs Productivity</title><content type='html'>Update: 08/22/2007: add references to J curve&lt;br /&gt;&lt;br /&gt;I can get task X done using knowledge I already have. I would take longer if I used a technique that I don't currently know.&lt;br /&gt;&lt;br /&gt;However, if I learned a new technique I might complete task Y so fast that the slowdown on task X is insignificant.&lt;br /&gt;&lt;br /&gt;This is the balance of the J curve. The J idea proposes that your productivity remains flat until you learn something new. At the beginning of your learning your productivity decreases until your skills are sufficient to surpass your original productivity.&lt;br /&gt;&lt;br /&gt;The amount we produce is related to our current position on the J's learning curve and the number of J's in our past.&lt;br /&gt;&lt;br /&gt;So, worst case, you could imagine living on the downward slant of the J forever. There is always something new to learn after all, why produce when you can learn. I guess pure research organizations work like this.&lt;br /&gt;&lt;br /&gt;The other worst case, is never entering the J. Living your life with a static set of knowledge.&lt;br /&gt;&lt;br /&gt;OK, so how often should we dive into the J?&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Life needs to exist,&lt;br /&gt;In a rising J,&lt;br /&gt;With every day,&lt;br /&gt;Finding another rise.&lt;/blockquote&gt;&lt;br /&gt;If the bad poetry doesn't make sense then consider learning 5 things at once and every day push one of your tracks past the base of the curve.&lt;br /&gt;&lt;br /&gt;Growth ends with the belief that you will be less productive by learning.&lt;br /&gt;&lt;br /&gt;Do something new today, even if it hurts. Oh, and it will hurt.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;   Meilir Page-Jones: &lt;a href="http://www.waysys.com/ws_content_al_sse.html"&gt;The Productivity Curve&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   Gerry Weinberg: quoted as part of his pinball analog&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5872998012953303545?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5872998012953303545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5872998012953303545&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5872998012953303545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5872998012953303545'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/07/new-knowledge-vs-productivity.html' title='New Knowledge vs Productivity'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1780582753833141050</id><published>2007-07-28T10:28:00.001-04:00</published><updated>2007-07-28T10:41:40.371-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Amazing Image Integration</title><content type='html'>This movie has been around since May but I just found it and just in&lt;br&gt;case others havn&amp;#39;t seen it, here it is.&lt;p&gt;  &lt;p&gt;&lt;a href="http://www.ted.com/index.php/talks/view/id/129"&gt;http://www.ted.com/index.php/talks/view/id/129&lt;/a&gt;&lt;p&gt;The future of connected imagery is here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1780582753833141050?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1780582753833141050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1780582753833141050&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1780582753833141050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1780582753833141050'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/07/amazing-image-integration.html' title='Amazing Image Integration'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4794920063938850782</id><published>2007-07-06T13:58:00.000-04:00</published><updated>2007-07-06T14:20:42.217-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Twitter</title><content type='html'>Yes, I am now sending tweets. Not sure why but it appears to be addicting.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/home"&gt;Twitter&lt;/a&gt; is another social network but is far more focused in its goals. It just asks "What are you doing" and with frequent updates you end up with a general idea of what your friends are doing. &lt;br /&gt;&lt;br /&gt;Perhaps this is just too much information and no one really cares but I think that is what it is all about. Why does and now much will they be able to pay?&lt;br /&gt;&lt;br /&gt;With a simple beginning there are now addons to the twitter service like a search of all the things that people are doing and, my personal favorite mashup, &lt;a href="http://twittervision.com/"&gt;TwitterVision&lt;/a&gt; which merges the posts with the geo locations of the poster and swoops you around the world from language to language and irrelevant activity to irrelevant activity.&lt;br /&gt;&lt;br /&gt;But don't count this thing out yet. Check out my personal &lt;a href="http://twittervision.com/esumerfd"&gt;twitter vision&lt;/a&gt;. There are many times that we need to keep track of things. Oh, did we think this was limited to people? When are you going to get that new watch that will tweet so you never loose it. Should FedEx make their packages tweet? It's just a 140 character piece of text but twitter vision encodes ":L[position]" into it as a really simple way to track things.&lt;br /&gt;&lt;br /&gt;FexEx, of course, built their own package tracking system back in the days when web services were new and SOA was a Canadian SO. If the task was started again today would they have chosen to leverage existing web services.&lt;br /&gt;&lt;br /&gt;Each web service we build we examine granularity as an architectural problem. Perhaps the success of twitter indicates we should stop examining and just think smaller.&lt;br /&gt;&lt;br /&gt;Who knows perhaps your next watch will make a request for the time somewhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4794920063938850782?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4794920063938850782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4794920063938850782&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4794920063938850782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4794920063938850782'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/07/twitter.html' title='Twitter'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3897166098844535770</id><published>2007-07-06T10:12:00.001-04:00</published><updated>2007-07-06T14:21:39.887-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Visual Studio 2005 and ReSharper</title><content type='html'>I have used &lt;a href="http://www.jetbrains.com/resharper/"&gt;ReSharper&lt;/a&gt; with VS 03 in the past but decided to try the new VS 05 features before installing the new ReSharper version. After fighting with the stupid stupid VS features my course is clear. &lt;br /&gt;&lt;br /&gt;ReSharper is to C# what Eclipse is to Java. A rebirth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3897166098844535770?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3897166098844535770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3897166098844535770&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3897166098844535770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3897166098844535770'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/07/visual-studio-2005-and-resharper.html' title='Visual Studio 2005 and ReSharper'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1053527104178132026</id><published>2007-06-26T14:12:00.000-04:00</published><updated>2007-07-06T14:21:18.742-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java, C#, Groovy, Ruby, Python</title><content type='html'>Is the question "which" or "which ones"?&lt;br /&gt;&lt;br /&gt;I am a member of a local user group that exclusively pitches Ruby as the savior of all things linguistic. I had made a strategic decision to learn Groovy instead because it integrates better into my primary language, Java.&lt;br /&gt;&lt;br /&gt;This has worked pretty well for me up to now with a couple of jobs getting groovyized nicely.&lt;br /&gt;&lt;br /&gt;Well, &lt;a href="http://mysterycoder.blogspot.com"&gt;Chris Nelson&lt;/a&gt;, mentioned something to me a few user groups ago that just sunk in today. An extension to the logic of why I chose Groovy.&lt;br /&gt;&lt;br /&gt;If we assume the future is a combination of the best of today. Perhaps a tenuous bet but I am an optimist. Then we have to assume that a VM is the correct runtime environment for future systems. This knocks out c-Ruby from the running. &lt;br /&gt;&lt;br /&gt;If we think that dynamically typed languages win over statically typed languages then we have to choose Python, Ruby or Groovy as the most blogged about at the moment. I am completely sold on dynamic languages and have been for years.&lt;br /&gt;&lt;br /&gt;I asked Chris why he choose JRuby/Rails over Groovy/Grails since he is a Java developer from long back (&lt;a href="http://www.trailsframework.org/"&gt;Trails&lt;/a&gt;). He answered, "It's a different language".&lt;br /&gt;&lt;br /&gt;My first impression was that Ruby was a different language as well so what's your point. Then today, while reading &lt;a href="http://headius.blogspot.com/2007/06/response-to-olas-ironruby-post.html"&gt;Charles Nutter's response&lt;/a&gt; to Ola's IronRuby post it occurred to me that the language Ruby is key for the simple reason that it is likely to be the first multi-vm language   and already represents the best of what a dynamic language can offer.&lt;br /&gt;&lt;br /&gt;Based on this there is one choice, quit groovy, learn Ruby in what ever form and the runtime environment will follow.&lt;br /&gt;&lt;br /&gt;Did anyone notice how I dropped python so fast? Dynamically typed and runs on JVM (&lt;a href="http://www.jython.org/"&gt;Jython&lt;/a&gt;) and CLR (&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython"&gt;IronPython&lt;/a&gt;)  today but I hate tabs :-)&lt;br /&gt;&lt;br /&gt;Unfortunately, the question is "which ones". Things move to fast to play just one pipe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1053527104178132026?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1053527104178132026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1053527104178132026&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1053527104178132026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1053527104178132026'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/06/java-c-groovy-ruby-python.html' title='Java, C#, Groovy, Ruby, Python'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-1067578581047671518</id><published>2007-06-20T11:15:00.000-04:00</published><updated>2007-06-20T11:36:32.322-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Standup Meetings, for Accountability not Communication</title><content type='html'>We Agile folks like out stand-up meetings but when asked why we do it we usually start talking about communication being a core principle.&lt;br /&gt;&lt;br /&gt;A recent project involved a customer that was tentatively interested in Agile so started doing stand-ups. When it came to a month or so before my departure I stopped leading to help encourage the team to take ownership of the new processes that they had been learning.&lt;br /&gt;&lt;br /&gt;The first thing that went was the stand-up meetings and the result of this lead me to the decision that we don't stand-up for communication. The best reason for stand-up meetings is to force every programmer to prove that they are working to the plan instead of just working.&lt;br /&gt;&lt;br /&gt;This forces plan driven work which is prioritized and focused. My customer quickly descended back into panic driven work with programmers being approached by QA reps telling them of the latest problem and urging them into action. The plan was forgotten.&lt;br /&gt;&lt;br /&gt;The chatter and sharing is nice and there are certainly other benefits to stand-ups but from a management perspective we do this to ensure that we are driving accountability for everything that we do each day.&lt;br /&gt;&lt;br /&gt;The shorter iterations of Agile drive accountability to the customer. The daily discussion on what we are focusing on drives programmers accountability to themselves and their team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-1067578581047671518?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/1067578581047671518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=1067578581047671518&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1067578581047671518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/1067578581047671518'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/06/standup-meetings-for-accountability-not.html' title='Standup Meetings, for Accountability not Communication'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4816857117860242690</id><published>2007-06-19T15:26:00.000-04:00</published><updated>2007-07-28T10:27:10.600-04:00</updated><title type='text'>Star Wars ! What really happened after the Deathstar blew up</title><content type='html'>This is really funny.&lt;br /&gt;&lt;br /&gt;[snipped old dead version]&lt;br /&gt;&lt;br /&gt;The moral of this story that before long everything will be a copy. Thanks for the comment Mr Anonymous.&lt;br /&gt;&lt;br /&gt;   &lt;a href="http://video.yahoo.com/video/play?vid=437857&amp;fr="&gt;The yahoo version is still active.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4816857117860242690?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4816857117860242690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4816857117860242690&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4816857117860242690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4816857117860242690'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/06/star-wars-what-really-happened-after.html' title='Star Wars ! What really happened after the Deathstar blew up'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3943153893555507471</id><published>2007-06-15T14:11:00.000-04:00</published><updated>2007-07-28T10:42:31.366-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>TIP: Dos Sleep</title><content type='html'>I needed a batch file to sleep between starting up a couple of processes but dos doesn't support sleep. Google found me &lt;a href="http://malektips.com/dos0017.html"&gt;this&lt;/a&gt; result which gave me the idea but their solution is wrong.&lt;br /&gt;&lt;br /&gt;The actual answer is this:&lt;blockquote&gt;    ping 1.1.1.1 -n 1 -w 10000 &gt; nul&lt;/blockquote&gt;In this case we are pinging a non-existent IP address, once, and timing out in 10000 milliseconds.&lt;br /&gt;&lt;br /&gt;Of coarse you could pop this into a sleep.bat to centralize it&lt;blockquote&gt;    cd c:\windows\system32&lt;br /&gt;   copy con sleep.bat&lt;br /&gt;   @echo off&lt;br /&gt;   ping 1.1.1.1 -n 1 -w %1% &gt; nul&lt;br /&gt;   ctrl-Z&lt;/blockquote&gt;Now you can just type "sleep 5000" to sleep for 5 seconds.&lt;br /&gt;&lt;br /&gt;The actual resolution of this timer is one second or more. Any number less than one second is going to end up with a 1 second'ish delay.&lt;br /&gt;&lt;br /&gt;The cost of this is one network ping with a standard 32 byte payload. The total message is 74 bytes on a Windows XP machine. This is low cost for a couple of sleeps in your program. If you want to do this all the time then you may want a less hackey solution.&lt;br /&gt;&lt;br /&gt;The better solution might be to use the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;displaylang=en"&gt;Windows Resource Kit&lt;/a&gt; which includes a sleep.exe command.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3943153893555507471?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3943153893555507471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3943153893555507471&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3943153893555507471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3943153893555507471'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/06/tip-dos-sleep.html' title='TIP: Dos Sleep'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4596273302534707225</id><published>2007-06-14T10:23:00.000-04:00</published><updated>2007-06-14T10:25:49.584-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Speed of Time</title><content type='html'>If you could set the speed of time,&lt;br /&gt;how long would it take you to change it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4596273302534707225?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4596273302534707225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4596273302534707225&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4596273302534707225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4596273302534707225'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/06/speed-of-time.html' title='Speed of Time'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5554735072160932773</id><published>2007-05-11T21:22:00.000-04:00</published><updated>2007-05-11T23:40:01.497-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>MonoRails - .Net is cool after all</title><content type='html'>After two days of fighting with msbuild I thought that I was going to loose hope but along comes MonoRails. We all know that Rails rocks, we have loved tinkering with Grails and now we find that wherever we go someone is building another version of this idea.&lt;br /&gt;&lt;br /&gt;For the uninitiated, go and learn Rails first, it's the granddaddy of them all. These are new ways to build web applications, they obey the idea that conventions can be more productive and just as flexible as configuration files so you type in the name of something and it magically gets extra powers just because you spelled it correctly. Don't be afraid of the magic, it is your friend.&lt;br /&gt;&lt;br /&gt;So, MonoRails is more of the same but here are a couple of differences that I noticed on my first night at playing with it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It is normal statically typed C#. All these frameworks use dynamically typed languages to achieve much of the magic. Injecting methods, imbuing properties, you name it they do it. The static language approach is certainly going to offer some additional challenges and, some might say, reduce the benefit of this implementation of the new approach.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Parameters posted from a form are dynamically mapped to a controller method and passed in as parameters. Perhaps not ideal for large forms but certainly the simpler ones can use this instead of having to deal with a property hash. They can also mangle the form names into an object like good old structs forms.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Ends up at the same place. After a couple of hours going through tutorials I have another tabled scaffolded.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5554735072160932773?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5554735072160932773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5554735072160932773&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5554735072160932773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5554735072160932773'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/05/monorails-net-is-cool-after-all.html' title='MonoRails - .Net is cool after all'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-5664325394935612328</id><published>2007-05-10T08:45:00.000-04:00</published><updated>2007-05-24T13:46:45.666-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Tripping in .Net</title><content type='html'>It has been a few years now but I have another opportunity to play on a .Net project. Being so used to the Java way this is going to take a little getting used to. My colleges keep &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;snickering&lt;/span&gt; at me. It has something to do with the audible sound I make when frustration sets in. "Oh but this is so easy with ant, what evil is this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;msbuild&lt;/span&gt; trying to foist on us", "This would be so much easier in Eclipse".&lt;br /&gt;&lt;br /&gt;It's the little things. I want to copy a file and replace a string within it. A simple template replacement process or in java terms, ant copy filter. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NAnt&lt;/span&gt; doesn't support it either so I feel the need to learn &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;msbuild&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So I have a fred.msbuild file but you open it in VS and it gives you schema errors on all the property tags because msbuild uses the tag name as the property name. So where is the MSBuild editor? MS makes everything a dialog and thats too hard for build scripts. I just need an editor.&lt;br /&gt;&lt;br /&gt;The script can now "Copy" a template file, then "FileUpdate" is to do string replaces in it. Oh I have a lot to learn.&lt;br /&gt;&lt;br /&gt;I fully expect to be assimilated in another few weeks and will start extolling the beauty of this new world. Until then, it is painful while the new gadgets are being surgically implanted into my brain.&lt;br /&gt;&lt;br /&gt;I am looking forward to the new C# language features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-5664325394935612328?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/5664325394935612328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=5664325394935612328&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5664325394935612328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/5664325394935612328'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/05/tripping-in-net.html' title='Tripping in .Net'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-2019150179015068988</id><published>2007-04-29T23:11:00.000-04:00</published><updated>2007-04-29T23:24:46.407-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Sieve of Eratosthenes - After thoughts</title><content type='html'>The most interesting part of this exercise was that each attempt performed better and better until I the DSL version. Even the objectisizing and then groovyizing resulted in better response times. Now perhaps I doing something silly in the DSL version because the extra method dispatch for the DSL keywords shouldn't slow it down 5 times.&lt;br /&gt;&lt;br /&gt;It is clear that the need to use a DSL for this problem is irrational.&lt;br /&gt;&lt;br /&gt;Here are the tests for the Sieve of Eratosthenes problems and the results&lt;br /&gt;&lt;pre&gt;.Time: 488.8ms: Algorithm: Sieve1 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]&lt;br /&gt;.Time: 248.4ms: Algorithm: Sieve2 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]&lt;br /&gt;.Time: 270.4ms: Algorithm: Sieve3 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]&lt;br /&gt;.Time: 1145.6ms: Algorithm: Sieve5 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]&lt;br /&gt;&lt;/pre&gt;&lt;script src="http://www.bytemycode.com/api/blogit/652/1/" type="text/javascript"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-2019150179015068988?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/2019150179015068988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=2019150179015068988&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2019150179015068988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/2019150179015068988'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/04/sieve-of-eratosthenes-after-thoughts.html' title='Sieve of Eratosthenes - After thoughts'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4993993850735934964</id><published>2007-04-29T22:56:00.000-04:00</published><updated>2007-04-29T23:24:30.200-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Sieve of Eratosthenes - Try 4 - DSL</title><content type='html'>Now to re-describe the basic parts of the algorithm into domain terms. Not saying its better just cooler.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.bytemycode.com/api/blogit/651/1/" type="text/javascript"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4993993850735934964?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4993993850735934964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4993993850735934964&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4993993850735934964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4993993850735934964'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/04/sieve-of-eratosthenes-try-4-dsl.html' title='Sieve of Eratosthenes - Try 4 - DSL'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-4005175410832859972</id><published>2007-04-29T22:55:00.000-04:00</published><updated>2007-04-29T23:24:06.763-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Sieve of Eratosthenes - Try 3 - Groovyize</title><content type='html'>How about those groovy categories, the really allow you to put the code in the place you want it. Note I didn't say the right place?&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.bytemycode.com/api/blogit/650/1/" type="text/javascript"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-4005175410832859972?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/4005175410832859972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=4005175410832859972&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4005175410832859972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/4005175410832859972'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/04/sieve-of-eratosthenes-try-3-groovyize.html' title='Sieve of Eratosthenes - Try 3 - Groovyize'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7966820.post-3582644735726457889</id><published>2007-04-29T22:54:00.000-04:00</published><updated>2007-04-29T23:23:23.261-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='groovy'/><title type='text'>Sieve of Eratosthenes - Try 2 - Objectize</title><content type='html'>Add in some OO, not much, just a sprinkling.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.bytemycode.com/api/blogit/649/1/" type="text/javascript"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7966820-3582644735726457889?l=esumerfield.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://esumerfield.blogspot.com/feeds/3582644735726457889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7966820&amp;postID=3582644735726457889&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3582644735726457889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7966820/posts/default/3582644735726457889'/><link rel='alternate' type='text/html' href='http://esumerfield.blogspot.com/2007/04/sieve-of-eratosthenes-try-2-objectize.html' title='Sieve of Eratosthenes - Try 2 - Objectize'/><author><name>Edward Sumerfield</name><uri>http://www.blogger.com/profile/08964122250075165713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://4.bp.blogspot.com/_IWJV2VJlogg/SXiqHCNlsvI/AAAAAAAAASw/uYfCKHjzc9w/S220/Pilot.jpg'/></author><thr:total>0</thr:total></entry></feed>
