<?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-2144813210603379421</id><updated>2011-12-28T23:26:20.961+11:00</updated><category term='2009'/><category term='How To'/><category term='Mapping'/><category term='Software Engineering'/><category term='Download'/><category term='Hack'/><category term='Buzz Numbers'/><category term='Cygwin'/><category term='Optus'/><category term='Surgery'/><category term='Girl Geek Dinners'/><category term='Pointless'/><category term='Windows'/><category term='Apple'/><category term='Trust'/><category term='Gatherings'/><category term='ASP.NET'/><category term='Web'/><category term='Testing'/><category term='Quality'/><category term='Story'/><category term='Positivity'/><category term='Languages'/><category term='grep'/><category term='ORM'/><category term='Coach'/><category term='Mac'/><category term='About Me'/><category term='Work'/><category term='Communication'/><category term='Documentation'/><category term='Fanboys'/><category term='dotnet'/><category term='Video'/><category term='iPassed2'/><category term='Embedding'/><category term='Darwin'/><category term='jQuery'/><category term='Project Management'/><category term='Version Control'/><category term='&quot;Steve Jobs&quot; Apple'/><category term='Teams'/><category term='Design'/><category term='Car Park'/><category term='bash'/><category term='Development'/><category term='dynamic typing'/><category term='Learning'/><category term='Ada Lovelace Day'/><category term='Bugs'/><category term='Agile'/><category term='Pictures'/><category term='Generalise'/><category term='.NET'/><category term='Namespaces'/><category term='UNIX'/><category term='Geek Girl'/><category term='Twitter'/><category term='Intro'/><category term='Microsoft'/><category term='MVC'/><category term='Telecoms'/><category term='Email'/><category term='Naming Containers'/><category term='2011'/><category term='Source Control'/><category term='Story Wall'/><category term='Reading Level'/><category term='SQL Server'/><category term='Consulting'/><category term='Ponder'/><category term='Craft'/><category term='Build'/><category term='Security'/><category term='Interview'/><category term='TripleJ'/><category term='Lindsay Ratcliffe'/><category term='Leadership'/><category term='Uninstall Instance'/><category term='Language'/><category term='Suzi'/><category term='Objective-C'/><category term='VS.NET 2010'/><category term='Software'/><category term='Buying'/><category term='Cloud'/><category term='Coding'/><category term='Mobile'/><category term='Effort'/><category term='&quot;User Group&quot;'/><category term='Social'/><category term='Continuous Integration'/><category term='SQL Server 2008'/><category term='Visual'/><category term='Server'/><category term='2010'/><category term='YouTube'/><category term='Lights'/><category term='Search'/><category term='Fun'/><category term='Algorithms'/><category term='Google'/><category term='Models'/><category term='Westfield'/><category term='Blogging'/><category term='C#'/><category term='Thoughtworks'/><category term='Maths'/><category term='ReSharper'/><category term='Ruby'/><category term='Database'/><category term='Discussion'/><category term='Tools'/><category term='SQL Server 2008 R2'/><category term='Rant'/><category term='llblgen'/><category term='iPad'/><category term='Craftsman'/><category term='Books'/><title type='text'>Geek Diva</title><subtitle type='html'>Geek girls do IT better!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default?start-index=101&amp;max-results=100'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>136</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3886779060285372243</id><published>2011-12-24T14:23:00.006+11:00</published><updated>2011-12-24T14:51:16.472+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><title type='text'>Improve with Humility</title><content type='html'>&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/-oYeQGmoq1h8/TvVLUkVi4uI/AAAAAAAAEho/QqNoptEPtiI/s400/111722036_c8b03db307.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5689536520975999714" /&gt;&lt;br /&gt;There is only one way to become better and better at what you do, and that is to learn and improve every day.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many people in different professions will tell you that they learn every day. Others will tell you that they don't need to learn anymore. Then there are those who say they learn and learn and know so much more than others. Sometimes it is a mix.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I watch. I see the people who are good and who are what I want to be more like. They all possess one thing that truly does allow them to learn. It is humility.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The more you learn, the more you realise that you know nothing. There is so much more to learn and if we do not realise that, we can not extend ourselves.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just be open to the fact that you do not know it all and have so far to go. That is the best lesson.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3886779060285372243?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3886779060285372243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3886779060285372243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3886779060285372243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3886779060285372243'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/12/improve-with-humility.html' title='Improve with Humility'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-oYeQGmoq1h8/TvVLUkVi4uI/AAAAAAAAEho/QqNoptEPtiI/s72-c/111722036_c8b03db307.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-9078734502806532608</id><published>2011-11-21T13:20:00.000+11:00</published><updated>2011-11-21T14:56:19.005+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Learning'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Surgery'/><category scheme='http://www.blogger.com/atom/ns#' term='Coach'/><title type='text'>How To Operate</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-9cRKfOuy7eo/TsnKHU6E9DI/AAAAAAAAEfo/oxU5iYOCY24/s1600/doctor.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 244px;" src="http://1.bp.blogspot.com/-9cRKfOuy7eo/TsnKHU6E9DI/AAAAAAAAEfo/oxU5iYOCY24/s400/doctor.jpg" alt="" id="BLOGGER_PHOTO_ID_5677291032497419314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There is a lot more to agile than a bunch of practices that people claim   they have been doing for eternity and someone has just put a name to.   There is a lot more to agile than doing a Scrum course over a week and   getting a certificate. There is a lot more to agile than reading a few   blogs, buying a bunch of books and going to a conference.&lt;br /&gt;&lt;br /&gt;I don't believe in &lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;big A&lt;/span&gt;&lt;/span&gt;   agile. There is no one methodology for software construction. There is   no one method for anything in life. There are however a whole lot of   practices that when used in combination with others and in the presence   of a certain level of awareness of the required patterns and undesired   anti-patterns, you can run a successful agile project that results in   emergent quality and software that business wants.&lt;br /&gt;&lt;br /&gt;The one thing  that I am seeing over and over recently is people coming  to me and  saying that they are doing agile but it isn't working. They  have people  on the team who have done agile before. They have people on  the team  who are trained Scrum Masters. They have people on the team who  have  bought in and want to do agile. All of these good things and yet,  they  are failing.&lt;br /&gt;&lt;br /&gt;I freely use the word &lt;span style="font-style: italic;"&gt;failing&lt;/span&gt;   without it feeling like that is a bad thing. It isn't. Failing is a  way  of learning and people who can step back and say that they tried   something and it didn't work, are the kind of people who learn and improve.&lt;br /&gt;&lt;br /&gt;To actually achieve a cohesive agile environment and a team that can find their peak and attain that, you need the glue that is an agile coach or iteration manager. Some people call it the &lt;span style="font-style: italic;"&gt;scrum master&lt;/span&gt; but that term is so easily obtained these days that I do not think it holds much credibility.&lt;br /&gt;&lt;br /&gt;No matter what you call that glue, they are the person who keeps the the team moving and finds the sweet spot that is the practices and level of rigour that will work for that team in the specific environment they are in.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;The famous cry of "I've been doing agile forever and they just gave it a name" is so so wrong.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You can not just grab a bunch of practices and call that agile. The famous cry of "I've been doing agile forever and they just gave it a name" is so so wrong. Agile is not just a bunch of practices and terms and things to do. It is the whole process of constant reassessment, learning, rigour, retrospective analysis and self-organisation. It is something that you must experience and learn before you try it yourself and then help others.&lt;br /&gt;&lt;br /&gt;I always refer back to the method that surgeons use to train other surgeons to do an operation.&lt;br /&gt;&lt;br /&gt;The method is that &lt;span class="st"&gt;you "&lt;span style="font-style: italic;"&gt;see&lt;/span&gt; one, &lt;em&gt;do&lt;/em&gt; one, &lt;em&gt;teach&lt;/em&gt; one".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;See One&lt;/span&gt;&lt;br /&gt;Participate in an agile team as a team member. Seniority does not matter. You can be an expert at anything or nothing and that doesn't change the fact that you take part in the team and learn how practices work together and how to see patterns and anti-patterns that let you choose what shapes the team.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Do One&lt;/span&gt;&lt;br /&gt;This time, you organise the agile team and help propel it. Remove blockers; Suggest practices and tools for the context and team; Measure the quantifiable parts and communicate them; and be the glue. This can be done with the support and supervision of a person who knows how to teach or coach. They can back you up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Teach One&lt;/span&gt;&lt;br /&gt;Be the teacher and coach others to be members of an agile team. Let them learn about their environment and adapt to a changing environment. Your job is to enable and act as lubricant for others who are learning.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/-_BEr2_p-SwQ/TsnK3RzXdbI/AAAAAAAAEf0/74m5IU-pt5M/s1600/comic%2Bdoctors.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://4.bp.blogspot.com/-_BEr2_p-SwQ/TsnK3RzXdbI/AAAAAAAAEf0/74m5IU-pt5M/s400/comic%2Bdoctors.jpg" alt="" id="BLOGGER_PHOTO_ID_5677291856297686450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="st"&gt;If you understand that this is the process that must happen before people are fully enabled to work in an agile way then you will understand why teams without this but with the best intentions still fail.&lt;br /&gt;&lt;br /&gt;It also explains why having an agile expert on the team can be a peaceful process that makes the whole thing feel easy. When they leave, it sometimes feels a little unstable. They shouldn't hold all the information back or be &lt;span style="font-style: italic;"&gt;in control&lt;/span&gt;. A coach should enable you and let you find your way, with a safety net.&lt;br /&gt;&lt;br /&gt;I had a project manager say to me recently "Damana, the reason why what you do looks easy, is because it is". I smiled kindly and sadly watched him eat his words later when he took over and ran the project on to rocks.&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;The reason an agile coach makes it look easy is because they &lt;span style="font-weight: bold;"&gt;saw one&lt;/span&gt; and then &lt;span style="font-weight: bold;"&gt;did one&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;taught one&lt;/span&gt;, several times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-9078734502806532608?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/9078734502806532608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=9078734502806532608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9078734502806532608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9078734502806532608'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/11/how-to-operate.html' title='How To Operate'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-9cRKfOuy7eo/TsnKHU6E9DI/AAAAAAAAEfo/oxU5iYOCY24/s72-c/doctor.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3840950832205285194</id><published>2011-10-11T12:31:00.003+11:00</published><updated>2011-10-11T12:42:19.758+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Generalise'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Models'/><category scheme='http://www.blogger.com/atom/ns#' term='Discussion'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Too General</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-6qQDRPe61zQ/TpOeYaunclI/AAAAAAAAEbI/54GPZqIMb-k/s1600/3814030230_192dcbe1df.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://2.bp.blogspot.com/-6qQDRPe61zQ/TpOeYaunclI/AAAAAAAAEbI/54GPZqIMb-k/s400/3814030230_192dcbe1df.jpg" alt="" id="BLOGGER_PHOTO_ID_5662043298863739474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-AU&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:enableopentypekerning/&gt;    &lt;w:dontflipmirrorindents/&gt;    &lt;w:overridetablestylehps/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-parent:"";  mso-padding-alt:0cm 5.4pt 0cm 5.4pt;  mso-para-margin:0cm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman","serif";} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;In the same way that we normalise and denormalise data in a relational database, we have to generalise and specify domain model design in the application.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Developers have a tendency to want to generalise things to an extreme but this often results in losing meaning. Whenever you see something called &lt;span style="font-weight: bold;"&gt;Object&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;Entity&lt;/span&gt; then it’s gone too far.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A co-worker and I had a discussion about creating a class called &lt;span style="font-style: italic;"&gt;LookupItem &lt;/span&gt;to represent all reference data. There is no domain meaning in the term &lt;span style="font-style: italic;"&gt;LookupItem&lt;/span&gt;. It is not a word that our business users would use so it isn’t a word we should use. If you find that commonality then let all your domain model classes inherit from a base class but still have their own class with a meaningful domain object name.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;You will end up with lots of small classes but you retained a lot of meaning. Someone who walks in after you and goes to maintain the system will not have to read through the code and see what your named variables to see what a class is used for. It is in the class name.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There is also extensibility inbuilt in to this kind of structure. Often extensibility is required when there is an exception to a rule. Always build your generalisation so they can cope with exceptions to the rules.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Generalise but don’t lose meaning.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://3.bp.blogspot.com/-O4bi390Fe6I/TpOeYBspMCI/AAAAAAAAEa8/B0oiWSNycN8/s1600/3813219601_a83599519b.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://3.bp.blogspot.com/-O4bi390Fe6I/TpOeYBspMCI/AAAAAAAAEa8/B0oiWSNycN8/s400/3813219601_a83599519b.jpg" alt="" id="BLOGGER_PHOTO_ID_5662043292144578594" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3840950832205285194?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3840950832205285194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3840950832205285194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3840950832205285194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3840950832205285194'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/10/too-general.html' title='Too General'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-6qQDRPe61zQ/TpOeYaunclI/AAAAAAAAEbI/54GPZqIMb-k/s72-c/3814030230_192dcbe1df.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-565851313167307323</id><published>2011-10-06T11:01:00.003+11:00</published><updated>2011-10-06T11:10:42.551+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;Steve Jobs&quot; Apple'/><title type='text'>RIP Steve Jobs</title><content type='html'>He lived a life that changed the world so much that I can not imagine how it would be without him.&lt;br /&gt;&lt;br /&gt;My first IT job was in tech support at an Apple Centre.&lt;br /&gt;My first personal computer was an Apple IIC.&lt;br /&gt;My first smartphone was an iPhone.&lt;br /&gt;My first laptop was a Mac.&lt;br /&gt;&lt;br /&gt;At thirteen years old, I had a huge crush on Steve Jobs and told my parents that I was going to marry him. I still held out hopes until now.&lt;br /&gt;&lt;br /&gt;He made a difference. He made me&lt;span style="font-style: italic;"&gt; Think Different.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-565851313167307323?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/565851313167307323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=565851313167307323' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/565851313167307323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/565851313167307323'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/10/rip-steve-jobs.html' title='RIP Steve Jobs'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4142340850859114342</id><published>2011-09-23T12:50:00.004+10:00</published><updated>2011-09-23T12:57:33.563+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='ReSharper'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>A Process for creating an MVC View of Partial View</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/damana/6173638549/in/photostream/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://2.bp.blogspot.com/-ZzkAMXbPNIo/Tnv0ARAvDBI/AAAAAAAAEac/_lcI9t4Tygs/s400/MVC%2BViews.jpg" alt="" id="BLOGGER_PHOTO_ID_5655382042497453074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Developers were adding New MVC Views to the web application project manually and that is an anti-pattern. We want to make sure that Controllers own Actions that own Views that are bound to strongly typed view models.&lt;br /&gt;&lt;br /&gt;This is where this process comes from. ReSharper is required in this process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4142340850859114342?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4142340850859114342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4142340850859114342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4142340850859114342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4142340850859114342'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/process-for-creating-mvc-view-of.html' title='A Process for creating an MVC View of Partial View'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZzkAMXbPNIo/Tnv0ARAvDBI/AAAAAAAAEac/_lcI9t4Tygs/s72-c/MVC%2BViews.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-840091524548353284</id><published>2011-09-22T09:12:00.004+10:00</published><updated>2011-09-22T09:25:44.171+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual'/><category scheme='http://www.blogger.com/atom/ns#' term='Story Wall'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='Models'/><category scheme='http://www.blogger.com/atom/ns#' term='Pictures'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Craft'/><category scheme='http://www.blogger.com/atom/ns#' term='Language'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Darwin'/><category scheme='http://www.blogger.com/atom/ns#' term='Namespaces'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>A Thousand Words</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogger.com/img/blank.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 288px; height: 400px;" src="http://1.bp.blogspot.com/-lFDZlyE_fws/Tnpv-kvWqUI/AAAAAAAAEaU/Stl55XyuIjM/s400/models.jpg" alt="" id="BLOGGER_PHOTO_ID_5654955402921945410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When I find myself explaining a concept over and over again to the same or different members of my team, it is a signal that I need to draw a picture.&lt;br /&gt;&lt;br /&gt;Often, I draw the picture for a few people before it clicks that I should put it on an A3 piece of paper and stick it on a wall or take a photo and send it around in an email.&lt;br /&gt;&lt;br /&gt;In the case above, I was explaining mapping between model classes coming out of different layers of the application. All sorts of words were being used to refer to these objects and it was getting confusing.&lt;br /&gt;&lt;br /&gt;This image has given us an explanation of where mapping classes exist; what models coming out of different layers are called; namespaces to be used when creating or referring to mappers and models; and a common language for technical discussion.&lt;br /&gt;&lt;br /&gt;To write that in a document would be long and cumbersome.&lt;br /&gt;&lt;br /&gt;When you aren't explaining it in code, explain it in pictures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-840091524548353284?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/840091524548353284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=840091524548353284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/840091524548353284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/840091524548353284'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/thousand-words.html' title='A Thousand Words'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-lFDZlyE_fws/Tnpv-kvWqUI/AAAAAAAAEaU/Stl55XyuIjM/s72-c/models.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8022262265378659149</id><published>2011-09-20T09:17:00.004+10:00</published><updated>2011-09-20T09:21:55.908+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Email'/><category scheme='http://www.blogger.com/atom/ns#' term='Teams'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='Source Control'/><title type='text'>The Check-In Procedure for my team</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Q_m50RepJvQ/TnfOgQ7NSlI/AAAAAAAAEaM/bf2H_iC0lq4/s1600/Check%2BIn%2BProcedure.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 356px; height: 400px;" src="http://4.bp.blogspot.com/-Q_m50RepJvQ/TnfOgQ7NSlI/AAAAAAAAEaM/bf2H_iC0lq4/s400/Check%2BIn%2BProcedure.JPG" alt="" id="BLOGGER_PHOTO_ID_5654214910881385042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;This is an email I sent out to my team yesterday. What do you do before checking in code?&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;---&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Hello rose petals,&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;I’ve put a &lt;b&gt;&lt;span style="color:#8064A2;"&gt;stuff to do before you check-&lt;/span&gt;&lt;/b&gt;in procedure on the wall.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;In case you do not look on the wall &lt;span style="color:#558ED5;"&gt;(even though you should try to each day)&lt;/span&gt;, here is a summary of the summary…&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;1.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Merge all your code locally &lt;/b&gt;by doing a Get Latest Version from TFS;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;a.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;Resolve  any conflicts by trusting what is on the server and moving your changes  in to that code. If anything can’t auto merge or conflicts seriously  with your code then find the dev who wrote it and have a chat about how  to make it work&lt;span style="color:#558ED5;"&gt;. This is a life skill, grasshopper&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;2.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Run all the tests&lt;/b&gt; &lt;span style="color:#558ED5;"&gt;(not just your own) &lt;/span&gt;and make sure they are all still working. This process is &lt;b&gt;&lt;span style="color:#8064A2;"&gt;regression testing&lt;/span&gt;&lt;/b&gt;&lt;span style="color:#8064A2;"&gt; &lt;/span&gt;and stops you introducing a bug that causes something else with a dependency to fail;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;a.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;Functional, Integration and Unit tests should be run.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;b.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;If you do break something and fix it then write a test around that area because it seems fragile and may happen to someone else.&lt;span style="color:#558ED5;"&gt; Tests are security blankets. I’ve always wanted a teddy bear called CI.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;3.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Ensure all compiler errors and warnings are fixed&lt;/b&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;a.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;Warnings  exist for a reason. They speak of great tales of possible performance  errors and sagas of linking and runtime optimisation. They are not there  for the entertainment of the devs who wrote Visual Studio or .NET, they  are for us.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;b.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;Use  ReSharper to make the little green box at the right top of each code  file green. Ask me what I mean by this if you aren’t sure.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;c.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;Use  fxcop to ensure static analysis rules are complied with. Yes, even the  ones you don’t love but we have decided are standard for our project.&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;d.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;Retro Steve will cry if you check in without these warnings resolved. I will look disappointed. &lt;span style="color:#558ED5;"&gt;Puppies will die&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span&gt;4.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;Check it in!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;5.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Show another developer your code&lt;/b&gt; for review and check out the code and run the tests on their machine;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left:72.0pt"&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;a.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;This means you have someone else to &lt;s&gt;&lt;span style="color:#558ED5;"&gt;blame&lt;/span&gt;&lt;/s&gt;&lt;span style="color:#558ED5;"&gt; &lt;/span&gt;share your future bugs with.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span&gt;6.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;b&gt;Be happy&lt;/b&gt;. You are a good human being.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#558ED5;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#558ED5;"&gt;This is why I should not take pseudoephedrine during work hours. Damn cold or hayfever or something.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8022262265378659149?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8022262265378659149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8022262265378659149' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8022262265378659149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8022262265378659149'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/check-in-procedure-for-my-team.html' title='The Check-In Procedure for my team'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Q_m50RepJvQ/TnfOgQ7NSlI/AAAAAAAAEaM/bf2H_iC0lq4/s72-c/Check%2BIn%2BProcedure.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3367033432549944921</id><published>2011-09-11T23:53:00.003+10:00</published><updated>2011-09-12T00:27:44.404+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>The Knowledge Gap</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-CX79XJw4A44/Tmy95jlMBiI/AAAAAAAAEZ0/WUvHm-yHsaU/s1600/funny-pictures-so-smart.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://1.bp.blogspot.com/-CX79XJw4A44/Tmy95jlMBiI/AAAAAAAAEZ0/WUvHm-yHsaU/s400/funny-pictures-so-smart.jpg" alt="" id="BLOGGER_PHOTO_ID_5651100428944541218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Anyone who has had a glass of wine with me at the end of a long work day will have listened to me complain about the technical level of the people playing IT professionals.&lt;br /&gt;&lt;br /&gt;Yes, "IT Professional" is a broad group of people now with lots of different specialised roles. This happens as a profession grows and as it grows, we start to see the holes in the entry level criteria that are leaving us with inexperienced professionals producing what can only be inexperienced code.&lt;br /&gt;&lt;br /&gt;That's fine, right? You throw in a senior engineer to vet what they produce before it hits source control or worst case production. You give them bench or training allowances to go off and take courses, read books and teach themselves.&lt;br /&gt;&lt;br /&gt;This is where it falls down. Teaching yourself something is a highly developed skill. Universities do not teach higher grads exactly how to develop a case management system with a specific tech stack with the exact restrictions and requirements as they will need for a specific client. No, they teach concepts and they teach you how to learn on your own and do it fast.&lt;br /&gt;&lt;br /&gt;The ability to understand complex software concepts improves with time and experience. So does the ability to pick up a concept and hone it based on reading, watching talks and trying it out. Both of these skills come quickly to good developers. There are many non-degree qualified engineers that I have worked with who are brilliant. The one thing they do better than a lot of others is to pick up a concept and actually learn and understand it.&lt;br /&gt;&lt;br /&gt;Going and reading about something and implementing it does not mean that you have done it properly. The eternal error I see in software engineering is that a developer learns how to build one thing and as they change technologies or languages, they build exactly the same thing.&lt;br /&gt;&lt;br /&gt;They miss the intricacies, beauty and benefits of the language they are using. They even miss the point completely when they solve different problem domains with the same solution. It won't work. Everything I have built is slightly different than everything else I have ever built. There are shared patterns and solutions but they are unique and require bespoke solutions. I'm not saying they need the wheel invented each time. In fact, I'm the first to argue that unless you are in R&amp;amp;D or seriously cutting edge, then almost everything you need is already done or the pieces exist to allow you to solve the problem quickly.&lt;br /&gt;&lt;br /&gt;Recently, I'm seeing developers walk off and read about something and try it out. They then come back and tell me they understand it and have solved all the problems that us senior devs have been thinking through for the last few days. At first, I was super pleased. Yay, they have saved me time and given us a new perspective then I hear the explanation or solution and it's not quite right.&lt;br /&gt;&lt;br /&gt;The concept has been explored and the idea implemented. It uses the right terms but in the wrong ways. It sets out the process or structure but only in a superficial way. It is so specific that it can not be generalised because instead of giving a solution, it has gotten to a solution without the understanding of the problem or the solution.&lt;br /&gt;&lt;br /&gt;Now, I'm left trying to work out what was missed and I'm coming up with two things that are shining above everything. There is a lack of understanding of the problem being solved and a massive misunderstanding of the underlying pattern or technology being used to solve it.&lt;br /&gt;&lt;br /&gt;There is no lack of enthusiasm or effort expressed. It is instead a knowledge gap.&lt;br /&gt;&lt;br /&gt;At this point, I have to stop and start at the beginning again explaining what we are doing, what we want to do and how we might go about coming to a way of solving it. I don't want to say they wasted their time but maybe there is education in learning that throwing it away and starting again is also a skill. The big problem is that I can explain it to a person but without the foundation then I can't understand it for them.&lt;br /&gt;&lt;br /&gt;There are basic concepts that you should have when you walk in to a software job. Liking tinkering with your PC at home is not enough. You need to understand computer science concepts. We need to have a common language. I have zero issue to helping a juniour understand a concept but I can't be explaining things to them that they should have found out about in first year computer science.&lt;br /&gt;&lt;br /&gt;As our industry matures, we must start accepting a certain entry level of competency. Enthusiasm and over-confidence is not going to compensate for not understanding polymorphism or the difference between a has-a or is-a relationship between classes.&lt;br /&gt;&lt;br /&gt;I can teach that too you but I shouldn't have to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3367033432549944921?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3367033432549944921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3367033432549944921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3367033432549944921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3367033432549944921'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/knowledge-gap.html' title='The Knowledge Gap'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-CX79XJw4A44/Tmy95jlMBiI/AAAAAAAAEZ0/WUvHm-yHsaU/s72-c/funny-pictures-so-smart.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3936948962721312110</id><published>2011-09-11T22:04:00.006+10:00</published><updated>2011-09-11T23:51:46.783+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>My head is in the cloud</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/cubagallery/4944754276/in/photostream/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://1.bp.blogspot.com/-gFBlP77SpY4/Tmy8TV_ZFBI/AAAAAAAAEZs/0N6q7HBd-ZA/s400/cloud.jpg" alt="" id="BLOGGER_PHOTO_ID_5651098672949695506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At my current location, each work day feels like stepping back in time in to a world where we fought for hardware to run the simplest things on. In Sydney, Canberra and Melbourne I could walk up to my IT guys and ask for this server for that job as I built my application. With dedicated data centres employing high end funky virtualisation, it would take hours or days worst case.&lt;br /&gt;&lt;br /&gt;That is what I expect at least from the IT guys in the company I work for. Especially the big guys.&lt;br /&gt;&lt;br /&gt;Unfortunately, in Darwin I am more likely to get what I want in a small office where I can run down to Harvey Norman and grab a machine and combine that with a good MSDN subscription. There is at least a possibility of me achieving isolation of environments, added servers and more space to play in that world.&lt;br /&gt;&lt;br /&gt;Where I am now, we are too big to allow anything to run on our network without the restricted, locked down and encumbered SOE. We are also too unimportant to get a place in our private or public clouds. It's a lose-lose situation.&lt;br /&gt;&lt;br /&gt;There are many reasons for businesses to go in to the cloud but it is not being sold as a place for software development services to take place. At least, it is not being sold that way to the mid-sized companies who really truly need it. They can benefit the most without the hassle, price and justifications that they are making now. Sys admins will still be in jobs but they won't be racking machines in meatspace.&lt;br /&gt;&lt;br /&gt;The scalability and elasticity of the cloud is perfect for software development. Even the benefits of highly automated behaviour that will allow the management and clustering that we need without knowing what we need ahead of time.&lt;br /&gt;&lt;br /&gt;Right now, I have to predict all my development needs and then beg "please sir, can I have some more" if for some reason I missed out on something. We have to adapt and cater for the unpredictable. In the same way that we talk of agile software, we need adaptable and agile infrastructure for producing software applications.&lt;br /&gt;&lt;br /&gt;Those of us inside mid-sized organisations can sell the business value or suggest cloudy solutions until the cows come home but until the big providers like Amazon, Microsoft and Google start selling the software services then the big wigs won't really listen.&lt;br /&gt;&lt;br /&gt;Hurry up already. I am sick of begging for servers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3936948962721312110?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3936948962721312110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3936948962721312110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3936948962721312110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3936948962721312110'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/my-head-is-in-cloud.html' title='My head is in the cloud'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-gFBlP77SpY4/Tmy8TV_ZFBI/AAAAAAAAEZs/0N6q7HBd-ZA/s72-c/cloud.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8300821221781345241</id><published>2011-09-04T02:25:00.005+10:00</published><updated>2011-09-04T16:54:37.055+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Craft'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Craftsman'/><category scheme='http://www.blogger.com/atom/ns#' term='Quality'/><title type='text'>Quality Assurance is a myth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/jmv/19454743/in/photostream/"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-fBhmCM5Poqs/TmJlY90MXeI/AAAAAAAAEZg/FOkrReTpqj8/s400/sink.jpg" alt="" id="BLOGGER_PHOTO_ID_5648188362260766178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Anyone who stands before you and tells you that they can assure quality in your application is talking rubbish.&lt;br /&gt;&lt;br /&gt;There is no way to achieve &lt;span style="font-style: italic;"&gt;assured quality&lt;/span&gt;. Quality can not be assured. I was taught this by some of the best QAs in the world. Let me explain to you what they explained to me.&lt;br /&gt;&lt;br /&gt;The first thing that people seem to tout when they instigate continuous integration, X driven development or employ a &lt;a href="http://www.vinktank.com/"&gt;QA&lt;/a&gt; is that they can now assure quality in everything they build.&lt;br /&gt;&lt;br /&gt;Let me break the truth to you. There is absolutely no way of ASSURING quality in anything you build. Ask the guy who forgot to &lt;a href="http://articles.cnn.com/1999-09-30/tech/9909_30_mars.metric.02_1_climate-orbiter-spacecraft-team-metric-system?_s=PM:TECH"&gt;used the metric system&lt;/a&gt; and caused the Mars Orbiter to crash. NASA has the strictest of all environments to assure there are no mistakes.&lt;br /&gt;&lt;br /&gt;The way I build software is to ensure rigour. To ensure that the practices that are used in managing a team, gathering and expressing requirements, writing the code and meeting the acceptance criteria are so engrained and bought in to that quality emerges.&lt;br /&gt;&lt;br /&gt;People speak of methodologies. I speak of rigour.&lt;br /&gt;People speak of best practices. I speak of rigour.&lt;br /&gt;People speak of theory and practice. I speak of rigour.&lt;br /&gt;&lt;br /&gt;There is a distance between the project management focused &lt;a href="http://en.wikipedia.org/wiki/Scrum_%28development%29"&gt;Scrum&lt;/a&gt; and developer focused &lt;a href="http://en.wikipedia.org/wiki/Extreme_Programming"&gt;XP&lt;/a&gt;. Companies can sell you their flavour of this and that but the truth is that you need to find the way that works best for you.&lt;br /&gt;&lt;br /&gt;Find that way. Find the practices and methods that bring the benefits to you and your company. Hold on to them and repeat them. Do them over and over in small sprints or iterations or bursts or waves. I don't care what you call them. Just find them and correct them as you travel. Allow yourself to be wrong and fail as long as you learn from it.&lt;br /&gt;&lt;br /&gt;It's not rocket surgery. Consultants try to tell you it is. It's not. Good software can be built in a way that allows quality to emerge. It is a craft and as such must be built by craftsman.&lt;br /&gt;&lt;br /&gt;Companies try to undervalue the craftsman and sell their solution. The reason is because they know that software is a true craft and it must be taught by a master craftsman to a novice. Great software takes great individuals. It takes guidance and a honing of skills. It does not come from big M methodologies or style focused companies.&lt;br /&gt;&lt;br /&gt;If you want to build good quality software then find a very good craftsman and let them build a team. Let them teach the team. Let them guide your progress. Close your eyes and take a leap of faith. You will be rewarded.&lt;br /&gt;&lt;br /&gt;Quality comes from great team work. Great practices. Rigour. Craft. Buy in. Pride in product.&lt;br /&gt;&lt;br /&gt;This is why it seems random. You are looking for the wrong patterns. Find a great lead who enables and cares and you will build bliss.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8300821221781345241?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8300821221781345241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8300821221781345241' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8300821221781345241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8300821221781345241'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/09/quality-assurance-is-myth.html' title='Quality Assurance is a myth'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fBhmCM5Poqs/TmJlY90MXeI/AAAAAAAAEZg/FOkrReTpqj8/s72-c/sink.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8633958455906433241</id><published>2011-08-15T12:54:00.003+10:00</published><updated>2011-08-15T13:03:35.619+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Continuous Integration'/><title type='text'>At least we have one</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/damana/6043715108"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 299px; height: 400px;" src="http://1.bp.blogspot.com/-SkalRUL-IP8/TkiKlivo5dI/AAAAAAAAEX4/ZKmLXQ35-UU/s400/6043715108_fe662e770d.jpg" alt="" id="BLOGGER_PHOTO_ID_5640910910867957202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I posted a link to this photo on Twitter this morning. One of the first responses I got was making fun of the fact that the first incarnation of our continuous integration server is on an old laptop. They used the word "quaint".&lt;br /&gt;&lt;br /&gt;When I asked the rude person what their server ran on, they didn't even have one. This leaves me thinking that I'd rather have a caravan in the hills than a mansion in the slums.&lt;br /&gt;&lt;br /&gt;Excuses about not having the money or permission or a restricted network is not a good enough excuse to not have a server that is building your code, running your tests and preparing automated deployments. Get out there and start building rigour in to your development practices and hopefully finding the emergent quality that accompanies it.&lt;br /&gt;&lt;br /&gt;If you don't happen to have one or possess the will to make it happen then shut up because you just look lazy and rude. Lazy on its own is bad enough.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8633958455906433241?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8633958455906433241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8633958455906433241' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8633958455906433241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8633958455906433241'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/08/at-least-we-have-one.html' title='At least we have one'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-SkalRUL-IP8/TkiKlivo5dI/AAAAAAAAEX4/ZKmLXQ35-UU/s72-c/6043715108_fe662e770d.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1427214646796328713</id><published>2011-08-03T21:40:00.010+10:00</published><updated>2011-08-03T22:39:12.477+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Story'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Story Wall'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Tell me a story</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-B4u4tBwvluc/Tjk9pP3DmaI/AAAAAAAAEXQ/IVbxLETRTgs/s1600/story%2Bwall.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://3.bp.blogspot.com/-B4u4tBwvluc/Tjk9pP3DmaI/AAAAAAAAEXQ/IVbxLETRTgs/s400/story%2Bwall.jpg" alt="" id="BLOGGER_PHOTO_ID_5636604187472271778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The story wall went up at work today. We are the not just the only project running agile, we are the only project with much of a plan at all. Working in this small city has frustrated me to no end. People here talk of things they do, without doing them. They say they are aiming for this and that and then all the aiming that is done is in the talking of it.&lt;br /&gt;&lt;br /&gt;This project is different. We are walking the walk. The team likes the idea of agile. They are willing to try it. They are willing to find the flavour that suits them and the project.&lt;br /&gt;&lt;br /&gt;Our goals are simple. Short deadline. Fixed budget. Huge scope.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;The Story Behind It&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When I joined, we had done a lot of requirements gathering and there were big solid specs being written. There were documents defining process and documents defining documents. Today, I uploaded my last documentation of the project up to the Sharepoint portal and turned my head to the story wall.&lt;br /&gt;&lt;br /&gt;Over the last few weeks, we have been breaking down tasks. I walked them through how to do that breakdown and then how to guesstimate to the best of our knowledge at the time. We recorded effort in days and the whole team agreed on complexity and volatility. We came up with numbers and costs and best of all, a shared understanding of what we were building.&lt;br /&gt;&lt;br /&gt;The first visible way this has been communicated is to produce a story wall from our master story list. The master story list is a list of the discrete tasks that describe functions and sub-functions in the required system. Developers will undertake one task at a time, after business analysts have described it and they have both agreed on acceptance criteria. That acceptance criteria will guide our test driven approach to development and eventuate in automated tests and the QA and then user acceptance tests for each story/task/story.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rUOyJe3BX2k/Tjk-AjVoEYI/AAAAAAAAEXY/vgZaB0ji3tk/s1600/legend.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 299px; height: 400px;" src="http://2.bp.blogspot.com/-rUOyJe3BX2k/Tjk-AjVoEYI/AAAAAAAAEXY/vgZaB0ji3tk/s400/legend.JPG" alt="" id="BLOGGER_PHOTO_ID_5636604587837755778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reading the Cards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Right now, the wall is made up of different coloured cards...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;White - Story cards made up of an Id, a task description, estimation of effort, complexity and volatility ratings and space for acceptance criteria and notes;&lt;/li&gt;&lt;li&gt;Green - Descriptive cards that give headings for the stages that a story goes through and other important sections that a card can belong to;&lt;/li&gt;&lt;li&gt;Pink - Defects which are played like stories and require Ids, estimations and all the things a story needs. They will come out of testing stages after they have been accepted for QA and moved out of In Dev, which are two of our story stages;&lt;/li&gt;&lt;li&gt;Yellow - Tech cards for technical tasks that are related to stories and need to be explicitly detailed. I personally hate tech cards but for iteration 0, they are valid. If I see too many, heads will roll;&lt;/li&gt;&lt;li&gt;Blue - We haven't associated them with anything yet. We are calling them Terry cards. Terry is our project manager. We didn't want him to feel left out since he's on leave and I'm sure he'll have a good suggestion for their use. Possibly things Damana is not allowed to blog about;&lt;/li&gt;&lt;li&gt;Sticky notes of random colours - These denote blockers and notes relevant to a story. They are stuck on the story card.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Life of a Card&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are columns that represent the stages a story, defect or technical card can move through. At each stage, there is an owner of that card. A card can not be in play and not have an owner. For a card to move from one stage to another, there must be a discussion between at least two members of the team and one must be the owner handing over to a new owner.&lt;br /&gt;&lt;br /&gt;Our stages for this project are...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Backlog - Where all stories sit until they are played in an iteration. Everything starts here. It's a little like Munchkin Land;&lt;/li&gt;&lt;li&gt;In Analysis - All stories that are being played in a current iteration will start here on the first day of the iteration, after the IKO (Iteration Kick Off) meeting. At this point they belong to the business analysts and will only move once they are ready for development. This is usually a decision made by two analysts or an iteration manager and an analyst. Remember that the analysis on a story does not need to be 100% complete. A story card is an opportunity for a conversation. It is not a spec;&lt;/li&gt;&lt;li&gt;Ready for Dev - Now the story is available for a developer to pick up once they have the bandwidth to start and complete it. At this point, the decision to move it to the next stage is made by a business analyst and a developer. If you live in a perfect world then hopefully a QA is around to help establish acceptance criteria with those two;&lt;/li&gt;&lt;li&gt;In Dev - The acceptance criteria is set, the estimation validated loosely by the dev and the shared understanding of what is required completed enough to start the task having occurred between analysts and developers (yes, a pair). Development starts. This does not mean running away and working in solitude. Nope. There will be more questions for the analyst and the business and other members of the team. Nothing happens in isolation on this agile team. Transparency and Conversation are paramount;&lt;/li&gt;&lt;li&gt;Ready for QA - As it sounds, this is when the developer(s) think that the story has been fully implemented and can be taken for system testing. In our case, this means acceptance criteria are met and there are automated tests at all levels ready and running in continuous integration. Full integration has been made with the project code base and all compliance with agreed coding and developer standards are adhered too (well, mostly). At this point, the developer and the QA are often having a chat. Anything that needs clearing up is brought to the business analyst. Beware of slippery developers who bargain at this point. Don't pay the ferryman until he gets you to the other side. I have turned around to many QAs and said "well, you agreed I met the criteria so move that to another story";&lt;/li&gt;&lt;li&gt;In QA - The story is in system test and belongs to the QA. I won't tell you how to do good QA because I'm a developer and there are better people out there to tell you such important things;&lt;/li&gt;&lt;li&gt;Ready for UAT - The story has met acceptance criteria and passed system testing. It is ready to show to the client;&lt;/li&gt;&lt;li&gt;In UAT - Users are testing it. The team deals with defects and waits for users to accept the implemented functionality. Business analysts, QAs and iteration managers are dealing with outcomes at this stage. We wait;&lt;/li&gt;&lt;li&gt;Signed-Off - The users have tested it and the business has signed off the story as complete. We celebrate. For some that is chocolate. For others champagne.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pwn It&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Every member of the team has chosen themselves an avatar that will represent them on the wall. Some chose their photos. Some chose creatures or characters that represent them. This is how they will be seen and how they will own their current task. These are about the size of a business card. Our only rule is "no nakedness".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Outcome&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Every process is different. Every wall is different. The purpose is the same. Communicate and provide visibility to the whole team and stakeholders.&lt;br /&gt;&lt;br /&gt;Tomorrow, we will start holding our stand ups around the story wall. That is when the team will see the true value of both the visual story wall and stand ups. It will become the most important part of our project.&lt;br /&gt;&lt;br /&gt;It will grow and change so that it gives meaning to our particular project. Come back once in a while and check how we are progressing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1427214646796328713?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1427214646796328713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1427214646796328713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1427214646796328713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1427214646796328713'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/08/tell-me-story.html' title='Tell me a story'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-B4u4tBwvluc/Tjk9pP3DmaI/AAAAAAAAEXQ/IVbxLETRTgs/s72-c/story%2Bwall.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-6805277496424879336</id><published>2011-08-01T19:02:00.003+10:00</published><updated>2011-08-01T19:05:43.726+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YouTube'/><category scheme='http://www.blogger.com/atom/ns#' term='Video'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Embedding'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>Configure your embedded YouTube video</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-l8VjHgtUmME/TjZrnueMrwI/AAAAAAAAEWo/O_XuyrNFSAk/s1600/Config%2BYouTube.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 305px;" src="http://3.bp.blogspot.com/-l8VjHgtUmME/TjZrnueMrwI/AAAAAAAAEWo/O_XuyrNFSAk/s400/Config%2BYouTube.jpg" alt="" id="BLOGGER_PHOTO_ID_5635810313934515970" border="0" /&gt;&lt;/a&gt;While embedding a music video on my blog, I found that YouTube now lets you configure the dimensions of the video and a few other useful options. This makes a huge difference when you have size constraints on the host site. Blogger is a great example of embedded videos exceeding template limits and just messing the whole look up.&lt;br /&gt;&lt;br /&gt;Again, YouTube gives me another reason to use their service for easy video sharing and embedding. It is little things like this that appeal to bloggers. Thank you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-6805277496424879336?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/6805277496424879336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=6805277496424879336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6805277496424879336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6805277496424879336'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/08/configure-your-embedded-youtube-video.html' title='Configure your embedded YouTube video'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-l8VjHgtUmME/TjZrnueMrwI/AAAAAAAAEWo/O_XuyrNFSAk/s72-c/Config%2BYouTube.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7234901437670922265</id><published>2011-07-05T12:49:00.001+10:00</published><updated>2011-07-05T12:50:59.107+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>Process</title><content type='html'>Not all processes are bad. It is process for process-sake that is painful and unhelpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7234901437670922265?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7234901437670922265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7234901437670922265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7234901437670922265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7234901437670922265'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/07/process.html' title='Process'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4338486591865001796</id><published>2011-05-26T12:26:00.002+10:00</published><updated>2011-05-26T12:30:52.473+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><category scheme='http://www.blogger.com/atom/ns#' term='iPassed2'/><category scheme='http://www.blogger.com/atom/ns#' term='Fanboys'/><title type='text'>iPassed2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/damana/5760545674/in/photostream"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 323px; height: 400px;" src="http://4.bp.blogspot.com/-J5wxeNSD7C4/Td26dwAB1bI/AAAAAAAAERM/d3A6Yt7qimI/s400/iPassed2.jpg" alt="" id="BLOGGER_PHOTO_ID_5610845731037500850" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For all the Apple fanboys, who will love products of Jobs until they die and long after.&lt;br /&gt;&lt;br /&gt;Created by Peter Walker of &lt;a href="http://www.imagineer.net.au"&gt;Imagineer&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4338486591865001796?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4338486591865001796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4338486591865001796' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4338486591865001796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4338486591865001796'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/05/ipassed2.html' title='iPassed2'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-J5wxeNSD7C4/Td26dwAB1bI/AAAAAAAAERM/d3A6Yt7qimI/s72-c/iPassed2.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-9217688267501997297</id><published>2011-05-22T18:50:00.005+10:00</published><updated>2011-05-22T20:50:55.173+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Positivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Pointless'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Go Dig A Ditch</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/greenchartreuse/232118468"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-GOrXJq2ELDM/TdjmzxHQHHI/AAAAAAAAEQk/C4iI3Ensl5o/s400/Road%2Bwork.jpg" alt="" id="BLOGGER_PHOTO_ID_5609487112921422962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;People keep on telling me that I shouldn't get upset about others in my industry who simply couldn't care less what they produce.&lt;br /&gt;&lt;br /&gt;Apparently, people have different priorities.&lt;br /&gt;&lt;br /&gt;The thing with priorities is that you are choosing to order the importance of several things. That does not automatically imply that there is only one thing that is important to you.  People with children who work a day as a software engineer and do a good job, do not implicitly hate or undervalue their children. Those of us without children don't just have lives full of work and nothing else.&lt;br /&gt;&lt;br /&gt;In fact, people with diverse interests and hobbies are often very good at their jobs because their lives are more balanced.&lt;br /&gt;&lt;br /&gt;You can have multiple things that are important. That is the whole point of context.  When you switch contexts, the focus changes. There is nothing lost in other contexts. It is not as though you love the other less. You do not have to choose.&lt;br /&gt;&lt;br /&gt;There is one guy in Darwin who sparked this rant. He goes to work. He goes home. He doesn't put in any extra effort. He always asks why he has to do something out of his usual routine. He doesn't see the point of collaboration, information sharing, reuse of anything, or exerting any more effort than it takes to not fire him.&lt;br /&gt;&lt;br /&gt;Working with him was difficult because he would resist the whole way. It was passive resistance. I always came across as a French marine dragging a Green Peace supporter from a boat. It makes those of us who care look like zealots, when all we want is for people to make the effort they are paid for.&lt;br /&gt;&lt;br /&gt;What we do is an important job. We are professionals. We get paid well .We have a responsibility to give a good service.&lt;br /&gt;&lt;br /&gt;If you don't want to contribute then you should go dig ditches. Get the hell out of programming. You are lowering the standard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-9217688267501997297?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/9217688267501997297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=9217688267501997297' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9217688267501997297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9217688267501997297'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/05/go-dig-ditch.html' title='Go Dig A Ditch'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-GOrXJq2ELDM/TdjmzxHQHHI/AAAAAAAAEQk/C4iI3Ensl5o/s72-c/Road%2Bwork.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4007678309826673154</id><published>2011-05-09T11:19:00.006+10:00</published><updated>2011-05-09T13:10:23.093+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Naming Containers'/><title type='text'>ASP.NET Naming Containers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/jpmartineau/501718334"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-ghIg92MFiuM/TcdIerA3rxI/AAAAAAAAEPE/Kd2rew5EIps/s400/501718334_f5e4039223.jpg" alt="" id="BLOGGER_PHOTO_ID_5604527953065520914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You have to understand that ASP.NET naming containers exist and what they change about a page. This affects client side and server side code and often kicks my a** when I forget that I am in one.&lt;br /&gt;&lt;br /&gt;A naming container is a marker interface (INamingContainer), meaning that it does not implicitly enforce the hierarchy of controls under it but does create a naming scope for all contained controls.&lt;br /&gt;&lt;br /&gt;Any controls that exist inside the naming container have their Ids altered at runtime with a prefix to ensure they are unique and belong to the context of the parent container. When you see a control with a name like TextBox1 change to ct100_xxxxxx then you know that it's in a naming container and has had a naming adjustment. This can make client side scripting a pain but there are many hints around on the web to help you cope with that.&lt;br /&gt;&lt;br /&gt;The naming containers you will be most familiar with are master pages, content place holders and data bound controls like GridView.&lt;br /&gt;&lt;br /&gt;My latest bottom kicking came when I was using fluent validators that wanted my validation specification to sit in the same naming comtainer as the controls it was validating. I chucked it at the top of the user control and the validation specification wasn't found. Not finding it as a sibling to the controls meant that validation just wouldn't happen. There was no error.&lt;br /&gt;&lt;br /&gt;This makes sense when you are implementing server side code that looks up to a certain level in the hierachy to find an optional element on the page.&lt;br /&gt;&lt;br /&gt;The thing is to know what your naming containers are and where you should place things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4007678309826673154?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4007678309826673154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4007678309826673154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4007678309826673154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4007678309826673154'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/05/aspnet-naming-containers.html' title='ASP.NET Naming Containers'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ghIg92MFiuM/TcdIerA3rxI/AAAAAAAAEPE/Kd2rew5EIps/s72-c/501718334_f5e4039223.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-79023719295627562</id><published>2011-03-30T22:10:00.006+11:00</published><updated>2011-03-31T11:46:24.742+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='llblgen'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>Design for the Lowest Common Denominator</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/laughingsquid/350999258/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 289px; height: 400px;" src="http://2.bp.blogspot.com/-zhFZdvr21ys/TZPOqlE66kI/AAAAAAAAEM0/RKfzrOTd5No/s400/350999258_7b8d7cb581.jpg" alt="" id="BLOGGER_PHOTO_ID_5590038793399495234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Everything is a balancing act between perfection and pragmatism.&lt;br /&gt;&lt;br /&gt;What I do not believe is that you are supposed to drop standards to the point where you correct the mistakes of users. Yes, suggest improvements or give warnings or give options to clean up but do not just assume and make the change.&lt;br /&gt;&lt;br /&gt;I'm using an ORM called &lt;a href="http://www.llblgen.com/defaultgeneric.aspx"&gt;llblgen&lt;/a&gt;. It is the standard where I work. I'm not a massive fan but I'm currently more for consistency than purity so it will do for now.&lt;br /&gt;&lt;br /&gt;One thing that llblgen insists on doing is assuming a table name ending in with an 's' is a plural. It then removes the trailing 's' when generating the equivalent data model class.&lt;br /&gt;&lt;br /&gt;For example, my 'SomethingStatus' table will be represented by an equivalent model named 'SomethingStatu'. The developer has responded to my tweets of disdain and said that from his point of view, he can't assume that people will model their databases in a way that obeys conventions for not using plurals.&lt;br /&gt;&lt;br /&gt;This bothers me because it makes me question the point at which we will go to cater for developers or users that may be doing something "wrong". Microsoft development environments and technology stack restrictions often have this in mind. Stop bad developers being sloppy by locking down the environment and denying options because bad choices cause bad code.&lt;br /&gt;&lt;br /&gt;I disagree. I think bad developers write bad code. You shouldn't have to correct them. You don't need to baby your users. If you are going to cater for anyone then cater for the average user.&lt;br /&gt;&lt;br /&gt;If the assumption is that the average user has a low&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt; statu&lt;/span&gt;&lt;/span&gt; then I'm simply saddened.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-79023719295627562?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/79023719295627562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=79023719295627562' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/79023719295627562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/79023719295627562'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/03/design-for-lowest-common-denominator.html' title='Design for the Lowest Common Denominator'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-zhFZdvr21ys/TZPOqlE66kI/AAAAAAAAEM0/RKfzrOTd5No/s72-c/350999258_7b8d7cb581.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-935194060413318656</id><published>2011-03-22T12:00:00.001+11:00</published><updated>2011-03-22T15:05:59.158+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Uninstall Instance'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2008 R2'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Uninstall an Instance of SQL Server</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/rhobinn/2385684845/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-CbMW8upqWOI/TYggFdUnJMI/AAAAAAAAEMM/acD5Fulf4ww/s400/remover.jpg" alt="" id="BLOGGER_PHOTO_ID_5586750615895614658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you are anything like me and you regularly forget the SA password for a SQL Server instance and then delete your own Windows user from the server then you will need to install a new instance.&lt;br /&gt;&lt;br /&gt;Then you have two... or four instances, in my case. Don't ask.&lt;br /&gt;&lt;br /&gt;Here is how you uninstall a specific instance since you are locked out and can't use it anymore. There are other good reasons that may bring this about but mine is far too common, so do this...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to &lt;span style="font-weight: bold;font-family:courier new;" &gt;Control Panels &gt; Programs &gt; Uninstall a program&lt;/span&gt;. This is also known as &lt;span style="font-weight: bold;font-family:courier new;" &gt;Add or Remove Programs&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;Find the type of server you are uninstalling. In my case it is Microsoft SQL Server 2008 R2 (64-bit). Right-click and choose &lt;span style="font-weight: bold;font-family:courier new;" &gt;Uninstall/Change&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;At this point, you may be asked to locate your installer program. That is the program you used to install it in the first place. Locate that. You will be presented with several options. Choose &lt;span style="font-weight: bold;font-family:courier new;" &gt;Remove&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;Select the Instance you want to remove and follow the instructions to uninstall it.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;You may want to write down that SA password for the new instance somewhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-935194060413318656?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/935194060413318656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=935194060413318656' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/935194060413318656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/935194060413318656'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2011/03/uninstall-instance-of-sql-server.html' title='Uninstall an Instance of SQL Server'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-CbMW8upqWOI/TYggFdUnJMI/AAAAAAAAEMM/acD5Fulf4ww/s72-c/remover.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7742064939775830558</id><published>2010-12-12T21:20:00.005+11:00</published><updated>2010-12-12T21:26:26.565+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading Level'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Google Reading Level</title><content type='html'>A recent useful feature that I have seen added to Google search is part of the Advanced Search criteria. It filters by reading level. This level has been determined by Google in some magical way (yes, I will read more later) and at the moment only applies to English pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSip8BnV_I/AAAAAAAAEIg/2qIBsTSpZ48/s1600/Google%2BAdvanced%2BSearch.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 106px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSip8BnV_I/AAAAAAAAEIg/2qIBsTSpZ48/s400/Google%2BAdvanced%2BSearch.jpg" alt="" id="BLOGGER_PHOTO_ID_5549739482198530034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My main use for this is when searching for technical references, when I don't want to find the "did you forget to turn the power on?" solution or description.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSi7MCmdrI/AAAAAAAAEIo/2rTP7dwXVNo/s1600/wpf%2B-%2BGoogle%2BSearch.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSi7MCmdrI/AAAAAAAAEIo/2rTP7dwXVNo/s400/wpf%2B-%2BGoogle%2BSearch.jpg" alt="" id="BLOGGER_PHOTO_ID_5549739778555410098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you search, you will see the break up of different pages, at their reading levels.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSjENOWn7I/AAAAAAAAEIw/HytgU1wrpcQ/s1600/chocolate%2B-%2BGoogle%2BSearch.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 211px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/TQSjENOWn7I/AAAAAAAAEIw/HytgU1wrpcQ/s400/chocolate%2B-%2BGoogle%2BSearch.jpg" alt="" id="BLOGGER_PHOTO_ID_5549739933491961778" 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/2144813210603379421-7742064939775830558?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7742064939775830558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7742064939775830558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7742064939775830558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7742064939775830558'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/12/google-reading-level.html' title='Google Reading Level'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/TQSip8BnV_I/AAAAAAAAEIg/2qIBsTSpZ48/s72-c/Google%2BAdvanced%2BSearch.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1500164459521884533</id><published>2010-12-12T19:11:00.001+11:00</published><updated>2010-12-12T21:10:28.062+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Car Park'/><category scheme='http://www.blogger.com/atom/ns#' term='Lights'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual'/><category scheme='http://www.blogger.com/atom/ns#' term='Westfield'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>Parking Lot Build Lights</title><content type='html'>In software development, we talk about making the process of development  as visible as possible. Be it by metrics graphing the progress of a  project; Constant and clear communications; and visual indicators  available to all who require or care about the state of a system.&lt;br /&gt;&lt;br /&gt;Recently, I saw this same concept in place at the &lt;a href="http://westfield.com.au/bondijunction/"&gt;Westfield mall&lt;/a&gt; car park in &lt;a href="http://maps.google.com.au/maps?hl=en&amp;amp;ie=UTF8&amp;amp;q=westfield+bondi+junction&amp;amp;fb=1&amp;amp;gl=au&amp;amp;hq=westfield&amp;amp;hnear=Bondi+Junction+New+South+Wales&amp;amp;cid=0,0,7787223899133753437&amp;amp;ei=xpMETdSuNcmXce-5qM0E&amp;amp;oi=local_result&amp;amp;sqi=2&amp;amp;ved=0CCoQnwIwAQ&amp;amp;ll=-33.891151,151.250668&amp;amp;spn=0.010188,0.022724&amp;amp;z=16"&gt;Bondi Junction&lt;/a&gt;, NSW.&lt;br /&gt;&lt;br /&gt;Each parking space had a light that would display either &lt;span style="color: rgb(255, 0, 0);"&gt;Red&lt;/span&gt; (taken), &lt;span style="color: rgb(51, 204, 0);"&gt;Green&lt;/span&gt; (available) or &lt;span style="color: rgb(51, 51, 255);"&gt;Blue&lt;/span&gt; (disabled space). Each camera contains a camera pointing at the car park.&lt;br /&gt;&lt;br /&gt;After thorough testing, my sister and I discovered that a person can not make a space occupied by standing in it but a trolley will set off the "taken space" red light.&lt;br /&gt;&lt;br /&gt;On reversing, the space becomes vacant and displays a green light as soon as the car has backed out far enough to no longer be visible to the camera.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA68fO29UI/AAAAAAAAEIY/orCBROgadlg/s1600/Park%2BAssist.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA68fO29UI/AAAAAAAAEIY/orCBROgadlg/s400/Park%2BAssist.JPG" alt="" id="BLOGGER_PHOTO_ID_5548499551770834242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you drive in to the car park, you are told how many spaces are available currently, on each level. When you get to the level, it is quite easy to spot the available spaces by the highly visible green light.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA67-8ICxI/AAAAAAAAEIQ/9bYwbVFREUE/s1600/park.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA67-8ICxI/AAAAAAAAEIQ/9bYwbVFREUE/s400/park.JPG" alt="" id="BLOGGER_PHOTO_ID_5548499543102327570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the first time that I have been to Bondi Junction Westfield and not been circling to find a car park, behind a dozen other driver shoppers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA67vYZ4BI/AAAAAAAAEII/nq37X_UCdbc/s1600/Carpark.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TQA67vYZ4BI/AAAAAAAAEII/nq37X_UCdbc/s400/Carpark.JPG" alt="" id="BLOGGER_PHOTO_ID_5548499538925969426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Yes, a picture is worth a thousand words and it seems that goes for a single glance to our brains. Without any explanation, people worked out what the colours meant and found parking spaces easily and quickly.&lt;br /&gt;&lt;br /&gt;There is no doubt this system would have cost a lot for Westfield but I congratulate on solving the parking situation weeks before Christmas 2010, in an effective and simple way. Thank you for communicating with us. Great work &lt;a href="http://www.parkassist.com/"&gt;Park Assist&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1500164459521884533?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1500164459521884533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1500164459521884533' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1500164459521884533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1500164459521884533'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/12/parking-lot-build-lights.html' title='Parking Lot Build Lights'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TQA68fO29UI/AAAAAAAAEIY/orCBROgadlg/s72-c/Park%2BAssist.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1741751753224810590</id><published>2010-11-14T12:59:00.011+11:00</published><updated>2010-11-14T13:33:27.432+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Don't Panic</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7vd1oW85hU/TN9CrSVXg1I/AAAAAAAAEHE/8Ev_aH5HC-E/s1600/don_t_panic_button.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TN9CrSVXg1I/AAAAAAAAEHE/8Ev_aH5HC-E/s400/don_t_panic_button.jpg" alt="" id="BLOGGER_PHOTO_ID_5539219378112267090" border="0" /&gt;&lt;/a&gt;This is not a new area of discussion for me. You will see that a theme runs through &lt;a href="http://geekdamana.blogspot.com/2008/05/are-we-there-yet.html"&gt;my views on software development&lt;/a&gt;. It can be summed up to two simple words and one large exclamation mark: &lt;a href="http://en.wikipedia.org/wiki/Don%27t_Panic_%28The_Hitchhiker%27s_Guide_to_the_Galaxy%29#Don.27t_Panic"&gt;Don't Panic!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There will always be deadlines - be they realistic ones or complete &lt;a href="http://en.wikipedia.org/wiki/Death_march_%28software_development%29"&gt;death marches&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There will always be defects - found in testing or left to the point of blowing up in a user's browser.&lt;br /&gt;&lt;br /&gt;There will always be uncertainty - from not deciding what colour to paint the &lt;a href="http://en.wikipedia.org/wiki/Parkinson%27s_Law_of_Triviality"&gt;bike shed&lt;/a&gt; to wondering if you should ever have become a programmer.&lt;br /&gt;&lt;br /&gt;If you plan on staying around in the volatile world of software then you are going to have to learn to take a few deep breaths and deal with the problem at hand. Fainting at the slightest sign of a challenge is not going to help you work through that issue. Remember that unless you plan on never waking up from your fainting episode then the problem will be there when you are offered the &lt;a href="http://www.wikihow.com/Make-Smelling-Salts"&gt;smelling salts&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Do not become one of those people who stands back and has some other calm person fix your issues. Instead, be the calm one. Be the go to person. When the fit hits the shan, don't join the throng of zombie fearing masses. Step back and remember that you are building software, not searching for weapons of mass destruction. A bit of broken code or integration issues will maybe cost some money or annoy a few customers but nobody will die. It is software and it can be fixed.&lt;br /&gt;&lt;br /&gt;Rectifying a situation and solving a problem is important but jumping at it with reactions rather than sanity will not bring peace to you or the issue.&lt;br /&gt;&lt;br /&gt;What can you do?&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Walk away for a minute and get your thoughts together;&lt;/li&gt;&lt;li&gt;Don't make changes until you know exactly what the problem is;&lt;/li&gt;&lt;li&gt;Find someone to discuss the issue with. Explaining it to others can help you sort through it. They may also see something or know something you can't see through the haze of stress;&lt;/li&gt;&lt;li&gt;Let the people who are going to be affected know that their may be an issue and actions are being taken to remedy it; and&lt;br /&gt;&lt;/li&gt;&lt;li&gt;most importantly, DON'T PANIC!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1741751753224810590?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1741751753224810590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1741751753224810590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1741751753224810590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1741751753224810590'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/11/dont-panic.html' title='Don&apos;t Panic'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TN9CrSVXg1I/AAAAAAAAEHE/8Ev_aH5HC-E/s72-c/don_t_panic_button.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4225016340668808039</id><published>2010-11-05T15:40:00.004+11:00</published><updated>2010-11-06T14:57:57.945+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TripleJ'/><category scheme='http://www.blogger.com/atom/ns#' term='Girl Geek Dinners'/><category scheme='http://www.blogger.com/atom/ns#' term='Hack'/><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><title type='text'>I'm on Triple J</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.abc.net.au/triplej/hack/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 359px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TNOMEDPA0eI/AAAAAAAAEGw/PGfBi3qStmQ/s400/Hack.jpg" alt="" id="BLOGGER_PHOTO_ID_5535922368184111586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This afternoon, I was interviewed by Triple J journalist Irene Scott for their program &lt;a href="http://www.abc.net.au/triplej/hack/"&gt;Hack&lt;/a&gt;. It was all about founding Girl Geek Dinners Sydney.&lt;br /&gt;&lt;br /&gt;The story will be broadcast on Triple J at about 15 minutes in to Hack, which starts at 5:30PM EDST. If you miss it, you can hear &lt;a href="http://www.abc.net.au/triplej/hack/"&gt;stream past shows&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4225016340668808039?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4225016340668808039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4225016340668808039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4225016340668808039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4225016340668808039'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/11/im-on-triple-j.html' title='I&apos;m on Triple J'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TNOMEDPA0eI/AAAAAAAAEGw/PGfBi3qStmQ/s72-c/Hack.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2437709778797518448</id><published>2010-11-05T11:21:00.005+11:00</published><updated>2010-11-05T12:42:58.631+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>I Need A Job</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/TNNgh1oA3ZI/AAAAAAAAEGo/Ty9umdu-Rgk/s1600/will_write_code_for_food_shirt-p235780280084662100t5tj_325.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 325px; height: 325px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/TNNgh1oA3ZI/AAAAAAAAEGo/Ty9umdu-Rgk/s400/will_write_code_for_food_shirt-p235780280084662100t5tj_325.jpg" alt="" id="BLOGGER_PHOTO_ID_5535874501415329170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's true. After finally having the gap year that I never had, I am looking at working again. Back to join the rat race but this time I'm rested after a year old beach volleyball, Darwin sunshine, my mother's cooking and a lot of relaxing.&lt;br /&gt;&lt;br /&gt;When I took that break in November last year, it was for an undetermined amount of time since I was unsure of whether I wanted to come back to IT at all.&lt;br /&gt;&lt;br /&gt;To screw up a saying: A holiday is as good as a change and a one year holiday can be the perfect cure to ten years of crazy hours in an insane industry, in a manic city.&lt;br /&gt;&lt;br /&gt;In the last year, I have worked on and off as an agile coach, a .NET developer, a Java developer, a Ruby trainer and in pre-sales. You probably aren't that interested in the time I spent selling &lt;a href="http://blingwebsite.com/"&gt;gorgeous jewellery&lt;/a&gt; for my sister or the talents I gained in making the perfect coffee in my stint as a &lt;a href="http://en.wiktionary.org/wiki/barista"&gt;barista&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As a true geek, I never really stopped doing what I do best which is building great software. I wrote an iPad app (hasn't everyone), started playing with &lt;a href="http://create.msdn.com/en-US/"&gt;Windows Phone 7&lt;/a&gt; and eventually started a business of my own, which is slowly growing.&lt;br /&gt;&lt;br /&gt;So why am I looking for a job? Because I want to get back in to building good software for clients who care. It's how my brain works. It's what I do. It has to be something interesting and achieve the my driving goal of building software that helps people do their job and that they want to use.&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;If you need a good agile .NET developer in Sydney then contact me.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-2437709778797518448?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2437709778797518448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2437709778797518448' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2437709778797518448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2437709778797518448'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/11/i-need-job.html' title='I Need A Job'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/TNNgh1oA3ZI/AAAAAAAAEGo/Ty9umdu-Rgk/s72-c/will_write_code_for_food_shirt-p235780280084662100t5tj_325.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7123047400594320612</id><published>2010-11-04T19:33:00.006+11:00</published><updated>2010-11-04T20:07:11.293+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UNIX'/><category scheme='http://www.blogger.com/atom/ns#' term='Cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='Development'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Take 2 Cygwin a day and call me in the morning</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/ebarney/3348965637/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/TNJ212IT6VI/AAAAAAAAEGQ/ndDXwXM3joc/s400/tools.jpg" alt="" id="BLOGGER_PHOTO_ID_5535617559427279186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For developers who have never ventured out of their Windows environments and in to the world of UNIX based operating systems (like Linux and Mac OSX), the command line is an often under-utilised tool.&lt;br /&gt;&lt;br /&gt;This is quite understandable in the case of the Windows command line that lets you relive your early DOS days. With all the lack of power of DOS, the command line was long ago abandoned for many mouse clicks and maybe once in a while a RUN command that is copied straight off the Internet and into the START-&gt;RUN control.&lt;br /&gt;&lt;br /&gt;For the uninitiated, who have never dropped back to a command line or shell or who never even started there like us oldies, the commands look like line noise. Amusingly enough, those who were not &lt;a href="http://en.wikipedia.org/wiki/Bourne_shell"&gt;Bourne&lt;/a&gt; from a shell probably do not even know what line noise is. Ahh, the days of whistling along to our high speed &lt;a href="http://en.wikipedia.org/wiki/Modem"&gt;9600 baud modems&lt;/a&gt; are long and lost along with bulletin boards and green on black screens. Those days are lost because the world has progressed to the point that you need not listen to the squealing down the phone line or force your eyes to work in a &lt;a href="http://en.wikipedia.org/wiki/The_Matrix"&gt;Matrix&lt;/a&gt; like world.&lt;br /&gt;&lt;br /&gt;The good things haven't gone. The powerful languages that let their engineers create low level code like C and C++ are still around. Even if more and more amazing higher level languages appear, there will always be a place for the land of hardcore programming. They are needed. They are powerful tools. Weapons even. When wielded by good software engineers, great things happen. Of course, you do need the high level languages because who really wants to spend all their time perfecting memory management and automation of the reinvention of the wheel.&lt;br /&gt;&lt;br /&gt;The other thing that will never leave us is UNIX land. The beauty and capacity of the UNIX tools will never become obsolete. They have been ported to every new environment to follow UNIX and implemented as &lt;a href="http://www.google.com.au/search?hl=en&amp;amp;defl=en&amp;amp;q=define:Api&amp;amp;sa=X&amp;amp;ei=NXPSTO-_N4OOuQPVtL30Dg&amp;amp;ved=0CBQQkAE"&gt;API&lt;/a&gt;s wherever possible. To live without these tools is for some developers, like cutting off a limb at the neck. It's a horrid disabled world.&lt;br /&gt;&lt;br /&gt;Windows is one of these worlds that lacks the default access to UNIX tools. The DOS command line is not a poor substitute because it's not even in the same league. It's like comparing Java as a programming language to &lt;a href="http://users.snowcrest.net/donnelly/piglatin.html"&gt;pig latin&lt;/a&gt;. It's simply a silly and meaningless comparison.&lt;br /&gt;&lt;br /&gt;For those of us (usually .NET devs) who must play in an exclusively Windows world, we have a few ways around it. We either have a non-Windows machine at hand or we use Cygwin. Cygwin is a library that provides POSIX functionality in the Windows environment. You install it on any Windows machine (an install that takes at least four coffees) and it gives a UNIX like environment for Windows. The Cygwin commands look like UNIX commands but are actually wrapping Windows system calls that do a similar thing or have been extended to do so.&lt;br /&gt;&lt;br /&gt;There are of course limitations to the scope of Cygwin that are based in the fundamental differences between the Windows and UNIX based operating systems. Pretty much, the foundations aren't the same so only so much can be faked. Often that much is enough to provide a developer with these much needed tools.&lt;br /&gt;&lt;br /&gt;Now Cygwin on it's own is a nice little tool and a lovely idea but the serenity comes from all the tools that are built on this basic foundation. There are shells that let you believe you could be using bash; text tools like grep; and much more.&lt;br /&gt;&lt;br /&gt;The zealots will kick me and say this is a poor replacement in a bad environment. I tend to agree but it's the best thing out there for us .NET devs. How any developer can live without it, is beyond my understanding.&lt;br /&gt;&lt;br /&gt;You'll find &lt;a href="http://www.cygwin.com/"&gt;Cygwin here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Have fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7123047400594320612?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7123047400594320612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7123047400594320612' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7123047400594320612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7123047400594320612'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/11/take-2-cygwin-day-and-call-me-in.html' title='Take 2 Cygwin a day and call me in the morning'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/TNJ212IT6VI/AAAAAAAAEGQ/ndDXwXM3joc/s72-c/tools.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4290515384101267450</id><published>2010-10-26T20:24:00.004+11:00</published><updated>2010-10-26T22:29:58.901+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Stop Being Such Bitches</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://womenboxing.blogspot.com/2010/03/female-boxing-holly-holm-defeats.html"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 334px; height: 400px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TMa7l5POmUI/AAAAAAAAEFo/OaVkidU81B0/s400/Holly+Holm+-+boxing+-+female+boxing+-+boxing+women.jpg" alt="" id="BLOGGER_PHOTO_ID_5532315451965479234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There have been a lot of discussions on this blog about what it feels like for a geek girl in this IT world. I've even covered the topic of what a geek girl is and isn't. This time, I want to tell you one of the worst things about being a geek woman.&lt;br /&gt;&lt;br /&gt;It is other women.&lt;br /&gt;&lt;br /&gt;You would think that the sisterhood would encourage women to support each other through tough times in a workplace. Women always refer to the "boys network" in a company. We talk about how they look after their crew and make a lot of deals over a beer. Women work at getting in to these circles of blokes to play the game too. Some are successful. Some aren't.&lt;br /&gt;&lt;br /&gt;Over and over again, I see women pushing each other down for what seems to be no other reason than to be mean. Women can be more cruel to each other than any man can be to us.&lt;br /&gt;&lt;br /&gt;If you'd help out a guy then a woman should be no different. Women should be building a support network in their careers made up of men and other women.&lt;br /&gt;&lt;br /&gt;What happened to innate female empathy?&lt;br /&gt;&lt;br /&gt;I refuse to push down or even push back at another woman at work. I don't go to work to fight. I go to work to get stuff done. Help me do this or don't. I simply will not play the games of 15 year old school girls. We are passed that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4290515384101267450?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4290515384101267450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4290515384101267450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4290515384101267450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4290515384101267450'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/10/stop-being-such-bitches.html' title='Stop Being Such Bitches'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TMa7l5POmUI/AAAAAAAAEFo/OaVkidU81B0/s72-c/Holly+Holm+-+boxing+-+female+boxing+-+boxing+women.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4729658691893037463</id><published>2010-10-17T12:14:00.003+11:00</published><updated>2010-10-17T18:28:38.486+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Download'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Buying'/><title type='text'>Australians Buying Software Online</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/graciepoo/2348414672/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/TLpPq9eX6PI/AAAAAAAAEEg/Sb_vuweKEZw/s400/monopoli.jpg" alt="" id="BLOGGER_PHOTO_ID_5528819092025764082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It may be obvious to all around but I only just worked it out. When you are buying software to be downloaded from the Internet, choose to pay in US dollars. It is legal to pay in any currency you want but with our almost parity in Australia, US$ end up being a lot cheaper.&lt;br /&gt;&lt;br /&gt;Last night, I saved $14 on software by choosing to buy via Paypal and opting for US dollar prices over Australian prices.&lt;br /&gt;&lt;br /&gt;This goes for anything you buy online, I guess. Software is just famous for being priced at different levels depending on your currency. Let Paypal do your conversion. They are fairer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4729658691893037463?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4729658691893037463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4729658691893037463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4729658691893037463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4729658691893037463'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/10/australians-buying-software-online.html' title='Australians Buying Software Online'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/TLpPq9eX6PI/AAAAAAAAEEg/Sb_vuweKEZw/s72-c/monopoli.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8474859043011756942</id><published>2010-10-16T15:15:00.004+11:00</published><updated>2010-10-16T15:35:19.393+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Effort'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>When do you not generalise your code?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/elanaspantry/2162647305/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 268px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/TLkrfffex7I/AAAAAAAAEEU/aEB7COKuOYo/s400/simple+bread.jpg" alt="" id="BLOGGER_PHOTO_ID_5528497837603473330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At the moment, I'm working on a Silverlight project. The best way to learn a technology is to build something in it. Reading books and blogs and the rest will give you a vibe for what the technology is but only getting your hands dirty will make it real. Real is when you understand the beast and all its tides and moods. You also get to know the elegance of it and where the shine in its soul radiates from. Yes, I'm still talking about Silverlight.&lt;br /&gt;&lt;br /&gt;One of the simple tasks in this current project requires me to parse a &lt;a href="http://local.wasp.uwa.edu.au/%7Epbourke/dataformats/csv/"&gt;CSV&lt;/a&gt; file. That's easy enough to write on your own but anyone who has written a parser knows that if someone else has built one that does what you want then you should consume theirs. They would have handled all the exceptions and possible gotch-yas. This means I don't have to worry about that and I can get the task done quickly.&lt;br /&gt;&lt;br /&gt;In this case, &lt;a href="http://www.codeproject.com/KB/database/CsvReader.aspx"&gt;Fast CSV&lt;/a&gt; is a common choice in the .NET world. I've used it in the past on and it does what it promises. With the &lt;a href="http://www.opensource.org/licenses/mit-license.php"&gt;MIT license&lt;/a&gt;, the price is right too.&lt;br /&gt;&lt;br /&gt;Sounds easy right? Well not totally. For my Silverlight application to consume this library, it must be a compiled as a SIlverlight library. Easy enough - I'll port it. Thing is, this code extensively uses the System.Data namespace and as I found out quickyly, there will be no talking directly to a database from a Silverlight application. That makes complete sense.&lt;br /&gt;&lt;br /&gt;After looking in to it, the main use of System.Data is in the use of the IDataReader to stream the CSV file. There is also some DataTable usage. Nothing that couldn't be wrangled to use another stream reader and a generalised Linq table, in it's place.&lt;br /&gt;&lt;br /&gt;But then I stopped...&lt;br /&gt;&lt;br /&gt;When is porting the library more trouble than it is worth? My task is such a small simple one that I might as well write a custom parser that takes each line of the CSV file that I'm reading via normal file IO and push it straight to my view models for display.&lt;br /&gt;&lt;br /&gt;Robustness of the code is an issue but I'll test drive it and keep it simple and neat. It doesn't have to be so general that it caters for every possible situation. It is just for my situation.&lt;br /&gt;&lt;br /&gt;In this case, I have decided that a quick CSV parser that exists as a helper class in my project is good enough for this task. It is not just good enough but it's the right choice. Get the job done in a thorough way but don't over engineer the solution because it is the funnest way.&lt;br /&gt;&lt;br /&gt;This has been a good learning experience and has solidified my resolve that sometimes you can write code that isn't so gold-plated and generalised and that's ok.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8474859043011756942?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8474859043011756942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8474859043011756942' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8474859043011756942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8474859043011756942'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/10/when-do-you-not-generalise-your-code.html' title='When do you not generalise your code?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/TLkrfffex7I/AAAAAAAAEEU/aEB7COKuOYo/s72-c/simple+bread.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7528687587051467832</id><published>2010-10-14T12:23:00.003+11:00</published><updated>2010-10-14T12:30:46.492+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Unable to start asp.net development server because port [port number] is in use</title><content type='html'>After a debugging session was stopped abruptly in VS.NET 2010, the error "Unable to start asp.net development server because port [port number] is in use" would appear every time I tried to debug or run the web application.&lt;br /&gt;&lt;br /&gt;Restarting Cassini and killing all instances, restarting VS.NET and ultimately kicking Windows did not release the port. When I checked manually, the port was not in use but Visual Studio insisted it was. Changing the port used or auto generating the port to be used did not work around this issue.&lt;br /&gt;&lt;br /&gt;This is a Silverlight application but the issue does not seem to be Silverlight specific.&lt;br /&gt;&lt;br /&gt;The fastest way to fix this problem was to Remove the web application project from the solution and re-Add it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7528687587051467832?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7528687587051467832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7528687587051467832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7528687587051467832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7528687587051467832'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/10/unable-to-start-aspnet-development.html' title='Unable to start asp.net development server because port [port number] is in use'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7914067390103597923</id><published>2010-09-28T22:04:00.002+10:00</published><updated>2010-09-29T20:10:41.251+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Buzz Numbers'/><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>Start by reading this documentation</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/wheatfields/4774087006/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/TKMQTzn3lBI/AAAAAAAAEDY/3L_oL-i3t9s/s400/doco.jpg" alt="" id="BLOGGER_PHOTO_ID_5522275500547347474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There is no bigger buzz kill when starting a new job than that moment when a tree load of written documentation is set before you and you are told to start there.&lt;br /&gt;&lt;br /&gt;"Read this to give you an idea of how we work."&lt;br /&gt;&lt;br /&gt;That is a ridiculous idea. Reading documentation to find out how people work is about as useful as reciting them a haiku in Japanese, when they first cross the workplace threshold. Actually, the haiku is much less boring.&lt;br /&gt;&lt;br /&gt;When I started at Buzz Numbers last week, I was given a computer and a set of short videos to watch. These walked me through the main code solution and discussed different areas in details. They are not only introduction documentation but good refresher resources when you go in to an unknown section of the code.&lt;br /&gt;&lt;br /&gt;I was happily coding within an hour of starting work, on my first day. The video docs gave a good push start and an easy reference point for when I asked myself where that thing was again.&lt;br /&gt;&lt;br /&gt;Since Buzz Numbers has me sign an NDA on my first day, I won't be sharing any of their video documentation with you. It's not a new idea so there are many examples online of how this can be achieved. Thing is that it's usually big companies with big budgets that are doing this. I work for a start up and they did it without any major cost.&lt;br /&gt;&lt;br /&gt;Simple. Inexpensive. Effective.&lt;br /&gt;&lt;br /&gt;What more could you ask for? Try this at your workplace if you understand the pain a new starter feels.&lt;br /&gt;&lt;br /&gt;Here is an example of Yahoo's YUI video documentation...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="512" height="322"&gt;&lt;param name="movie" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="AllowScriptAccess" value="always"&gt;&lt;param name="bgcolor" value="#000000"&gt;&lt;param name="flashVars" value="id=11433547&amp;amp;vid=4252968&amp;amp;lang=en-us&amp;amp;intl=us&amp;amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6827/77936533.jpeg&amp;amp;embed=1"&gt;&lt;embed src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" bgcolor="#000000" flashvars="id=11433547&amp;amp;vid=4252968&amp;amp;lang=en-us&amp;amp;intl=us&amp;amp;thumbUrl=http%3A//l.yimg.com/a/p/i/bcst/videosearch/6827/77936533.jpeg&amp;amp;embed=1" width="512" height="322"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7914067390103597923?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7914067390103597923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7914067390103597923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7914067390103597923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7914067390103597923'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/09/start-by-reading-this-documentation.html' title='Start by reading this documentation'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/TKMQTzn3lBI/AAAAAAAAEDY/3L_oL-i3t9s/s72-c/doco.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4886658473513379144</id><published>2010-08-13T10:38:00.002+10:00</published><updated>2010-08-13T10:43:51.380+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><title type='text'>Geek Girl - For Better or Worse</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://xkcd.com/58/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 97px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/TGSVKcU_t6I/AAAAAAAAEAU/l_uRHHBVCNU/s400/why_do_you_love_me.jpg" alt="" id="BLOGGER_PHOTO_ID_5504688651189073826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hey Geek Girl, you know your marriage is in trouble when...&lt;br /&gt;&lt;br /&gt;0. You look to &lt;a href="http://xkcd.com/"&gt;xkcd&lt;/a&gt; for relationship advice;&lt;br /&gt;&lt;br /&gt;1. Waiting for a green build sends your heart racing more than seeing your husband;&lt;br /&gt;&lt;br /&gt;2. You get more excited in bed at night when you hear emails arrive on your smart phone than when anything else pops up;&lt;br /&gt;&lt;br /&gt;3. Comments on your latest blog post elicit more emotion than the man you married;&lt;br /&gt;&lt;br /&gt;4. You have defined the majority of your conversation with your spouse  as a regular expression punctuated with "uh huh" and "yep, I'm  listening";&lt;br /&gt;&lt;br /&gt;5. You stop reading his tweet stream and scroll past most of what he  says. Before seeing him at home after work, you read the latest tweets  so you can fake interest in his day;&lt;br /&gt;&lt;br /&gt;6. He gets emoticons more than he get cuddles;&lt;br /&gt;&lt;br /&gt;7. You "like" his facebook status without reading what it is and often  have to explain that liking a negative one was in fact showing support.  Oops;&lt;br /&gt;&lt;br /&gt;8. The thought crosses your mind that selling your engagement ring diamond would easily cover a new MacBook Pro, iPad and phone;&lt;br /&gt;&lt;br /&gt;9. His handwriting seems to look like line noise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4886658473513379144?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4886658473513379144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4886658473513379144' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4886658473513379144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4886658473513379144'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/08/geek-girl-for-better-or-worse.html' title='Geek Girl - For Better or Worse'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/TGSVKcU_t6I/AAAAAAAAEAU/l_uRHHBVCNU/s72-c/why_do_you_love_me.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7585658741952452971</id><published>2010-07-24T22:56:00.003+10:00</published><updated>2010-07-24T23:24:31.612+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>Choose Me. Choose Me.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/sparktography/477094658/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 262px; height: 400px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TErpbrLzcqI/AAAAAAAAD-A/xaSwKAh_xWI/s400/reach+out.jpg" alt="" id="BLOGGER_PHOTO_ID_5497462956817085090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There are all sorts of programs run in large companies these days to help people get through the working year, salary negotiation, conflict resolution and plain old peer support. They can be structured or informal but they are always there. No matter where I work, I set up a network inside and outside of work to make sure that there is a person to vent to; a person to bounce creative ideas off; someone to suggest how to resolve road blocks; etc..&lt;br /&gt;&lt;br /&gt;Everyone needs some kind of support network in all aspects of their life. In this case, I am directly referring to the work place. Your job is something that you spend a whole lot of waking hours doing, so you have to make sure you do all that is in your power to make it a good experience. You'll notice I did not say "tolerable experience" because I don't think you should do a job that you don't like. If it is painful then fix it or leave it. Find a place you like to work and keep it that way. Making work a rewarding and enjoyable place to do is part of your full time job. Work at it. Work at doing the actual job well but also work on your relationships, your brand, your reputation and your purpose. It takes effort to do anything well. Make that effort enjoyable by finding a gang to help you negotiate the professional maze.&lt;br /&gt;&lt;br /&gt;I would like to offer to be in the network of someone starting out as a software engineer. It doesn't matter how much experience you have or even if we are in the same technology. Female or male - it doesn't matter to me if it doesn't matter to you. If you are in Sydney and would like to build a graph of people who will help you out professionally then please contact me. I mean this on a one to one level.&lt;br /&gt;&lt;br /&gt;What do I get out of it? I get to help out someone starting in the same way that so many great professionals stopped and helped me in my early career. I do this for a lot of younger people I have worked with and am sure that they would be happy to be references for me.&lt;br /&gt;&lt;br /&gt;Let's start with a conversation about where you are going or where you want to be.&lt;br /&gt;&lt;br /&gt;Contact me here by commenting on my blog or @damana on twitter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7585658741952452971?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7585658741952452971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7585658741952452971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7585658741952452971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7585658741952452971'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/07/choose-me-choose-me.html' title='Choose Me. Choose Me.'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TErpbrLzcqI/AAAAAAAAD-A/xaSwKAh_xWI/s72-c/reach+out.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-6514411907529345201</id><published>2010-06-21T18:30:00.004+10:00</published><updated>2010-06-21T22:22:41.141+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trust'/><category scheme='http://www.blogger.com/atom/ns#' term='Effort'/><category scheme='http://www.blogger.com/atom/ns#' term='Telecoms'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><category scheme='http://www.blogger.com/atom/ns#' term='Optus'/><title type='text'>How Software Loses My Trust</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/lwr/2143755434/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/TB9Zhmid8jI/AAAAAAAAD8I/q9tixluphKQ/s400/phone+exchange.jpg" alt="" id="BLOGGER_PHOTO_ID_5485201304976224818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have one word for you that is the most important concept in Information Technology: &lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Trust&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If users don't trust your product then they won't use it. It doesn't matter how many features you have or how many fancy schmancy algorithms are written in the latest whiz bang technology if a person uses your site and it behaves badly.&lt;br /&gt;&lt;br /&gt;When you walk in to a financial institution, they will make it clear that the power of their brand and the price of their stock lies in the confidence their customers have in them. Especially important is the outward facing applications that they have on the Internet. Banks and Insurers are well aware of the importance of this. Even though they are huge mammoth organisations that do not always deal well with the tides of change, they will let that one guiding principal of being reliable and trustworthy guide their software development. This said, I mean mostly the facade of it in the very least. Then be careful what you pretend to be because you might just become that and finance computing is not that bad these days compared to other domains.&lt;br /&gt;&lt;br /&gt;Why am I currently going on about trust in online software? Well, it all comes back to my old and true nemesis: &lt;a href="http://www.optus.com.au/"&gt;Optus&lt;/a&gt;. For those of you who don't know the joke of a telecommunications market that we have in Australia, Optus is the second biggest telco in the game. &lt;a href="http://telstra.com.au/"&gt;Telstra&lt;/a&gt; is the biggest and still dominates since it had all it's infrastructure paid for when it was fully owned by the Federal Government and then privatised to make a quick &lt;span style="color: rgb(51, 255, 51);"&gt;$&lt;/span&gt;buck&lt;span style="color: rgb(51, 204, 0);"&gt;$&lt;/span&gt;. There are global players here like &lt;a href="http://vodaphone.com.au/"&gt;Vodaphone&lt;/a&gt;, &lt;a href="http://www.virginmobile.com.au/"&gt;Virgin Mobile&lt;/a&gt; and &lt;a href="http://www.three.com.au/"&gt;3&lt;/a&gt;. No matter how innovative the imports try to be, the ruling duopoly holds them back with their market controlling behaviour and terrible customer service.&lt;br /&gt;&lt;br /&gt;Recently, I've been led to believe Telstra service has improved but I'll have to wait to experience it again before calling it. As a mobile phone user with Optus, I have the right to throw as much mud as is acceptable, especially after the experience I had today.&lt;br /&gt;&lt;br /&gt;This afternoon after 5pm, I received an automated call from Optus informing me that I had failed to pay my last two mobile phone bills for May and June. I was surprised at first and then remembered that I paid them on their website. You create an account on their website when you sign up for your phone account so that you can easily make payments online using your credit card. Over the almost 2 years of my phone contract, I have always paid using their website. It usually takes between 2-3 attempts to get the payment to go through and no matter how many times I ask them to save my credit card details for later use, they never manage to.&lt;br /&gt;&lt;br /&gt;Each time I go to pay my bill, I login and go searching for the relevant bill paying screen. Of course one of the main headings is Bills in the left hand menu. Under that is a list of features and not one of them is for paying your bill. You instead have to click on the Bills heading to go to pay your bill. Tricky but I learned that after about 6 months of wanting to commit homicide on any random member of their usability team. Ahh, the delusional assumption that they even have one is still strong in me.&lt;br /&gt;&lt;br /&gt;Once the page required to pay my bill is found in the rat's nest that is their website, I re-enter all my card details and choose to pay. You can't choose how much you want to pay. They give you that number and you just pay it. The invoice amount is updated once a month and if you have already paid but it didn't register then they just add it to the next total. I learned to ignore that too. Once I paid twice the amount and they wouldn't even reimburse but instead held it over for my next invoice. Yes, their refused to pay back money that they should never even have taken.&lt;br /&gt;&lt;br /&gt;Then I pay until they accept the payment. Like I said, after about 3 tries. They give me a receipt number and my final assumption is that the bill is successfully paid. Actually, that assumption is based on the text on the screen that says something about your bill being successfully paid.&lt;br /&gt;&lt;br /&gt;Several months later, an automated dialing machine with a rude message accusing me of being a bad customer who never pays is placed to my mobile phone after working hours.&lt;br /&gt;&lt;br /&gt;At least they are consistent but the one thing that Optus does not have is my trust. I lack trust in their billing system, their payment gateway, their phone service and even snigger at their advertising. They DON'T care what I think. I'm stuck in a two year contract with them that promises I'll pay my $83.50 per month for my phone service. Obviously none of that money goes to their IT department. We instead pay for that with blood.&lt;br /&gt;&lt;br /&gt;When the time comes to find a new provider for my mobile phone, I'm considering dropping back to tin cans and string. It certainly won't be with Optus because I can't trust them and I don't want a relationship with someone I can't trust.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-6514411907529345201?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/6514411907529345201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=6514411907529345201' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6514411907529345201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6514411907529345201'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/06/how-software-loses-my-trust.html' title='How Software Loses My Trust'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/TB9Zhmid8jI/AAAAAAAAD8I/q9tixluphKQ/s72-c/phone+exchange.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8919412706898641612</id><published>2010-06-01T09:43:00.000+10:00</published><updated>2010-06-01T09:44:34.276+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPad'/><title type='text'>iPad-ing Across the Universe</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7vd1oW85hU/TARJzhNp4ZI/AAAAAAAAD68/65X8skwDRso/s1600/2010-06-01+at+09.07+%233.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/TARJzhNp4ZI/AAAAAAAAD68/65X8skwDRso/s320/2010-06-01+at+09.07+%233.jpg" alt="" id="BLOGGER_PHOTO_ID_5477584196227162514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I got me an iPad :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8919412706898641612?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8919412706898641612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8919412706898641612' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8919412706898641612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8919412706898641612'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/06/ipad-ing-across-universe.html' title='iPad-ing Across the Universe'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/TARJzhNp4ZI/AAAAAAAAD68/65X8skwDRso/s72-c/2010-06-01+at+09.07+%233.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4632528055264437001</id><published>2010-04-27T16:01:00.005+10:00</published><updated>2010-04-28T01:55:52.052+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Languages'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>C# 4 Last Minute Additions</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;: I'm being very anti-Microsoft at the moment because they make it too  expensive for me to get an MSDN license to develop at home. In the past,  I've been a big fan but I'm going to defect if they continue down the  money or nothing path.  Until they stop excluding me from their expensive community, I shall sulk and ridicule them. Please read and have a giggle. It's meant in jest.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/lwr/2390144062/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/S9aA5U4WNKI/AAAAAAAAD5A/A5QhPSt0X1o/s320/C.jpg" alt="" id="BLOGGER_PHOTO_ID_5464696920206619810" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I love reading &lt;a href="http://blogs.msdn.com/ericlippert/default.aspx"&gt;Eric Lippert's blog&lt;/a&gt; because he is great at explaining complex ideas in an easy way. That is something severely lacking online. He also dishes the news on my latest reading obsession... C# 4.&lt;br /&gt;&lt;br /&gt;They have managed to slip in a few extra features last minute in to the next version of the language. He describes them in more details &lt;a href="http://blogs.msdn.com/ericlippert/archive/2010/04/01/SomeLastMinuteFeatures.aspx"&gt;here&lt;/a&gt;. The one's I thought were cute and make the language a little more interesting are the&lt;span style="font-weight: bold;"&gt; goes to --&gt;&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;is approached by &lt;--&lt;/span&gt; operators used in loop conditions.&lt;br /&gt;&lt;br /&gt;The examples given on his blog show them being used like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="code"&gt; &lt;p&gt;int x = 10;&lt;br /&gt;// this is read "while x goes to zero"&lt;br /&gt;while (x  --&gt; 0)&lt;br /&gt;{&lt;br /&gt; Console.WriteLine("x = {0}", x);&lt;br /&gt;}&lt;/p&gt;&lt;/span&gt;&lt;span class="code"&gt;&lt;p&gt;int x = 10;&lt;br /&gt;// this is read "while zero is approached by x"&lt;br /&gt;while  (0 &lt;-- x) {     Console.WriteLine("x = {0}", x); } &lt;/p&gt;&lt;/span&gt;&lt;br /&gt;Interestingly, when I mentioned the last minute additions to a colleague she commented that she hopes they implemented them properly. In C# 3 they snuck in partial methods and auto-properties which I wouldn't want to live without (although I am in Java-land at the moment).&lt;br /&gt;&lt;br /&gt;I'm excited about C# 4. Now I just have to get Microsoft to give me a reasonably priced MSDN license for an individual who isn't a student, a company or a start-up. Market gap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4632528055264437001?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4632528055264437001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4632528055264437001' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4632528055264437001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4632528055264437001'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/04/c-4-last-minute-additions.html' title='C# 4 Last Minute Additions'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/S9aA5U4WNKI/AAAAAAAAD5A/A5QhPSt0X1o/s72-c/C.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3023633858924030412</id><published>2010-04-27T15:00:00.005+10:00</published><updated>2010-04-27T15:08:25.146+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>A recent email I sent to a friend who has started automated testing</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/jackhynes/366958167/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/S9ZxOViCqYI/AAAAAAAAD44/46fY5muF2K0/s320/testing.jpg" alt="" id="BLOGGER_PHOTO_ID_5464679688972708226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here is a quick email I threw together for a friend who has started writing automated tests and asked if there is a reason to have lots of different kinds of tests covering the same area. Yes, it's simplistic and I'm sure a bunch of ThoughtWorkers would kick me and say it is better explained in other ways but I think this is a good summary. In case it helps others, here it is...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;clipped&gt;&lt;/clipped&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OK, this is the way I structure testing of an application. This works  when the tests are written retrospectively or if the application is  written in a test driven manner.&lt;br /&gt;&lt;br /&gt;There are three &lt;b&gt;types &lt;/b&gt;of tests:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Functional tests -  UI testing that uses the terms of the users/business. You'll see tools  like Selenium with junit/nunit/rspec used at this level. Functional  areas of the application are tested in a similar workflow to what I user  would use. Happy path comes in here for primary workflows. Deliberate  error (validation and business logic) and exception testing at the  highest level occur now;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Integration tests - these tests are used when you are plugging  all the bits of your system together. Bits can mean layers, components  within a layer, or dependencies outside of your system (third party  web services, etc...). The point of this is a test interfaces and APIs  that are public to the component or application parts. You test input  and output in a black box way. Again, with all good data and then  causing errors and exceptions;&lt;/li&gt;&lt;li&gt;Unit tests - These tests are the very specific low level tests that  check that a unit of functionality is working. This can be at a class  level, library or component. You'll see mocking frameworks used here to  imitate data sources or connecting systems. At this point, you do not  want to be distracted by the possibility of functionality external to  this unit causing issues so it doesn't talk to anything and gets all  input or directs all output to mocked objects.&lt;/li&gt;&lt;/ol&gt;The reason for the three layers individually is explained above in  each point. The reason you do them together is that with continuous  integration and thorough test suites, you can easily track down where an  error is occurring and focus in on the area of concern. All these tests  should be used together.&lt;br /&gt;&lt;br /&gt;This is a starting point and written at a high-level. Ask me if you  need it clarified further.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3023633858924030412?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3023633858924030412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3023633858924030412' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3023633858924030412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3023633858924030412'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/04/recent-email-i-sent-to-friend-who-has.html' title='A recent email I sent to a friend who has started automated testing'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/S9ZxOViCqYI/AAAAAAAAD44/46fY5muF2K0/s72-c/testing.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7304114931785919994</id><published>2010-04-27T11:27:00.004+10:00</published><updated>2010-04-27T14:02:20.770+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Offline Installers</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/maherberro/372793091/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/S9ZhvXrh9rI/AAAAAAAAD4g/qv2laGXXN28/s320/standalone.jpg" alt="" id="BLOGGER_PHOTO_ID_5464662664299017906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Most installers available for download online these days, will actually download a a small executable that will download the rest of the required installation files form the Internet as it progresses. If you have a slow connection or are using a proxy then it will often fail.&lt;br /&gt;&lt;br /&gt;Do not fret.&lt;br /&gt;&lt;br /&gt;Usually, there will be an option to use what is called an Offline Installer. It will be accessible from another location of the installer's website. If it isn't obvious and easy to find then search for &lt;span style="font-style: italic; font-weight: bold;"&gt;application&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; installer offline&lt;/span&gt; in your favourite search engine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For example: &lt;/span&gt;Here is &lt;a href="http://www.google.com/chrome/eula.html"&gt;the online installer for Chrome&lt;/a&gt; from Google and the here is &lt;a href="http://www.google.com/chrome/eula.html?standalone=1&amp;amp;hl=en"&gt;the offline one&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This may seem too simple to share but I've encountered several people who have given up trying to install something because it failed through the online version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7304114931785919994?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7304114931785919994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7304114931785919994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7304114931785919994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7304114931785919994'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/04/offline-installers.html' title='Offline Installers'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/S9ZhvXrh9rI/AAAAAAAAD4g/qv2laGXXN28/s72-c/standalone.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4321805730937979981</id><published>2010-04-09T12:00:00.000+10:00</published><updated>2010-04-09T12:16:37.186+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>Restart Windows from the command line</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/S76N0QmfatI/AAAAAAAAD3s/A7LK0Q0ji5k/s1600/2502375390_ac6ae55c2e.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 320px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/S76N0QmfatI/AAAAAAAAD3s/A7LK0Q0ji5k/s320/2502375390_ac6ae55c2e.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5457955727368743634" /&gt;&lt;/a&gt;&lt;br /&gt;If you don't have access to restart a Windows machine (maybe you've remoted in) then here is the cheeky way to do it from the command line...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt; shutdown -r -f -t 01&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Where...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;-r is Restart (you can use -s for a straight Shutdown and -h for Hibernate);&lt;/li&gt;&lt;li&gt;-f is Force; and&lt;/li&gt;&lt;li&gt;-t is Timelapse with a 01 second delay.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;If you want to abort the shutdown use...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt; shutdown -a&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4321805730937979981?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4321805730937979981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4321805730937979981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4321805730937979981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4321805730937979981'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/04/restart-windows-from-command-line.html' title='Restart Windows from the command line'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/S76N0QmfatI/AAAAAAAAD3s/A7LK0Q0ji5k/s72-c/2502375390_ac6ae55c2e.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4222649893700601870</id><published>2010-03-24T11:00:00.001+11:00</published><updated>2010-03-24T13:09:12.374+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ada Lovelace Day'/><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Lindsay Ratcliffe'/><title type='text'>Ada Lovelace Day: Lindsay Ratcliffe</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/S6lxcj_TmII/AAAAAAAAD2g/24fdVIIYpEw/s1600-h/Lindsay.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/S6lxcj_TmII/AAAAAAAAD2g/24fdVIIYpEw/s320/Lindsay.jpg" alt="" id="BLOGGER_PHOTO_ID_5452013559419738242" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Today is Ada Lovelace Day. It is a day to highlight the accomplishments of women in technology. In particular, to shine a light on a woman who has influenced your life personally.&lt;br /&gt;&lt;br /&gt;This post is being written on the day it is due because I had to think about it a lot. It certainly isn't hard to find someone to name and praise because I know so many fabulous females in computing. A shared post on five different geek girls crossed my mind but in the end, I knew it had to be about one person who truly deserved the dedication.&lt;br /&gt;&lt;br /&gt;The last 12 months has been an amazing journey and like all good adventures, you encounter interesting characters along the way. Some stay around for a while and others are just meant to come in for a spell and help character development. This is one of those players.&lt;br /&gt;&lt;br /&gt;Her name is &lt;a href="http://au.linkedin.com/in/lratcliffe"&gt;Lindsay Ratcliffe&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There have been many amazing high-achieving women in my career who have taken me under their wing and taught me how to improve as a professional. Lindsay taught me to improve as a person and let all the benefits of that seep in to other parts of my life, including the professional side.&lt;br /&gt;&lt;br /&gt;She did this by supporting everyone around her, in her working environment. It was not a motherly thing or done in a condescending way. She has a magic that makes you feel OK to be who you are. By showing respect and consideration to others, she empowers them.&lt;br /&gt;&lt;br /&gt;At ThoughtWorks, there are many impressive alpha-females who you can't help but be affected by. The majority of the time, that was in a positive way. Unfortunately like most women in the workplace, they compete against each other. I see men compete a lot but also find ways to work together. I see women compete with men and also work well with them. I don't often see women at the top of their game work well with other women, a lot of the time. Things are changing but they are also staying the same.&lt;br /&gt;&lt;br /&gt;When my star shone brightest in the last year, people flocked to my side to bask in the radiance. When it faded to a sputter, only the secure women stayed around. Lindsay simply brought her glow in to back me up. She was kind, inspiring, brilliant and wise when everything around me was falling apart.&lt;br /&gt;&lt;br /&gt;She taught me to be kind to myself and not be my own worst critic, as perfectionists often are. She told me that you don't have to be invincible but just need to appear that way. She insisted I stop lying to myself and fix the issues I had in life. She dragged herself out when 8 months pregnant and made sure I survived the hardest days.&lt;br /&gt;&lt;br /&gt;I won't use words like selfless and others that are used to describe women. Instead I like to think of her as solid, wise, at peace with herself, smart, charming and organised. She also lives up to what she says she believes.&lt;br /&gt;&lt;br /&gt;Since meeting Lindsay, I have not wanted to be her. That was my normal reaction to people I respected and was in awe of. Instead, I want to be me but would love to make others feel the way she makes people feel. Make it ok for people to be who they are, at least around me. Respect everyone for their magic and talent. Celebrate and rejoice at how good life is and be at peace with myself.&lt;br /&gt;&lt;br /&gt;I don't want to be her. I want to be just like Lindsay Ratcliffe, while completely being me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4222649893700601870?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4222649893700601870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4222649893700601870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4222649893700601870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4222649893700601870'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/03/today-is-ada-lovelace-day.html' title='Ada Lovelace Day: Lindsay Ratcliffe'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/S6lxcj_TmII/AAAAAAAAD2g/24fdVIIYpEw/s72-c/Lindsay.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-906254307415080801</id><published>2010-03-20T23:37:00.000+11:00</published><updated>2010-03-21T22:33:14.750+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>Would you like fries with that?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/lulutoo/3731427405/"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/S6TKbiA8byI/AAAAAAAAD2Q/41w2zoHHuX8/s320/fries.jpg" alt="" id="BLOGGER_PHOTO_ID_5450704023361187618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One in ten.&lt;br /&gt;&lt;br /&gt;That's how many managers I have worked with who have made me better at my job just by working for them. There were three things about them that made me a better employee...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;They are direct&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If they wanted something from me then they asked me clearly and explained the reasons why. That could include doing things to gain brownie points with clients; for political reasons inside an organisation; for urgency; or for winning or losing a battle that needed to be won or lost.&lt;br /&gt;&lt;br /&gt;Most developers are not political animals. In fact, trying to make us that works the other way. We don't have the same drives as the fox in the work place. Gaining power and status doesn't attract us to the work we do. Developers who like that usually end up as managers or start calling themselves Architects. No, software engineers chose to work in this profession because creating something from nothing is what we enjoy doing. Bringing order to chaos. Finding patterns in a mess of requirements. Deconstructing an unfathomable problem domain and rebuilding it in technology.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, we aren't stupid or disconnected from the games played in the workplace. Most of us would rather be but we are aware the these dynamics exist and that no matter how illogical it is, we are affected by them. We often see them as an necessary evil that must be dealt with to get stuff out of our way so that real stuff can be achieved.&lt;br /&gt;&lt;br /&gt;With that in mind, when the political manoeuvrings draw us in we would rather you just tell us what you need us to do to make them go away. I have had many a management type ask me what it is ok to tell the team. My answer is almost always the same: tell them the truth.&lt;br /&gt;&lt;br /&gt;Manipulation to get us to do what you want is only going to come across as condescending and kinda stupid (on the part of the manager). We are grown ups. Be straight up with why and how and unless it's illegal or completely immoral then you will find that we are on your side and do want to help make things happen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;They remove blockers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What I do well, is build things. In my world it involves talking to a framework on top of an operating system, running on hardware in a controlled little utopia that (in the best case) helps someone do their job better or be serviced at a higher level. People talk of efficiency and cost-benefit and rapid delivery and usability. That's a lot of blah blah blah to me most of the time. I want what I produce to make a positive difference in the world. When I walk off this client site, it should be in a better state than when I arrived. Be that for the workers internally or customers and external agents. Whoever uses the system should be benefiting from the man(a) hours I put in to it.&lt;br /&gt;&lt;br /&gt;Those hours are the hours I bill the client that add up to the how much the project costs and how long it takes. I'm a cog in a complex system of other cogs including other software developers, managers, analysts, business people, users, testers, and dozens of others who care about getting the project out the door. What I need from a manager is to not know what all the other cogs are going through, except in summary. I need to work with a person who can hear me when I identify something that is slowing my progress and use whatever means they have to remove that blocker.&lt;br /&gt;&lt;br /&gt;The best managers I have every worked with removed those blockers systematically and efficiently. They heard the pain points we were experiencing and took them seriously. They did not pacify with promises of actions but instead did all they could to get us moving again or at least explain what was holding us up. Information will set you free. Keeping information flowing in to a team and out of it, then on to whoever else needs it or can use it to keep us moving forward is the key to being a good manager or leader of a team.&lt;br /&gt;&lt;br /&gt;People who pacify the team and cushion the message to the client are only prolonging the moment until the truth bites and the pain bubbles up to the surface. It's just like patting someone with a dislocated shoulder on the head and saying "I know it hurts. I'll get something for that right away" and then walking in to the next room and telling the doctor that all the screaming is just the person in the other room, having a pillow fight with a bunch of teenage girls. It doesn't help anyone do their job.&lt;br /&gt;&lt;br /&gt;Solve the problem by removing the blocker and keeping the lines of communication open.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;They are part of the team&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the controversial one. The one that I have argued with many technical leads and managers about. They say that to lead, you can not be part of the group. That leading means living outside the organism that follows you on the leash. It means appearing infallible to those above and those below.&lt;br /&gt;&lt;br /&gt;A very respected project manager at a recent company I worked at gave me feedback at the end of a project that summed up to this: You can not lead a team and be part of that team because no one will do what you say. She was on her way to becoming a big manager in that company. Management loved her because she was one of them. Of course, she wasn't one of us. One of the consultants that went out there and did the actual work. Nobody trusted her. We all liked her and said she was very organised and did her job well but we didn't want to follow her anywhere. She knew how to be a good project manager but she was never a leader.&lt;br /&gt;&lt;br /&gt;A leader doesn't need the authority of another person to lead a group, they need the authority of the group. I did tell her this and she scoffed at it. Interestingly enough, within a month of getting a good promotion she was out drinking with the troops and doing all she could to become one of them. Why? Because bossing someone around only gets you so far. People have to know you understand them and have their best interests at heart or they won't follow you anywhere.&lt;br /&gt;&lt;br /&gt;The big thing a manager needs is to be part of the team. Not necessarily mates who go out boozing it up together but someone who suffers their pain and celebrates their triumphs. Someone who knows what coffees they drink or that they don't drink coffee at all. Of course they have to be organised and structured and good with clients but people always forget how important it is to be good with your team as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the end, most of this can be summarised by one important skill... communication.&lt;br /&gt;&lt;br /&gt;Tell your team what you want in a clear and direct way with the real reasons behind the request. Listen to the team about what is causing them to slow down and remove those blockers or talk to someone else who can. Get to know your team and let them get to know you. You have to spend a lot of your time with these people so they might as well know why your least favourite alcohol is tequila or that the client drives you nuts too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-906254307415080801?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/906254307415080801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=906254307415080801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/906254307415080801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/906254307415080801'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/01/would-you-like-fries-with-that.html' title='Would you like fries with that?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/S6TKbiA8byI/AAAAAAAAD2Q/41w2zoHHuX8/s72-c/fries.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3120817164398998645</id><published>2010-02-22T20:39:00.003+11:00</published><updated>2010-02-22T22:42:07.091+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gatherings'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;User Group&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Darwin Microsoft User Group</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/ryanr/142455033/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/S4JtMcbarkI/AAAAAAAAD1M/vYZyJFuI06w/s320/sharepoint.jpg" alt="" id="BLOGGER_PHOTO_ID_5441031360374025794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:11pt;"&gt;&lt;div&gt;&lt;span style="font-size:130%;"&gt;From Microsoft Marty...&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;quote&gt;&lt;br /&gt;We are pleased to kick off the Darwin user group this Wednesday. Fujitsu will be hosting the event at their premises and will be sponsoring dinner (pizza) for the night. So thanks in advance to Martin Geddes and his team.&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt; &lt;div&gt;We have William Cornwill from Microsoft presenting on &lt;b&gt;SharePoint 2010!!!&lt;/b&gt; I encourage you to forward this invite on to developers/designers within your organisation. &lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div&gt;&lt;br /&gt;William Cornwill is a SharePoint Technology Solutions Professional with Microsoft Australia.  William is an experienced speaker with over 15 years industry experience with backgrounds in Business Intelligence and Web Content Management.  William has worked with Microsoft Australia for 2½ year prior to which he worked for a Melbourne based systems integrator, Strategic Data Management (SDM).  William has an MCTS in Microsoft Office SharePoint Server Configuration and has recently attended the SharePoint 2010 Ignite Training for Developer in Singapore.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/quote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3120817164398998645?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3120817164398998645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3120817164398998645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3120817164398998645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3120817164398998645'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/02/darwin-microsoft-user-group.html' title='Darwin Microsoft User Group'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/S4JtMcbarkI/AAAAAAAAD1M/vYZyJFuI06w/s72-c/sharepoint.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-533665152788265325</id><published>2010-02-10T12:08:00.002+11:00</published><updated>2010-02-10T12:10:32.553+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Books'/><category scheme='http://www.blogger.com/atom/ns#' term='Algorithms'/><title type='text'>Algorithms</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/damana/4345048420/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/S3IHP3krHlI/AAAAAAAAD00/wpMucN4VdWI/s320/Algorithms.jpg" alt="" id="BLOGGER_PHOTO_ID_5436415669386813010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am truly a geek girl. Today I am happy about replacing the one thing I regret losing in my divorce :o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-533665152788265325?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/533665152788265325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=533665152788265325' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/533665152788265325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/533665152788265325'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/02/algorithms.html' title='Algorithms'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/S3IHP3krHlI/AAAAAAAAD00/wpMucN4VdWI/s72-c/Algorithms.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3202149388800215521</id><published>2010-02-06T03:01:00.016+11:00</published><updated>2010-02-06T20:47:39.783+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic typing'/><title type='text'>Quack!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/expressmonorail/3251561017/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 329px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/S2xE2BRxMUI/AAAAAAAAD0Y/8JZOmK69NFo/s400/Duck.jpg" alt="" id="BLOGGER_PHOTO_ID_5434794545175933250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since I am prancing through the playground that is Objective-C at the moment, I'm having to face concepts that have been pushed to the back of my C#'nd mind. Of course, I'm talking pre-C# 4.0 so assume the CLR and compiler are not collaborating to allow any form of duck typing, which is primarily what I'm interested in right now. I also don't count the C# libraries out there that work around the language and sealed classes because IMHO if the language doesn't let me do it then it's all just too much work on top of what I'm already writing. Yes, this even applies to assisted automated testing. Bring on C# 4.0 but until then, let's look at a language that complies... Objective-C.&lt;br /&gt;&lt;br /&gt;This came up while looking at mocking in Objective-C and how the language makes it easy, whether you choose to use a mocking framework or implement something quickly yourself &lt;span style="font-size:85%;"&gt;(as for how to do that, you'll have to wait until another post)&lt;/span&gt;. Duck typing makes testing delightful in dynamically typed languages and I want to make sure that the tricks learned while testing in Ruby are not lost to me.&lt;br /&gt;&lt;br /&gt;Take a look at some clear and concise code examples of &lt;a href="http://en.wikipedia.org/wiki/Duck_typing"&gt;Duck Typing on Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Over a conversation on IM with an ex-colleague, I had to spend quite a lot of time making it clear that a dynamic language does not mean the same thing as dynamic typing in a language. This is an error often made and voiced as if the terms are interchangeable. They are not.&lt;br /&gt;&lt;br /&gt;Dynamic typing is when type checking is done at run-time, meaning while the program is executing and not at the time of compilation. The implication is that types are associated with values rather than variables. Run-time dynamism is different to dynamic typing, in that the language does a lot of things at run-time that other languages might do at compile time like adding code, optimising decision paths, extending objects and type checking (dynamic type checking). A dynamic language can have dynamic types but it does not have to.&lt;br /&gt;&lt;br /&gt;Now one of the bonuses of this is that the type of an object can be used to make a decision while the program is running, to decide what code should be executed next. This is Duck Typing. The term comes from the idea that if something looks like a duck and quacks like a duck then it is probably a duck. That assumption allows for an instance of an object with the correct accessors or methods to be used without checking first if the object actually is of the right type. Of course, if the object does not have the right characteristics then is will throw a run-time error.&lt;br /&gt;&lt;br /&gt;Run-time errors seem to scare people a lot more than I first realised. In a static world, a run-time error usually means that something very bad has happened in your compiled code with respect to resource management or the compiler corrupting the intent of your code. That is scary. Thing is that testing is a great way to check that your code isn't going to blow up unexpectedly, whether your typing is checked statically or not.&lt;br /&gt;&lt;br /&gt;If you don't understand duck typing and are from a statically type checked world then you can end up hamstringing yourself by adding meta data to an object that is set and checked to indicate the type of an object. Explicit type checking in this case means you have missed the point and the advantages of the type system you are using. You must unlearn these habits and understand your language to use it correctly. Changing languages is not as simple as changing development environments. It's a mindset change. You as a developer have a responsibility to use your tools in the right way. You can always hammer a screw in to place but it's not necessarily the right way to do it. Maybe use a screwdriver and learn how it works. Many times, you will see a language that is written with the accent of another language and it works and looks almost right but simply isn't. Engineers who go from C# to Java and back will see themselves doing this and smack themselves on the hand when they realise. This is a habit to break.&lt;br /&gt;&lt;br /&gt;While playing with Objective-C, I have seen compiler warnings given that won't stop you from running your code but will highlight that the compiler isn't sure that you are sure what you are doing. Explicit type casting will remove these warnings if you have the kind of OCD that doesn't allow you any warnings at all in what will ultimately become production code. For me, the majority of this is in my testing code so I'm more 'laxed than I might usually be.&lt;br /&gt;&lt;br /&gt;C# has what is called nominative typing. In other words, you use the name of the object's type to determine what it is. To handle the type you use explicit naming to deal with what is expected. Duck typing allows part of an object's structure to be accessed at run-time to check compatibility. Before C# 4.0, any attempt to duck type sealed classes was shut down by the CLR. There are ways around that involve inheriting from your own interfaces that look similar to other interfaces but this is not sincere enough for me. If you must add these tricks to your code then maybe you are at the point of considering using another language that is more suitable for the job. Luckily for us .NET'ers, we can use a lovely language like C# for our glue and integrate a lot of other funky technologies to do cool stuff. I can't wait to see the next version of the language. Hopefully, the changes are real and not just work-arounds.&lt;br /&gt;&lt;br /&gt;In summary, Duck Typing allows a method to use an object as long as the object it expects supports the methods or properties that the method is looking to call. The given object doesn't even have to inherit from the same base or interface. The object does not have to support all methods and properties to be passed into a method.&lt;br /&gt;&lt;br /&gt;There is no actual point to this post. It's more a bunch of realisations as I journey from one language to another.&lt;br /&gt;&lt;br /&gt;There is much space for misuse and making stuff go bang but that can be said about a lot of dynamic features of languages. You can't take all the power to create beauty away from developers simply because some may shoot themselves in the foot with it.&lt;br /&gt;&lt;br /&gt;Dynamism doesn't kill people, people kill people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3202149388800215521?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3202149388800215521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3202149388800215521' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3202149388800215521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3202149388800215521'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/02/quack.html' title='Quack!'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/S2xE2BRxMUI/AAAAAAAAD0Y/8JZOmK69NFo/s72-c/Duck.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8574617605326708848</id><published>2010-01-11T07:43:00.003+11:00</published><updated>2010-01-11T17:46:48.811+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Effort'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>No go areas can be gone around</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img246.imageshack.us/i/pheonix2fo7.png/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 276px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/S0qx1gV0x0I/AAAAAAAADyM/BxSo7Fuy2g0/s400/pheonix2fo7.png" alt="" id="BLOGGER_PHOTO_ID_5425344233893840706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Working in locked-down IT work environments can be frustrating, especially as a developer. We usually find a way around or are able to provide valid productivity or basic functionality reasons to have the rules relaxed for us. As long as I can write and run code, administer most tools required for development and google when I'm stuck then I'm a happy coder.&lt;br /&gt;&lt;br /&gt;It is the latter that is most likely to be restricted to the point of insanity. This is the case in my current workplace and in pretty much every bank, insurance company and Government department that I have ever frequented for &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;remuneration&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Why can't I use the Internet at work?&lt;br /&gt;&lt;br /&gt;Let me talk to you here about how I work and how I like to work. These are two different things but certainly impact the other. How I work is what makes a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Damana&lt;/span&gt; tick. How I like to work is what makes a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Damana&lt;/span&gt; productive in the workplace.&lt;br /&gt;&lt;br /&gt;As software engineers, ours is a thinking game. The actual doing does not take much time.  If you see your job involving a lot of typing then you are most probably doing it wrong. The majority of my time is taken up with deciding what to do and then implementing it follows as a distant second.&lt;br /&gt;&lt;br /&gt;When I say thinking, that doesn't mean reclining with feet on the desk and smoking a cigar, while wearing a dressing gown. No, it simply means that my progress can be broken down as follows...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;How I like to Work&lt;/span&gt; &lt;/span&gt;&lt;ol&gt;&lt;li&gt;Decide which task to work on next [thinking] - Where does the task fit in to the work I'm currently doing or just finished? What is the highest priority at the moment and which task satisfies that? What task will score me the most points with the business? What are the business benefits of this? So on and so on;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pick up the task [doing] - claim the task in whatever tracking system is used. Read any specs, details or notes associated with the task. Talk to the analyst or business to gain a common understanding of what needs to be achieved;&lt;/li&gt;&lt;li&gt;Look at the code and running application so far to find out where this task fits in to the scheme of things or work out where it will if nothing yet exists. [thinking] - Understanding the context and the requirements is a thinking processing. Scrolling through the code or clicking a few buttons in the front-end doesn't constitute "doing" to me;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Come up with a solution and an approach [thinking] - most problems are solved or have patterns that are used to best solve them. Experience will let you identify them quickly and googling can help you otherwise. This is the point where you can jump to the quickest solution or procrastinate and find the perfect one. My way is to think of a few ways and implement the one that seems the nicest technically and is within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;timeframe&lt;/span&gt;. Of course, this is all decided knowing that refactoring is available to me in the future;&lt;/li&gt;&lt;li&gt;Deciding how to test what I'm about to build [thinking] - working out how to test something lets you explore your understanding of the problem domain and create an interface to what you are about to build. It helps inner design and in determining how to build only what is needed;&lt;/li&gt;&lt;li&gt;Write tests and code [doing] - this is the typing part;&lt;/li&gt;&lt;li&gt;Show the user/business representative/analyst what you are building as you build it [thinking] - this is thinking as a group (not to be confused with group think);&lt;/li&gt;&lt;li&gt;Merge and deploy [doing] - this can be automated. With a lot of developers on the same project, this can be a problem solving exercise and also involve thinking if bugs or clashes emerge during integration.&lt;/li&gt;&lt;/ol&gt;This is of course a skeleton view of the process and does change depending on what the task is. The thing is that what I refer to as "&lt;span style="font-style: italic;"&gt;thinking&lt;/span&gt;" takes up the majority of time. If I was to add percentages to the different steps, I'd allocate 15-20% of that time to "&lt;span style="font-style: italic;"&gt;doing&lt;/span&gt;" parts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Why does this have anything to do with my me accessing the Internet?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;How I Work&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To be clear, I am not a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;Buddhist&lt;/span&gt; monk and really don't understand how I work in all aspects of my life. I'm nowhere near Nirvana but I do have a bloody good idea about what makes me productive at work.&lt;br /&gt;&lt;br /&gt;Thinking is a mentally intensive process. It's not even correct to call it a process as that seems to imply some kind of contiguous set of steps. That's not what it is to me. Solving problems and implementing solutions needs to happen in small bursts. Of course, these bursts can follow each other closely or be broken up over different periods of minutes, hours or days. Days are less likely since I work in smaller tasks than would require days. Either way, I have to break that process up so that I don't become mentally exhausted. Breaks are important.&lt;br /&gt;&lt;br /&gt;Call it slack. Call it a brain-break. Call it what you will.&lt;br /&gt;&lt;br /&gt;Nothing is going to let me work 10 hours in a row doing nothing but thinking. Instead, I need to work in the &lt;span style="font-style: italic; font-weight: bold;"&gt;bursts &lt;/span&gt;I talk about. &lt;span style="font-weight: bold;"&gt;Think-Do-Stop&lt;/span&gt;;&lt;span style="font-weight: bold;"&gt; rinse and repeat&lt;/span&gt;. What this means in a work day is that if you _made_me_ put all the &lt;span style="font-style: italic;"&gt;thinking &lt;/span&gt;and &lt;span style="font-style: italic;"&gt;doing &lt;/span&gt;together then you'd see me working a 6 hour day and then collapse in a heap. Instead, if I take micro-breaks between the bursts, I can easily produce valuable output in a combined 8-9 hour day, all the time working at a sustainable pace.&lt;br /&gt;&lt;br /&gt;Does that mean spending time sitting at my desk with my brain turned off? Not really. Usually my brain-breaks still involve thinking but in a different way to the way I think at work. For me, reading my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;RSS&lt;/span&gt; feeds; sharing knowledge, events and fluff in real-time with friends online ; and turning around and talking about the front of the newspaper with my office mate let's me recharge. How much of the time I spend doing this depends on the how challenged I feel that day due to difficulty of and interest in the task and how tired/alert I'm feeling.&lt;br /&gt;&lt;br /&gt;The format of working I have developed over the years has resulted in my being able to easily punch out 9 hour solid productive days, without burning out. In the process of learning this, I have burnt out. Damn, I'm the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;Phoenix&lt;/span&gt; of software development.&lt;br /&gt;&lt;br /&gt;That's why I need access to the Internet at work. I want to read what I want. I want to talk to whoever I want. I want to be slack whenever and however I want. At least assume I mean well and want to do the best work I can. Not all of us want to abuse resources or our employers. In fact, most people are good people. Why treat us as if we are like the few who &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;rort&lt;/span&gt; the system? It's the same as blaming all religious people for the acts of extremists. That's not representative.&lt;br /&gt;&lt;br /&gt;It doesn't matter how much you lock-down your environment, I'll have my slack time. Thanks to smart phones, you have no way to bore me to death or burn me out anymore. So, what's the point of doing it now?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8574617605326708848?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8574617605326708848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8574617605326708848' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8574617605326708848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8574617605326708848'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2010/01/no-go-areas-can-be-gone-around.html' title='No go areas can be gone around'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/S0qx1gV0x0I/AAAAAAAADyM/BxSo7Fuy2g0/s72-c/pheonix2fo7.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8135390899547151827</id><published>2009-12-24T08:07:00.000+11:00</published><updated>2009-12-24T11:36:55.711+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='About Me'/><title type='text'>If the Shoe Fits</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/damana/4205159772/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SzK3P21rOJI/AAAAAAAADw4/WOMT6ujiAdM/s400/shoes.jpg" alt="" id="BLOGGER_PHOTO_ID_5418594784726694034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I don't usually like to cross-post on my blogs but &lt;a href="http://damana.blogspot.com/2009/12/if-shoe-fits.html"&gt;this one is geeky and tells the truth about my ThoughtWorks experience&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8135390899547151827?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8135390899547151827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8135390899547151827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8135390899547151827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8135390899547151827'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/12/if-shoe-fits.html' title='If the Shoe Fits'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SzK3P21rOJI/AAAAAAAADw4/WOMT6ujiAdM/s72-c/shoes.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8934723395596795519</id><published>2009-12-21T06:25:00.004+11:00</published><updated>2009-12-24T12:14:17.334+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Positivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Effort'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Darwin'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><title type='text'>Optimism is Power</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/magpie-moon/99923735/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 320px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/Sy8T7jsPWOI/AAAAAAAADwY/7rOlJhfS5J8/s320/orb.jpg" alt="" id="BLOGGER_PHOTO_ID_5417570790664001762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've been working in Darwin in the north of Australia for three weeks now. It's where I grew up but that only means that I knew it as a kid. Who I am as an adult formed by living in Canberra and Sydney and travelling the world.&lt;br /&gt;&lt;br /&gt;Yes, I'm an eternal optimist. It annoys the hell out of cynics, pessimists and misanthropes but I'm OK with that. Me being OK with that also annoys them but luckily for me, I am too positive to be swayed by their &lt;a href="http://en.wikipedia.org/wiki/Six_Thinking_Hats#Black_hat_.E2.80.93_Critical_Judgment"&gt;black-hatting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Why do you care about my glass-half-full view of the world? I'll tell you why...&lt;br /&gt;&lt;br /&gt;Positivity is Power.&lt;br /&gt;&lt;br /&gt;I don't want to sound like &lt;a href="http://en.wikipedia.org/wiki/Tony_Robbins"&gt;Tony Robbins&lt;/a&gt; because he is a bit of a knob actually but I do want to get through to negative thinkers. In Darwin, I seem to meet one positive person each week out of the 20+ new people I meet. That's 5% and based purely on my small sample size and sloppy counting methods.&lt;br /&gt;&lt;br /&gt;Sydney wasn't like this, was it? I ran in to a lot more positive can-do people. After voicing this observation to a Sydney friend, he suggested that this could be because of the kind of people I was meeting in Sydney anyway. People in the circles I ran in were making the most out of life. They changed their lives if they needed changing and looked for opportunities constantly. It was and still is an energetic crowd with drive. Everyone wanted to change the world. We often joked that we would stop getting out of bed if we no longer believed that. These thoughts push you to progress and succeed. These &lt;span style="font-weight: bold;"&gt;people &lt;/span&gt;push you to progress and succeed.&lt;br /&gt;&lt;br /&gt;It has been tweeted a lot lately that you become what the people closest to you believe that you are. You are made in to what they expect from you. That is so true that it terrifies me. What if I don't find that crowd of over-achievers here in Darwin? Will I ever do anything more with my life?&lt;br /&gt;&lt;br /&gt;Then I break in to hysterical laughter and realise where I really got my can-do attitude and ability to see the silver lining on every cloud. It was through trying, failing, trying again and doing brilliantly. It was from what I was taught from a young age by my parents who said "you can do anything you set your mind to".&lt;br /&gt;&lt;br /&gt;How does this apply to work? Good question and I'm glad you asked. It applies like this...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Belief&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Belief releases you from the negative thoughts that say you shouldn't bother because it's not achieveable anyway. It gives you options. The option to do anything you choose to achieve.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Purpose&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Purpose is making a choice from the options and deciding that's what you will aim for. Often people have dozens of great ideas but they do nothing with them. One average idea achieved, is better than 10 brilliant ideas that are filed in the might-have-been pile.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Drive&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you have a purpose, you can realise it. In my career at this time in my life, it means working in Darwin and improving the software development environments I participate in. That will be onsite with my clients; in the user groups I start and join; and in my own personal projects. The fact that I have done it before in the other cities I've lived in, means that I can do it here. It's not about who rocks up to join in. It's about what I want to build and if I build it, they will come.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, my point? Get out there and do something. Anything. You really can do anything. Build better software. Make sure the work you do is something you are proud of. Share your knowledge online and in the workplace. Talk to people about what excites you about this industry.&lt;br /&gt;&lt;br /&gt;Change the world or don't even bother getting out of bed in the morning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8934723395596795519?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8934723395596795519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8934723395596795519' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8934723395596795519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8934723395596795519'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/12/optimism-is-power.html' title='Optimism is Power'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/Sy8T7jsPWOI/AAAAAAAADwY/7rOlJhfS5J8/s72-c/orb.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-685701429234962222</id><published>2009-12-17T07:20:00.004+11:00</published><updated>2009-12-21T20:14:54.511+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Security through Obscurity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/muehlinghaus/241755891/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SynOdh5XOYI/AAAAAAAADwQ/sCKd26bDSno/s320/241755891_1c7e03d770.jpg" alt="" id="BLOGGER_PHOTO_ID_5416087033600227714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;In IT Security, the term &lt;span style="font-weight: bold;"&gt;security through obscurity&lt;/span&gt; describes the act of designing a system or application to hide functionality in the hope that people won't stumble across access to the secret functionality. People argue that &lt;a href="http://en.wikipedia.org/wiki/Defense_in_Depth_%28computing%29"&gt;Defense in Depth&lt;/a&gt; tactics justify leaving functionality unsecured by enrcyption, access control or other means. The thing is that a lot of the time, they are only obscuring it and not restricting the path to it.&lt;br /&gt;&lt;br /&gt;A recent example of this was when I entered an organisation which restricted access to their &lt;a href="http://en.wikipedia.org/wiki/Cmd.exe"&gt;cmd&lt;/a&gt; prompt and the machine's C:\ drive on their Windows desktops, via settings in their &lt;a href="http://en.wikipedia.org/wiki/Standard_Operating_Environment"&gt;SOE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I wanted access to run a few administrative tools which were not available in the typical menu. There was no &lt;span style="font-weight: bold;"&gt;Start -&gt; Run...&lt;/span&gt; option available. We weren't allowed to use it.&lt;br /&gt;&lt;br /&gt;At first I was disappointed and then I wondered how they had restricted access to it. I thought for a while then created a text file on the desktop named &lt;span style="font-weight: bold;"&gt;cmd.bat&lt;/span&gt;, containing the single line &lt;span style="font-weight: bold;"&gt;cmd&lt;/span&gt;. Double clicking on that brought up the command prompt and access to anything I wanted. I didn't run any of the tools I wanted and quickly deleted the batch script on realising the ease at which this hole could be exploited.&lt;br /&gt;&lt;br /&gt;Even access to the C:\ drive would not have been a challenge. A batch file with the command &lt;span style="font-weight: bold;"&gt;&gt;explorer c:\ &lt;/span&gt;would be enough to start the Windows Explorer with it pointing to the restricted drive.&lt;br /&gt;&lt;br /&gt;This is not security.&lt;br /&gt;&lt;br /&gt;I am responsible enough to not wreak havoc and break the rules. Hopefully, others are too.&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/2144813210603379421-685701429234962222?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/685701429234962222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=685701429234962222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/685701429234962222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/685701429234962222'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/12/security-through-obscurity.html' title='Security through Obscurity'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SynOdh5XOYI/AAAAAAAADwQ/sCKd26bDSno/s72-c/241755891_1c7e03d770.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3098832659515214574</id><published>2009-11-09T00:58:00.005+11:00</published><updated>2009-11-10T09:12:36.645+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='Bugs'/><title type='text'>Eternity with stops on the way</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/yum9me/2615632396/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/StAD17N5-5I/AAAAAAAADuM/EirGSxNsO3g/s320/disconnect.jpg" alt="" id="BLOGGER_PHOTO_ID_5390812978926451602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Recently, my sister asked "Mana, how long should it take to get rid of all the bugs in new software?"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's a broad question but certainly a fair one for a user to ask. I had to ask her to elaborate so that I could perhaps explain the reason why the new software she uses every day at work is not working as expected.&lt;br /&gt;&lt;br /&gt;In short, the new major version of the software she has been using for years has been installed on her work computers. They still have access to the old one for reporting purposes but can not write any data to the old system. The new system provides a bunch of basic features from the old system but definitely not all of them.&lt;br /&gt;&lt;br /&gt;When she's asked the software provider about the missing features, she has been informed that they are on their way but were not high enough priority to have gone in to the initial release of the new system. There are other features that do exist but do not work in the way they once did. The explanation for this is that there are bugs and the users are expected to test the software for the company and let them know what is wrong so they can fix it.&lt;br /&gt;&lt;br /&gt;That was in July, this year. Now it is October 2009 and my sister and her colleagues are learning to use yet another new system because the earlier new one was so bad that the company who developed it went out of business. Unfortunately, Government dictates which applications meet certain criteria for use in this industry and the users have little choice about what is thrust upon them. The only real choice they have is to throw up their hands and say "we can't do that anymore but apparently it's coming".&lt;br /&gt;&lt;br /&gt;There are so many things that concern me with this scenario, least of which is that this is not a rare occurrence. The other issues I see here that must be addressed can be represented by the following questions? Questions that I will answer here but that I would appreciate your input in to.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Who decides the priority of features in a product, to be redeveloped?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you answer this question literally, the person who usually decides is the product owner or project manager. If you really think about what this means then you have to ask how they get their information in order to make that call. What data do they use to arrive at the conclusion that one feature is more important than another?&lt;br /&gt;&lt;br /&gt;In the majority of the cases I have seen, people make the decision based on years of experience working in the vertical concerned or working administering the previous or current software that the new application or feature is replacing.&lt;br /&gt;&lt;br /&gt;An alternative is to do user testing and see what they say is important. Measuring use of current applications and workflows can give information that is useful to deciding what functionality the users can not live without.&lt;br /&gt;&lt;br /&gt;In the case I discussed above, it does not appear that all users were represented in the decision making process if one existed involving users at all. Instead, the group represented by my sister and her colleagues ended up with a new and improved version of the software that did not do those most important things that were involved in their daily routine. That functionality was gone and was promised in a future release.&lt;br /&gt;&lt;br /&gt;I was asked about: how you decide something is left out? Is it simply because it was difficult to implement? It's great to see end-users trying to understand why but sad to see them surrender to the fact that nothing is in their control. They pay for it and they use it. Would you accept this from any other industry?!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Who is supposed to test your software and when should that happen?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then I was asked: when the new software should be bug free or at least not falling over at the drop of a hat?&lt;br /&gt;&lt;br /&gt;When the software company was asked what testing they did, they answered with the often heard line of letting the users test it when it was released. They apparently talked about reacting fast and fixing the problems, yet their releases were quarterly. This software was served over the Internet so it was a centralised update but they still released quarterly.&lt;br /&gt;&lt;br /&gt;Of course, their release cycles can be due to a lot of factors that are very valid. What I can not accept is that it is the users responsibility to test the application after it is in production. How can this possibly be acceptable to anyone involved? I ask the question again, would you accept this from a car or pharmaceutical company?&lt;br /&gt;&lt;br /&gt;There will always be bugs that go out in to production but when the software stops the people using it from doing their job and they are told to test it, report bugs and wait three months for a fix then you can't be surprised the company would go out of business.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;What does the user consider a bug?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With access to a bunch of people who consume software at the end of the cycle, I had to ask what they considered a bug. Instead of finding the level of intolerance familiar to software engineers from product owners who demand no failure at all, I found that these users expected far less than that.&lt;br /&gt;&lt;br /&gt;In fact, they thought the software not working at all was annoying but apparently understandable because computing is complicated. They understood new systems have issues to be ironed out. They could tolerate that for a while. What they couldn't fathom was why they had no view of their old data; functions that were called the same thing but did something different; and buttons that you clicked that did nothing at all.&lt;br /&gt;&lt;br /&gt;The ultimate thing they called a bug was when the system did something completely wrong while promising to do something else. Especially when that thing was related to money or Government concessions. Things that you would think were legally binding. Processes that were tried and true and had worked in previous software.&lt;br /&gt;&lt;br /&gt;What I drew from this line of inquiry is that users are much more understanding of our profession than I expect them to be. Much more understanding than I would ever be in the same situation. Users need to realise that they don't have to put up with the bad output from software companies and that if they don't like it, they can chose not to use it.&lt;br /&gt;&lt;br /&gt;Maybe we need money back guarantees.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Should governments dictate key features of applications shared across multiple industries?&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;This is an interesting point and one that I have discussed almost continuously for over a decade, since I have spent the majority of time on the other side of the fence. My most relevant experience in this area was working for a Government agency that collected scientific test results from food imported in to Australia. Labs that did this testing across the country were required to implement applications that collated food sample test results and submit it electronically to the agency. At that point, the agency would approve or fail the importation of the food. Doing this electronically would speed up the process and stop food from sitting around for so long before being granted admission to the Australian food market. Brilliant idea, right?&lt;br /&gt;&lt;br /&gt;In theory yes, but in practice this meant asking a lab that employed no IT people to have a system created for them to suck data out of their labs systems and deliver to a Government agency. In practice that sounded simple but it was a huge program of work that saw the bigger labs just come in on time with implementations. We did everything we could to aid for simplicity for the lowest common denominator and to support development in to using our interfaces and messaging systems.&lt;br /&gt;&lt;br /&gt;From our point of view, it was a new application that spoke to the agencies back-end legacy application. It took 1.5 engineers, 1 business analyst, 1 project manager and 3 business people 3 months to get the receiving system designed and off the ground. We surrounded it with a swamp of automated unit tests and integrated with our demonstration systems. It was a breeze.&lt;br /&gt;&lt;br /&gt;We then spent 5 months helping other developers integrate with us. We made the rules and decided everything up front and then thrust the specs upon them. The level of expertise from the developers involved was mostly sub-standard in the small labs. It was not the dream that we had promised it would be. Myself and the other half an engineer knew this was coming and when the integration hell arrived, we did what we could to help including writing code in 4+ other languages other than our own to help companies comply.&lt;br /&gt;&lt;br /&gt;Now imagine the situation for my sister and the end-users who have that new system thrust upon them. Another layer of abstraction away from the user. Demands from Government implemented and carved in stone and then handed to software vendors who struggle to deliver on time and budget. Yes, it costs them money just to deal with the Government and to build to changing conditions and rules. It's difficult but it's their job. What is horrible is watching the person sitting at their machine with the end product asking themselves how this is anywhere near the same system.&lt;br /&gt;&lt;br /&gt;Yes, Governments must legislate and ask for compliance but they should also do something to ensure the final product meets some kind of standard. If not then the market will ensure the outcome and it won't be in the favour of the software vendor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Is this how software providers should treat customers?&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;There is a huge divide between the people who support and sell software and the people who build it. I've argued for years that production support teaches you invaluable skills. Software engineers should go out and face the scorn and hopefully applause that their software brings. Their is no better way to learn to write software that will be nice to support and maintain than to go out and feel the pain of it living.&lt;br /&gt;&lt;br /&gt;If you have not worked on living and breathing software then you are not a good developer. You don't know the baby you created. You live in neglect every day.&lt;br /&gt;&lt;br /&gt;Sales people, support staff and whoever else pours water on the fires can't make it better but the engineers can create good software. It is possible. People do it every single day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How long does it take to get rid of all the bugs in software?&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the same as asking how long a piece of string is. Like I said, software is a living thing. There will always be glitches/bugs/issues/defects/whatever and we will always be adding and fixing features and functionality. That's how it's life goes and that's how our life goes.&lt;br /&gt;&lt;br /&gt;We have a responsibility not to send out software that we don't trust is good enough for sale or use. That can be helped through testing, design for usability, user acceptance testing and lots of good requirements gathering at the beginning and throughout the process. All of this should happen &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;throughout&lt;/span&gt;&lt;/span&gt; the process.&lt;br /&gt;&lt;br /&gt;People like my sister (or someone who represents her and cares) should be seeing and using working versions of the software as it is created and grows. That way the end product is not a surprise and a tragedy.&lt;br /&gt;&lt;br /&gt;Don't just sit there. Tell me how you stop your company from being thrown out of the market each day. What can others do to make the software world a better place for our users?&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/2144813210603379421-3098832659515214574?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3098832659515214574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3098832659515214574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3098832659515214574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3098832659515214574'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/11/eternity-with-stops-on-way.html' title='Eternity with stops on the way'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/StAD17N5-5I/AAAAAAAADuM/EirGSxNsO3g/s72-c/disconnect.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5730054788084976795</id><published>2009-11-06T15:42:00.004+11:00</published><updated>2009-12-24T12:14:31.942+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Darwin'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>Think outside the ruling majority</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/k-h/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SvOuod4cJoI/AAAAAAAADu8/be6B8LaQEvI/s320/darwin.jpg" alt="" id="BLOGGER_PHOTO_ID_5400852388386711170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have changed town, jobs, houses and all sorts of stuff in the last few weeks. It's one of those seachange-slow-your-life-the-hell-down type of things. Moving to a small Australian city has highlighted a few things I was ignoring or missing or simply ignorant of.&lt;br /&gt;&lt;br /&gt;You'll see me get on my soap box and talk about diversity, equality and treating people the way you would like to be treated. I pride myself on being a member of many minorities but was blind to see that being in Australia's biggest city and home of all the cool stuff in IT in the southern hemisphere, that I was forgetting the other 2/3rds of the country existed.&lt;br /&gt;&lt;br /&gt;Melbourne people can pipe up and argue their relevance but the cool stuff in this country happens in Sydney. That's where the finance sector lives. Publishing is based there. Entertainment, Tourism and everything but sport is bigger in NSW. The majority of the population lives there.&lt;br /&gt;&lt;br /&gt;It is easy then to forget that what's left of Australia outside of the big east coast cities is not a backward dustbowl but a place people prefer to live at a different pace. This doesn't necessarily mean different priorities though. Australians are Australians, pretty much wherever they land. Ask anyone in London that.&lt;br /&gt;&lt;br /&gt;So as I settle down and begin to work in this particular dustbowl, I'm eagar to be open-minded and see what the standard of my profession is here. I want to find people I can learn from and share with. People who want to learn and use their minds, in a way that I share.&lt;br /&gt;&lt;br /&gt;Rather than assume everyone is hopeless and this is why they live here, it will be better to find and nurture talent and develop a sense of IT community here. That's what I'm going to do. I'm going to help start things moving... but still moving only at a dustbowl pace.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;PS If you are in Darwin, contact me.&lt;/span&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/2144813210603379421-5730054788084976795?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5730054788084976795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5730054788084976795' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5730054788084976795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5730054788084976795'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/11/think-outside-ruling-majority.html' title='Think outside the ruling majority'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SvOuod4cJoI/AAAAAAAADu8/be6B8LaQEvI/s72-c/darwin.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5418297829930988531</id><published>2009-10-08T23:22:00.000+11:00</published><updated>2009-10-09T01:08:11.652+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Leadership'/><category scheme='http://www.blogger.com/atom/ns#' term='Teams'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Is "Tech Lead" the new "Architect"?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/paolomargari/3793121065/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/Ss3tNTxJFfI/AAAAAAAADuE/MYInyvidDTQ/s320/pisa.jpg" alt="" id="BLOGGER_PHOTO_ID_5390225141932824050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Five years ago, everybody seemed to want to have the word "architect" in their title. Firstly, they all needed a title and having an A in the acronym was the bomb - EA (Enterprise Architect); IA (Information Architect); and any other term with the "A" word at the end of it.&lt;br /&gt;&lt;br /&gt;With this title came a lot of responsibility for whether the project succeeded or failed. Accepting that meant that you couldn't let others fail and take you with them. That's when in some circumstances, the iron fist came out and the right to veto a change became part of the job description. Of course, that made sense when it was your head on the chopping board.&lt;br /&gt;&lt;br /&gt;It is commonly argued regularly that the decision making in a group should be centralised in order to make conflict resolution easier to solve. I agree with the idea that there must be away to settle disagreements between members of a team if they come to an impasse. There are many ways to do this but the fastest and most decisive is for one person to have the final word. The other way I have seen work regularly is to have the team decide through majority opinion or vote. When the group decides something for all then that is usually accepted by all.&lt;br /&gt;&lt;br /&gt;The group decision method can go wrong if the most popular person and strongest speaker dominates. The one man final decision can also go wrong if... well, if they aren't good enough to make that call.&lt;br /&gt;&lt;br /&gt;It is a rare project that I have worked on that is lead by one person with all the technical and high-level knowledge to make all decisions well. I have however often seen teams with a mix of people who can answer all the questions needed and pick the best option. Add to that team an external arbitrator (like a project manager) who can facilitate the decision making process and you have a much more successfully functioning team.&lt;br /&gt;&lt;br /&gt;Software engineers are more creative lateral thinkers than they are credited with. Although the other disciplines of engineering are extremely logical, spend some time herding cats and you'll see that devs are more craftswomen (and craftsmen) than they are plodders through an already defined structured process.&lt;br /&gt;&lt;br /&gt;With this creativity in mind, software engineers do not want to be mere typists for their architect or technical lead. They need to be allowed to create  and use their skills to move the project forward. If you don't allow this, you lose all that is good about working with them. Unfortunately, this is too often the case with the tech leads I have seen since starting my career. Most of us find ways to work with these little dictators and sometimes we simply get fed up and move on to another team, another project or even another job.&lt;br /&gt;&lt;br /&gt;Is today's title of "Tech Lead" the new, more acceptable synonym for what is now the dirty word "Architect"?&lt;br /&gt;&lt;br /&gt;Yes, it is. &lt;span style="font-weight: bold;"&gt;Teams build software.&lt;/span&gt; Good tech leads and architects will guide their team, support them and remove technical blockers from their path. They won't use the word veto or force their ideas on to their intelligent peers. If they don't see their team as their peers then that's another problem altogether.&lt;br /&gt;&lt;br /&gt;Come on tech leads, keep your title but use your powers for good and not evil.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5418297829930988531?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5418297829930988531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5418297829930988531' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5418297829930988531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5418297829930988531'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/09/is-tech-lead-new-architect.html' title='Is &quot;Tech Lead&quot; the new &quot;Architect&quot;?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/Ss3tNTxJFfI/AAAAAAAADuE/MYInyvidDTQ/s72-c/pisa.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1596739537807665351</id><published>2009-10-07T21:56:00.005+11:00</published><updated>2009-10-09T00:13:51.340+11:00</updated><title type='text'>Give me an alternative</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/91499534@N00/2050573123/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 294px; height: 320px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SsyI23-Lo6I/AAAAAAAADt8/OpoJQAiIxR8/s320/waiting.jpg" alt="" id="BLOGGER_PHOTO_ID_5389833330374714274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've been blogging about some "simple" stuff lately and there is a reason for that. It seems that things that those of us who have worked building big web apps for a long time, take for granted. There are certain ways to do things... etiquette even. As long as I see these things missing when I interact with the web world, they will appear here. If this is too condescending then "&lt;span style="font-style: italic;"&gt;think you have but slumber'd here while these visions did appear&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;On opening an email from my favourite pet food delivery place &lt;a href="http://www.starpets.com.au/faq.php"&gt;Star Pets&lt;/a&gt; in my gmail, I noticed before I hit the &lt;span style="font-weight: bold;"&gt;load all images&lt;/span&gt; button that the images all had place holders of a hyperlink with the text &lt;span style="font-weight: bold;"&gt;alt&lt;/span&gt;. This turned out to have the HTML: &amp;lt;img border="0" alt="alt"/&amp;gt;&lt;br /&gt;&lt;br /&gt;Now, HTML elements have the alt attribute which is an alternative text attribute that is on the element in order to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;allow an image, link or other artifact to have a meaningful placeholder while it loads or if it fails to load;&lt;/li&gt;&lt;li&gt;allow search engine web crawlers to easily understand and index your site; and&lt;/li&gt;&lt;li&gt;assist accessibility browsers like &lt;a href="http://www.freedomscientific.com/fs_products/software_jaws70fea.asp"&gt;JAWS&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;As a developer, you are helping make your site easier to understand and use by people and machines. That has to be a good thing and it's not much effort. Developers, analysts and testers can all contribute to adding meaning to your pages with alt attributes so start doing it now.&lt;br /&gt;&lt;br /&gt;It's etiquette.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1596739537807665351?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1596739537807665351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1596739537807665351' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1596739537807665351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1596739537807665351'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/10/give-me-alternative.html' title='Give me an alternative'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SsyI23-Lo6I/AAAAAAAADt8/OpoJQAiIxR8/s72-c/waiting.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-607432473427970039</id><published>2009-10-01T01:07:00.006+10:00</published><updated>2009-10-01T01:36:32.546+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>And another one bites the dust</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/kmountmaniac/2994014966/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 251px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SsN1MSe8ykI/AAAAAAAADt0/pSBu3HjIX1s/s320/classifieds.jpg" alt="" id="BLOGGER_PHOTO_ID_5387278433245776450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Going through my lower priority email in the middle of the night, I decided to read the one titled "&lt;span style="font-style: italic;"&gt;Changing times at Trading Post&lt;/span&gt;" from the &lt;a href="http://www.tradingpost.com.au/"&gt;Trading Post&lt;/a&gt;. Thinking that it would be something about a new &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; account or iPhone application, I was surprised (but not so surprised) to see the &lt;span style="font-weight: bold;"&gt;actual&lt;/span&gt; news. Rather than re-tell it, here is a quote from the email:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"As a result of this change in customer preferences, Trading Post will become an exclusively online and mobile trading place from November with the last print publications on sale from 29 October 2009."&lt;/blockquote&gt;&lt;br /&gt;In Australia, the Trading Post is an institution. It's the regional collective classifieds for your area. You pick one up and spend a morning on a weekend reading it. You call people about stuff you don't really need but seem like a bargain and deal with the disappointment or glee that comes from finding whether it's still available.&lt;br /&gt;&lt;br /&gt;I recently put my car up for sale on their &lt;a href="http://www.tradingpost.com.au/"&gt;website&lt;/a&gt;, on &lt;a href="http://ebay.com.au/"&gt;ebay&lt;/a&gt; and on &lt;a href="http://carsales.com.au/"&gt;carsales.com.au&lt;/a&gt;. Although I sold the car through carsales.com.au, I got the most inquiries from the Trading Post. Since I chose to display the advertisement in their print issue as well as on the website, people were contacting me for quite a while after the car was sold.&lt;br /&gt;&lt;br /&gt;This is another example of a popular publication leaving the world of paper and moving to a purely virtual one. I feel like there should be some sorrow floating around in my sentimental mind somewhere but if I'm honest with myself then it makes no difference to me. I don't feel saddened by it. In fact, it feels right.&lt;br /&gt;&lt;br /&gt;We trade online all the time now. Maybe just as they named their classifieds-only paper after an old fashioned "&lt;span style="font-style: italic;"&gt;retail store serving a sparsely populated region&lt;/span&gt;", it's evolved in to the next type of place to sell and buy... on this Internet thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-607432473427970039?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/607432473427970039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=607432473427970039' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/607432473427970039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/607432473427970039'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/10/and-another-one-bites-dust.html' title='And another one bites the dust'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SsN1MSe8ykI/AAAAAAAADt0/pSBu3HjIX1s/s72-c/classifieds.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-47972952817093949</id><published>2009-09-11T10:31:00.005+10:00</published><updated>2009-09-11T10:40:25.750+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>Resizing a new browser window</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/stephenpoff/3200191485/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 252px; height: 320px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SqmcRUi7T4I/AAAAAAAADtU/5MQzNffQ_r0/s320/frustration.jpg" alt="" id="BLOGGER_PHOTO_ID_5380003051257679746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Developers have to stop believing that their web application is the centre of universe.&lt;br /&gt;&lt;br /&gt;These days, I easily have ten tabs open in Firefox (or my browser of choice at that moment). Nothing infuriates me more than clicking a link on a website and having another window launch... except if the new window is resized automatically.&lt;br /&gt;&lt;br /&gt;That behaviour resizes the whole window and all tabs in it. When the offending tabs is closed, a manual maximisation is required. That annoys the hell out of me.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.optus.com.au/home/index.html"&gt;Optus&lt;/a&gt; does this on their &lt;a href="https://secure.optus.com.au/smartpay/index.jsp"&gt;Pay a bill&lt;/a&gt; (click to be annoyed) link.&lt;br /&gt;&lt;br /&gt;Stop it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-47972952817093949?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/47972952817093949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=47972952817093949' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/47972952817093949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/47972952817093949'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/09/resizing-new-browser-window.html' title='Resizing a new browser window'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/SqmcRUi7T4I/AAAAAAAADtU/5MQzNffQ_r0/s72-c/frustration.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1729881835674307095</id><published>2009-08-28T14:11:00.000+10:00</published><updated>2009-08-28T14:12:39.987+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>[Exit] TTFN ThoughtWorks</title><content type='html'>"Well-behaved women rarely make history" - Laurel Thatcher Ulrich&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1729881835674307095?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1729881835674307095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1729881835674307095' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1729881835674307095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1729881835674307095'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/08/exit-ttfn-thoughtworks.html' title='[Exit] TTFN ThoughtWorks'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7669439483912285526</id><published>2009-07-08T15:03:00.003+10:00</published><updated>2009-07-08T15:08:43.303+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Telecoms'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>How to complain about SMS or MMS spam to your mobile phone</title><content type='html'>In Australia, it is a serious offense to spam a mobile phone via SMS or MMS without the user opting in. If this happens to you, make a complaint to the Australian Government through &lt;a href="http://www.acma.gov.au/interforms/spam_complaint_Mobile.asp"&gt;ACMA&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I shall now go and complain about Optus.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7669439483912285526?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7669439483912285526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7669439483912285526' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7669439483912285526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7669439483912285526'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/07/how-to-complain-about-sms-or-mms-spam.html' title='How to complain about SMS or MMS spam to your mobile phone'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-6150597869286707912</id><published>2009-07-07T12:20:00.008+10:00</published><updated>2009-07-07T12:47:09.291+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><title type='text'>You want to manage me?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/SlK2yEDMNtI/AAAAAAAADrE/q5rLXIsyG84/s1600-h/PM.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/_A7vd1oW85hU/SlK2yEDMNtI/AAAAAAAADrE/q5rLXIsyG84/s320/PM.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5355543878093780690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Having heard yet another IT graduate tell me that they do not want to waste their entire career being a developer, business analyst or tester and instead prefer to start in project management, I've had to hold in the scream and write this post instead.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A good friend of mine was recently tutoring at one of the Sydney universities and mentioned to me her disbelief at the fact that the majority of the students she had contact with had sights on project management as an entry level role after finishing study. In their project teams, there were hardly any indians but lots of chiefs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my career, I have managed to work with a vast array of project managers. The quality has varied, as it does in any professional role. The one thing I have noticed is that the good project managers are worth their weight in saffron. A good project manager doesn't use Microsoft Project to plot the predicted progress of a project. They manage time, money, risk and people in often Machiavellian environments with a finesse that is not learnt in a book or during a degree.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At ThoughtWorks, I am lucky to work with only the best project managers there are. One is known as the "Ego Wrangler" because she can get peak performance from a team of alphas who if left to their own devices would degrade in to a Tank Girl style society. Handling smart individuals with great enthusiasm for what they do in the conservative business world takes a lot of experience with people and situations. It takes experience in risk management and that doesn't mean avoiding risk. It means &lt;i&gt;knowing when to hold 'em, knowing when to fold 'em, knowing when to walk away and knowing when to run&lt;/i&gt;. There is the skill of listening and hearing more than what is said in meetings, over coffee, on the lift and during staff tantrums.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If I was to sum it up, project management takes years of experience working on many projects. You have to fail and succeed and learn from yours and the mistakes of others. The ones I know have my trust, dedication and respect. Unfortunately, that is just not something you give to someone straight out of university no matter how brilliant they will one day be.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-6150597869286707912?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/6150597869286707912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=6150597869286707912' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6150597869286707912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6150597869286707912'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/07/you-want-to-manage-me.html' title='You want to manage me?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SlK2yEDMNtI/AAAAAAAADrE/q5rLXIsyG84/s72-c/PM.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-410288615744386355</id><published>2009-04-21T13:57:00.004+10:00</published><updated>2009-05-05T10:55:18.976+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Communication'/><title type='text'>Using an iPhone differently</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/robinhamman/1335606862/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/Se1HBEkrbgI/AAAAAAAADmg/ZueZQmahNQM/s400/iphone+in+hand.jpg" alt="" id="BLOGGER_PHOTO_ID_5326992017982189058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm working in Melbourne this week on part of my project that is located here. The rest of my team is in Sydney. Each morning, I call in to the stand-up and they put me on speaker phone. Usually the person calling in speaks first and then spends the rest of the time trying to listen to what is going on. This is a big stand up with 15-20 people each day. Some people mumble, some shout but mostly it's all noise.&lt;br /&gt;&lt;br /&gt;Today, the Iteration Manager decided to get me to call his iPhone. He turned on the speaker and in turn each person passed the phone around when they took their turn to speak. Not only was it a communication device but also a token.&lt;br /&gt;&lt;br /&gt;It was effective and creative. Kudos goes to Zaynab for a brilliant idea that now makes stand-up relevant and audible to those of us in Mexico :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-410288615744386355?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/410288615744386355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=410288615744386355' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/410288615744386355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/410288615744386355'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/04/using-iphone-differently.html' title='Using an iPhone differently'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/Se1HBEkrbgI/AAAAAAAADmg/ZueZQmahNQM/s72-c/iphone+in+hand.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8558897934049773324</id><published>2009-04-01T10:53:00.005+11:00</published><updated>2009-04-01T17:14:46.012+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Effort'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>The Whole Nine Yards</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/krikit/2880756271/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 339px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SdKvOck9c-I/AAAAAAAADio/lGAnENmIeno/s400/effort.jpg" alt="" id="BLOGGER_PHOTO_ID_5319506772602221538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A common question I get from people new &lt;span style="font-size:78%;"&gt;(and not so new)&lt;/span&gt; to our industry is "&lt;span style="font-style: italic;"&gt;do I have to do all that extra stuff after work?&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;In the past, I have said that it's ok to learn on the job only, if that is what you prefer. I've only now realised that I have been lying to them. I was telling them what they wanted to hear and then went and did the opposite.&lt;br /&gt;&lt;br /&gt;The real answer to that question should be a big resounding YES!&lt;br /&gt;&lt;br /&gt;Science and technology are areas that are constantly changing. To work anywhere near the middle to the top of the game then you have to be writing code at home; reading books and blogs; and contributing to the community. Yes, not just one of those but all three. If you can do more than that then you should.&lt;br /&gt;&lt;br /&gt;What do these three major areas involve and why should you do it?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Writing code at home&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Every programmer/software engineer/developer or whatever you call yourself, should be taking time outside of working hours to write some code. Start your own project and build something from beginning to end. Get a new idea or rebuild something you'd like to understand. It does not have to be a huge web application sitting on a complex stack and hosted in a cloud. It can be a script, a tool to help you improve something in your job or life or just an algorithm. It is easier to find an idea and build something rather than just start writing code. Like work, you need a purpose.&lt;br /&gt;&lt;br /&gt;Learn a different language. Learn a different technology. Learn more about what you already know. Become a better coder by spending more time doing it. It's like painting and public speaking and lifting weights, the more time to spend doing it the better you will get at it. Especially if you already have the base.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reading books and blogs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The best people I've ever worked with constantly read everything they can about what they work in and what they want to work in. This goes from technical books and blogs to books about learning and working with people. We all have dozens of feed subscriptions in our readers and are constantly trying to keep the number of unread articles down to a manageable level.&lt;br /&gt;&lt;br /&gt;If you aren't sure where to start then ask what your friends read. Follow people on twitter who work in an area you are interested in and who share links. Find an author you like and read everything they write. Find a publisher of books and read stuff they publish.&lt;br /&gt;&lt;br /&gt;Start reading now. You are already falling behind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Contributing to the community&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a controversial one and something I regularly fought with my recent room mate about. I feel it is your responsibility to learn and share and share and learn.&lt;br /&gt;&lt;br /&gt;Contributing to the community can happen by going to a user group that shares your interests where you can speak and listen to your peers. Blogging what you have worked out during the day or something you couldn't find on your last google but solved yourself is another way. Setting up a site where you can share what you have written and show how it is used is also a very good idea although that is a bigger commitment that can be avoided for now with a simlple blog.&lt;br /&gt;&lt;br /&gt;Tweeting is also important as a way to propogate information about what you or others have written. Share what you read through Twitter, your reader, your blog or other social networking sites.&lt;br /&gt;&lt;br /&gt;Once you start it will become a habit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No matter what people tell you, get out there and do more. Learning only at work is not good enough. It is not about running to keep up. It's about learning for life and keeping your skills fresh and valuable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8558897934049773324?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8558897934049773324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8558897934049773324' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8558897934049773324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8558897934049773324'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/04/whole-nine-yards.html' title='The Whole Nine Yards'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SdKvOck9c-I/AAAAAAAADio/lGAnENmIeno/s72-c/effort.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1602370634275428183</id><published>2009-03-24T23:58:00.005+11:00</published><updated>2009-03-25T00:55:41.960+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Suzi'/><category scheme='http://www.blogger.com/atom/ns#' term='Ada Lovelace Day'/><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><title type='text'>Finding Ada</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/suziedwards/sets/72157607107023208/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 268px; height: 400px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/Scjg3l-R1XI/AAAAAAAADhA/OuFtSiSBaRw/s400/Suzi+Bear.jpg" alt="" id="BLOGGER_PHOTO_ID_5316746605801624946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have &lt;a href="http://geekdamana.blogspot.com/2008/11/you-inspire-me.html"&gt;blogged before&lt;/a&gt; about women in technology in Sydney who inspire me and do amazing things in technology. Of course I did this all before it was cool :) Today is &lt;a href="http://findingada.com/"&gt;Ada Lovelace Day&lt;/a&gt; and my post is dedicated to a person who most might not consider a geek girl but who I believe makes a difference for women in technology... &lt;a href="http://binkysilhouette.blogspot.com/"&gt;Suzi Edwards&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;At the 9 year point in my career, I decided to stop chasing the money of contracting and find a place where I could work with people who challenged me and were fun. I tried 2 full time positions for a 5 and 6 month stretch respectively and had lost hope that it would ever happen. I didn't even know what the hell I was looking for by then.&lt;br /&gt;&lt;br /&gt;An old friend suggested I apply to a company called &lt;a href="http://www.thoughtworks.com.au/"&gt;ThoughtWorks&lt;/a&gt;. I'd heard of Martin Folwer and Cruise Control but that was about it. The website looked interesting so I applied.&lt;br /&gt;&lt;br /&gt;That's when I first encountered the phenomenon that is Suzi Edwards (aka &lt;a href="http://binkysilhouette.blogspot.com/"&gt;Binky Silhouette&lt;/a&gt;) who charmed me while she interrogated me in the phone screen for the ThoughtWorks job. She is a recruiter but not just any recruiter. Suzi is the gate keeper and the bait for those hoping to join our company. Thanks for her, I work with the most amazing, dysfunctional, wonderful people in IT.&lt;br /&gt;&lt;br /&gt;I can't tell you about her technical achievements but I can tell you about what Suzi has done from the moment I answered a call from her to right now, in a company, in an industry, in a world that is built for men by men. Just so you know, the company I work for rocks and the guys I have the pleasure of working with are the brightest and most amazing people around. I can not fault them.&lt;br /&gt;&lt;br /&gt;Suzi questioned me, tested me, put me up for interviews with some scary ThoughtWorks engineers and used every skill she had to make sure that when she convinced me to walk through the door that I would know I wanted to be there and that I deserved to be. The 9 stages I needed to pass to get in to that company made up the best application for a job I've ever made. It was worth it.&lt;br /&gt;&lt;br /&gt;Since then, I have seen Suzi encourage women in all areas of the company (from operations to consultants) to embrace who they are as unique amazing women and to support each other. She does this through brutally proclaiming it across a room, organising women's discussion groups, sponsoring &lt;a href="http://girlgeekdinnerssydney.blogspot.com/"&gt;Girl Geek Dinners in Sydney&lt;/a&gt;, &lt;a href="http://girlgeekdinnerschicago.wordpress.com/"&gt;Chicago&lt;/a&gt; and &lt;a href="http://www.calgarygirlgeekdinners.blogspot.com/"&gt;Calgary&lt;/a&gt;, giving technical support to watchers of geek TV like Battlestar Galactica, to picking the phone up and calling from the other side of the world to listen to you cry. She never seems to get tired or lose even an ounce of passion for the idea that women belong in this industry and that you'd have to step over her dead body before you could chase any woman out.&lt;br /&gt;&lt;br /&gt;There are lots of companies in lots of places that are good places to work. When I interviewed for ThoughtWorks, I interviewed with another very good company in Sydney who were going to pay me more and give me lots of cool stuff. They lost out though because I wanted to work with Suzi at this cool place where a woman with such glam grilled the applicants and championed the cause. That was before I even knew her.&lt;br /&gt;&lt;br /&gt;Knowing her has confirmed it. She is a champion of all women in IT. She is a great supporter of women. She is a unique and strong voice for women in ThoughtWorks. She is my friend.&lt;br /&gt;&lt;br /&gt;She is my Ada Lovelace Day inspiration :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1602370634275428183?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1602370634275428183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1602370634275428183' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1602370634275428183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1602370634275428183'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/03/finding-ada.html' title='Finding Ada'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/Scjg3l-R1XI/AAAAAAAADhA/OuFtSiSBaRw/s72-c/Suzi+Bear.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2535337415431500052</id><published>2009-03-11T23:39:00.004+11:00</published><updated>2009-03-11T23:47:42.957+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><title type='text'>2009 Veuve Clicquot Business Woman Award</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/romainheuillard/2130027218/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 400px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/Sbey4GJSw8I/AAAAAAAADeM/Iz29Dlh-T-4/s400/veuve.jpg" alt="" id="BLOGGER_PHOTO_ID_5311910962298799042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-weight: normal;"&gt;&lt;a href="http://wentworth-courier.whereilive.com.au/news/story/a-woman-of-verve-and-vitality/"&gt;The winner of the 2009 Veuve Clicquot Business Woman&lt;/a&gt; is &lt;/span&gt;&lt;span style="font-size:180%;"&gt;"&lt;/span&gt;Mandy Foley-Quin Chief Executive Officer, Stedmans Hospitality&lt;/strong&gt; - Mandy Foley-Quin is the CEO of Stedmans Hospitality, a leading hospitality and staffing agency which she helped found in 1986 and now owns. The business was built around a unique idea, a one-stop shop assuming all responsibility for staff, superannuation and payroll for hospitality personnel on behalf of its clients. It revolutionized the hospitality industry and is now the model for many other similar businesses. Stedmans employs over 1,500 casuals annually, and Mandy is passionate about training young people. Her leadership has taken Stedmans offshore; Mandy and her team have worked with the Olympic Games in Sydney, Athens, Torino and Beijing. The business continues to evolve in new directions with a division set up to service the payroll needs of the film and television industry and the recent establishment of a theatrical management agency.&lt;span style="font-size:180%;"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's sad that the only place I could find this was in the Wentworth Courier. She's not a geek but I like anything that celebrates awesome women.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-2535337415431500052?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2535337415431500052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2535337415431500052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2535337415431500052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2535337415431500052'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/03/2009-veuve-clicquot-business-woman.html' title='2009 Veuve Clicquot Business Woman Award'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/Sbey4GJSw8I/AAAAAAAADeM/Iz29Dlh-T-4/s72-c/veuve.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8421594863083240731</id><published>2009-03-11T23:13:00.001+11:00</published><updated>2009-03-11T23:15:03.945+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><title type='text'>I'm just posting a link, don't shoot me for it</title><content type='html'>&lt;a href="http://netcave.org/ACultureOfPotentialAssholesSexualHarassmentInIT.aspx"&gt;A Culture of (Potential) Assholes: Sexual Harassment in IT&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8421594863083240731?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8421594863083240731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8421594863083240731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8421594863083240731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8421594863083240731'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/03/im-just-posting-link-dont-shoot-me-for.html' title='I&apos;m just posting a link, don&apos;t shoot me for it'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4661971905952930369</id><published>2009-02-15T12:54:00.007+11:00</published><updated>2009-02-15T13:52:21.151+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>✄ Cute ♧ Symbols ☻ On ☂ Your ❤ Mac ✿</title><content type='html'>Someone asked me yesterday how to get cute little symbols in their tweets. This applies everywhere and not just on twitter.&lt;br /&gt;&lt;br /&gt;There are many &lt;a href="http://lmgtfy.com/?q=cute+symbols"&gt;sites&lt;/a&gt; that will give you a bunch so you can copy them. That's an easy and quick way to find them.&lt;br /&gt;&lt;br /&gt;If you have a Mac, this is the best way to find them...&lt;br /&gt;&lt;br /&gt;1. Go to your &lt;span style="font-weight: bold;"&gt;System Preferences&lt;/span&gt; and select &lt;span style="font-weight: bold;"&gt;International&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7vd1oW85hU/SZd-VS1kaRI/AAAAAAAADbk/UETX49yoleU/s1600-h/System+Preferences.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 341px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SZd-VS1kaRI/AAAAAAAADbk/UETX49yoleU/s400/System+Preferences.jpg" alt="" id="BLOGGER_PHOTO_ID_5302845990550923538" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2. Under the &lt;span style="font-weight: bold;"&gt;Input Menu&lt;/span&gt; tab, turn the &lt;span style="font-weight: bold;"&gt;Character Palette&lt;/span&gt; on&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7vd1oW85hU/SZd-zCTyFbI/AAAAAAAADbs/9Itpx-VaT60/s1600-h/International.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 345px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SZd-zCTyFbI/AAAAAAAADbs/9Itpx-VaT60/s400/International.jpg" alt="" id="BLOGGER_PHOTO_ID_5302846501510321586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;3. An Australian flag (for us Aussies) will appear on the right-hand side of the menu bar. Under that is the option to &lt;span style="font-weight: bold;"&gt;Show Character Palette&lt;/span&gt; containing all the possible symbols&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7vd1oW85hU/SZeBDrkUo9I/AAAAAAAADb0/xh-uA9ea8ls/s1600-h/MenuTitle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 23px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SZeBDrkUo9I/AAAAAAAADb0/xh-uA9ea8ls/s400/MenuTitle.jpg" alt="" id="BLOGGER_PHOTO_ID_5302848986486711250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;4. You can insert from the&lt;span style="font-weight: bold;"&gt; Character Palette&lt;/span&gt; in to any text box or document. Now go and annoy everyone to death with pictures instead of words &lt;span style="color: rgb(255, 0, 0);font-size:180%;" &gt;☻&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_A7vd1oW85hU/SZeClgx7oHI/AAAAAAAADb8/OVjbRopsF9k/s1600-h/Characters.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 258px; height: 400px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SZeClgx7oHI/AAAAAAAADb8/OVjbRopsF9k/s400/Characters.jpg" alt="" id="BLOGGER_PHOTO_ID_5302850667218182258" 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/2144813210603379421-4661971905952930369?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4661971905952930369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4661971905952930369' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4661971905952930369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4661971905952930369'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/02/cute-symbols-on-your-mac.html' title='✄ Cute ♧ Symbols ☻ On ☂ Your ❤ Mac ✿'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SZd-VS1kaRI/AAAAAAAADbk/UETX49yoleU/s72-c/System+Preferences.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1436462999793778842</id><published>2009-01-21T19:32:00.006+11:00</published><updated>2009-01-21T21:38:16.428+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>You can't make everyone happy, so don't try too hard</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/ayton/136629036/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SXb2Tgx01TI/AAAAAAAADaY/5o7Uu3EWZIk/s400/voice.jpg" alt="" id="BLOGGER_PHOTO_ID_5293689227097462066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My personality type according to Myers Briggs, sees life as a series of constant battles. In the past that was the case. With age and a pinch of wisdom, that is no longer the trend.&lt;br /&gt;&lt;br /&gt;Since this is my professional blog, I'd like to discuss the idea in the context of the workplace and your place in your organisation.&lt;br /&gt;&lt;br /&gt;First thing, no one respects a &lt;a href="http://wordnetweb.princeton.edu/perl/webwn?s=yes-man"&gt;yes man&lt;/a&gt;. That is a rule. Remember it.&lt;br /&gt;&lt;br /&gt;Having an opinion is always good. You don't always have to voice it all the time but having one is essential. Shutting up is a skill. Learn it.&lt;br /&gt;&lt;br /&gt;So how do you balance the need to speak out and at the right time close the gate between the your brain and your mouth?&lt;br /&gt;&lt;br /&gt;I'm an extrovert and this is something I've constantly struggled with. Even after ten years of practice, there is no easy answer. I do however have a good handle on being myself and not spending too much time pleasing everyone. There is the saying that "you can not please all of the people, all of the time" and this is true but that doesn't mean you should quit and sit passively by, pretending this is not happening.&lt;br /&gt;&lt;br /&gt;Here is how I think you can do this...&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Count to Ten&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Take your time to form your own opinions. Listen to others who you respect. Think about what you respect and like about their ethos and adopt those things as your own with your flavour. Through discussion, reading and contemplation, form your opinion about things conceptually before being in that actual situation. If a whole complex situation is too much then work with parts of situations.&lt;br /&gt;&lt;br /&gt;Don't jump up and voice an opinion on something to the room if you have not thought through what is about to come out of your mouth.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Admit you are wrong, if you are&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Often people voice an opinion and stick to it purely out of pride. If you do get it wrong then learn to admit you are wrong. There is nothing wrong with changing your opinion and telling people, if what you think now is different and improved. People will respect you if you are humble enough to admit you a wrong. Don't be too humble though.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Shut Up Already&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;When you have said your piece and articulated what you think then stop.&lt;br /&gt;&lt;br /&gt;Do not make the mistake of saying something over and over again with the assumption that they aren't agreeing because they simply don't understand. Sometimes, people just don't agree with you, for whatever reason. Say what you have to say and then stop saying it.&lt;br /&gt;&lt;br /&gt;Give the person you are talking to, time to digest what you have expressed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Don't try to please only your Managers&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;One thing I have seen of late is people who state an opinion just to show their bosses that they agree. Managers are not idiots. Ok, &lt;span style="font-style: italic;"&gt;some&lt;/span&gt; are but if they aren't then they see right through you. If your opinion is an exact parrot of your superiors then all that you will gain is a &lt;a href="http://en.wikipedia.org/wiki/Montgomery_Burns"&gt;Mr Burns&lt;/a&gt; and not the respect you may crave.&lt;br /&gt;&lt;br /&gt;Pleasing only those above you also wins you no friends. I've worked in environments where the rule was to "kiss up and kick down". There is only so far you can go with that war cry. Remember to consider how what you say will filter the views of those around you. All people matter. Not just the ones who decide your pay rise.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you follow those four rules, you will find that you will be fine. Interpret them how you will but find your voice. Your own voice. Learn when to use and when not to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1436462999793778842?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1436462999793778842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1436462999793778842' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1436462999793778842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1436462999793778842'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/01/you-cant-make-everyone-happy-so-dont.html' title='You can&apos;t make everyone happy, so don&apos;t try too hard'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SXb2Tgx01TI/AAAAAAAADaY/5o7Uu3EWZIk/s72-c/voice.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3485439038187530219</id><published>2009-01-18T20:20:00.004+11:00</published><updated>2009-01-18T20:57:08.847+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Disabling Enter Causing Submit with jQuery</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/celeste343/2439412107/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SXL0rTb_VOI/AAAAAAAADaQ/Ei5rd-NBxYY/s400/do+not+enter.jpg" alt="" id="BLOGGER_PHOTO_ID_5292561536902976738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Recently I was asked to disable the submit event being triggered when the enter key is hit in a textbox input. This is for an ASP.NET MVC application. That means that including this in the site.master will allow identical behaviour across the entire web application.&lt;br /&gt;&lt;br /&gt;When you hit enter, the focus will move to the next textbox.&lt;br /&gt;&lt;br /&gt;There is also browser sensing code since Firefox needs a different event bound.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;jQuery(document).ready(function($) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; textboxes = $("input:text");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ($.browser.mozilla) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $(textboxes).keypress(checkForEnter);&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $(textboxes).keydown(checkForEnter);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;     &lt;br /&gt;&amp;nbsp;&amp;nbsp; function checkForEnter(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if (event.keyCode == 13) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; currentTextboxNumber = textboxes.index(this);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if (textboxes[currentTextboxNumber + 1] != null) {&lt;br /&gt;        &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; nextTextbox = textboxes[currentTextboxNumber + 1];&lt;br /&gt;        &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; nextTextbox.select();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;                     &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;       event.preventDefault();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;       return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;       }&lt;br /&gt;&amp;nbsp;&amp;nbsp;     }&lt;br /&gt;  });&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3485439038187530219?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3485439038187530219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3485439038187530219' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3485439038187530219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3485439038187530219'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/01/disabling-enter-causing-submit-with.html' title='Disabling Enter Causing Submit with jQuery'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SXL0rTb_VOI/AAAAAAAADaQ/Ei5rd-NBxYY/s72-c/do+not+enter.jpg' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2898148305028674057</id><published>2009-01-16T23:27:00.005+11:00</published><updated>2009-01-16T23:32:49.646+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Rabbit Hole Day</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/tripp-e/2977922000/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SXB-RhaDJ2I/AAAAAAAADaI/PlkJPLN0U8s/s400/Alice+in+Wonderland.jpg" alt="" id="BLOGGER_PHOTO_ID_5291868401650837346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On Lewis Carrol's birthday, &lt;a href="http://crisper.livejournal.com/26562.html"&gt;change your blogging style for a day&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;quote&gt;"January 27th is the birthday of Lewis Carrol, author of ALICE'S ADVENTURES IN WONDERLAND. Alice fell down a rabbit hole into a place where everything had changed and none of the rules could be counted on to apply anymore. I say, let's do the same: January 27th, 2005 should be the First Annual LiveJournal Rabbit Hole Day. When you post on that Thursday, instead of the normal daily life and work and news and politics, write about the strange new world you have found yourself in for the day, with its strange new life and work and news and politics. Are your pets talking back at you now? Has your child suddenly grown to full adulthood? Does everyone at work think you're someone else now? Did Bush step down from the White House to become a pro-circuit tap-dancer? Did Zoroastrian missionaries show up on your doorstep with literature in 3-D? Have you been placed under house arrest by bizarre insectoid women wielding clubs made of lunchmeat?"&lt;/quote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-2898148305028674057?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2898148305028674057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2898148305028674057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2898148305028674057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2898148305028674057'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/01/rabbit-hole-day.html' title='Rabbit Hole Day'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/SXB-RhaDJ2I/AAAAAAAADaI/PlkJPLN0U8s/s72-c/Alice+in+Wonderland.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-108170200769294401</id><published>2009-01-11T01:23:00.016+11:00</published><updated>2009-01-11T02:30:12.822+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Objective-C'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>TDD Objective-C : Testing a Cocoa Framework Project</title><content type='html'>My intention is to write an iPhone application that does something simple, just so I can learn how they are designed, built, tested and deployed. The first step is to design the core functionality that the application will use. For that, I am creating a &lt;a href="http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/AddingBehaviortoaCocoaProgram/chapter_4_section_3.html"&gt;Cocoa Framework&lt;/a&gt;, which is a class library. This project will be test driven.&lt;br /&gt;&lt;br /&gt;This describes how I created a Cocoa Framework project and the accompanying unit tests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Operating System: &lt;/span&gt;Mac OSX 10.5.6&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IDE: &lt;/span&gt;Xcode 3.1.2&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Language: &lt;/span&gt;Objective-C&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Creating a Cocoa Framework Project and Test Target&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;1. Start Xcode;&lt;br /&gt;2. Go to &lt;span style="font-style: italic;"&gt;File -&gt; New Project...&lt;/span&gt; and create a new &lt;span style="font-style: italic;"&gt;Cocoa Framework&lt;/span&gt; project named &lt;span style="font-style: italic;"&gt;MyApp;&lt;/span&gt;&lt;br /&gt;3. In this &lt;span style="font-style: italic;"&gt;MyApp&lt;/span&gt; project under &lt;span style="font-style: italic;"&gt;Targets&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;Add -&gt; New Target&lt;/span&gt;... of the type &lt;span style="font-style: italic;"&gt;Cocoa Unit Test Bundle&lt;/span&gt; called &lt;span style="font-style: italic;"&gt;MyAppTest&lt;/span&gt;s.&lt;quote&gt;&lt;br /&gt;&lt;/quote&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;h4&gt;&lt;span style="font-size:130%;"&gt;Making Your Target Dependent on the Main Executable&lt;/span&gt;&lt;/h4&gt; &lt;p&gt;&lt;quote&gt;"When you configure your test target, you need to decide how you want that target to behave. The unit test bundles that come with Xcode can be integrated with your executable in one of two ways. One technique is to configure your test target as a separate entity that you build and run independent of your main executable. The other is to add dependencies to your target that automatically build your executable and run the tests each time you build."&lt;/quote&gt; -- &lt;a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/UnitTesting/Articles/CreatingTests.html"&gt;Xcode Help&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've chosen to run the tests every time I build the framework project, so I followed the steps on this Xcode Help page: &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://developer.apple.com/documentation/DeveloperTools/Conceptual/UnitTesting/Articles/CreatingTests.html#//apple_ref/doc/uid/TP40002171-125425"&gt; To make your test target dependent on your framework project.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here is a summary of how to make a Cocoa Unit Test Target dependent on your Cocoa Framework by establishing the dependency in your Xcode project:&lt;/p&gt;&lt;p&gt;1. Select your &lt;span style="font-style: italic;"&gt;MyAppTests&lt;/span&gt; target;&lt;/p&gt;&lt;p&gt;2. Open an inspector for the target;&lt;/p&gt;&lt;p&gt;3. Select the &lt;span style="font-style: italic;"&gt;General&lt;/span&gt; tab;&lt;/p&gt;&lt;p&gt;4. Add a dependency to the test target by clicking the &lt;span style="font-style: italic;"&gt;+&lt;/span&gt; button and selecting the framework target &lt;span style="font-style: italic;"&gt;MyApp&lt;/span&gt; from the list;&lt;/p&gt;&lt;p&gt;5. Select your Unit Test Bundle target;&lt;/p&gt;&lt;p&gt;6. Open an inspector for the target. To get an inspector on a project, just control-click on the test target and choose &lt;span style="font-style: italic;"&gt;Get Info&lt;/span&gt;. The resulting window is referred to as an inspector. Typing &lt;span style="font-style: italic;"&gt;Command-I&lt;/span&gt; does the same thing;&lt;/p&gt;&lt;p&gt;7. Set Build -&gt; Linking -&gt;&lt;span style="font-style: italic;"&gt;Bundle Loader&lt;/span&gt; to&lt;span style="font-style: italic;"&gt; $(BUILT_PRODUCTS_DIR)/MyApp.framework/MyApp&lt;/span&gt;;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;Create a Test Class and a Failing Test&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1. Control-click on the &lt;span style="font-style: italic;"&gt;MyAppTests&lt;/span&gt; target and choose &lt;span style="font-style: italic;"&gt;Add -&gt; New File...&lt;/span&gt;;&lt;/p&gt;&lt;p&gt;2. Create a new &lt;span style="font-style: italic;"&gt;Objective-C Test Case Class&lt;/span&gt; and name it &lt;span style="font-style: italic;"&gt;MyAppFunctionalityTests&lt;/span&gt;. Two files will be created - &lt;span style="font-style: italic;"&gt;MyAppFunctionalityTests.h&lt;/span&gt; (the declaration) and &lt;span style="font-style: italic;"&gt;MyAppFunctionalityTests.m&lt;/span&gt; (the definition);&lt;/p&gt;&lt;p&gt;3. In MyAppFunctionalityTests.m, add a test method like this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;code&gt;//&lt;br /&gt;// MyAppFunctionalityTests .m&lt;br /&gt;// MyApp&lt;br /&gt;//&lt;br /&gt;//  Created by Damana Madden on 10/01/09.&lt;br /&gt;//  Copyright 2009 __MyCompanyName__. All rights reserved.&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;#import "&lt;/code&gt;&lt;code&gt;MyAppFunctionalityTests&lt;/code&gt;&lt;code&gt;.h"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@implementation &lt;/code&gt;&lt;code&gt;MyAppFunctionalityTests&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;- (void) testThatThisIsTrueForThisCase&lt;br /&gt;{&lt;br /&gt;STAssertTrue(false,  @"oops it didn't work.");&lt;br /&gt;}&lt;br /&gt;@end&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;4. To run the test, build the MyAppTests target. You will see this test fail.&lt;br /&gt;&lt;br /&gt;Important: All tests must be prefixed with the word 'test' or they will not be picked up and run.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-108170200769294401?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/108170200769294401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=108170200769294401' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/108170200769294401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/108170200769294401'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/01/tdd-objective-c-testing-cocoa-framework.html' title='TDD Objective-C : Testing a Cocoa Framework Project'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5820313679711430779</id><published>2009-01-08T17:00:00.003+11:00</published><updated>2009-01-08T17:07:33.002+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>You should blog on Ada Lovelace Day</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cs.bham.ac.uk/%7Emmk/Teaching/AI/figures/ada.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 312px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SWWWvGJ3xfI/AAAAAAAADWk/KyHpnzLOvZY/s400/ada.jpg" alt="" id="BLOGGER_PHOTO_ID_5288799073266550258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Join a bunch of us in &lt;a href="http://www.pledgebank.com/AdaLovelaceDay"&gt;pledging to write a blog post&lt;/a&gt; on &lt;a href="http://en.wikipedia.org/wiki/Ada_Lovelace"&gt;Ada Lovelace&lt;/a&gt; Day about a woman in technology who you admire. It's happening on the 24th of March, 2009. You can even follow the goings-on through Twitter by following @&lt;a href="http://twitter.com/FindingAda"&gt;FindingAda&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5820313679711430779?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5820313679711430779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5820313679711430779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5820313679711430779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5820313679711430779'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2009/01/you-should-blog-on-ada-lovelace-day.html' title='You should blog on Ada Lovelace Day'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/SWWWvGJ3xfI/AAAAAAAADWk/KyHpnzLOvZY/s72-c/ada.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2435919911154365605</id><published>2008-12-28T22:02:00.006+11:00</published><updated>2008-12-28T22:41:23.034+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>Don't Tweet Drunk</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/joshmattson/2356823952/sizes/l/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SVde5YS9TzI/AAAAAAAADWc/ZwXu_CN8lsQ/s400/twitter.jpg" alt="" id="BLOGGER_PHOTO_ID_5284797027610087218" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The latest meme on &lt;a href="http://www.twitter.com/damana"&gt;Twitter&lt;/a&gt; is for twitterers to blog about Twitter and then tweet it so that it can be retweeted. We all sit around and read it and retweet in agreement or scroll on with a little bit of passive aggression.&lt;br /&gt;&lt;br /&gt;Since &lt;a href="http://au.youtube.com/watch?v=2T1LIrzsgqA"&gt;I'm an individual just like everyone else&lt;/a&gt;, here is my Twitter post of choice. It addresses the eternal question asked by those outside the twitterverse about what this is all about - What is Twitter and why should I use it?&lt;br /&gt;&lt;br /&gt;My first response to that is usually that &lt;span style="font-weight: bold;"&gt;you&lt;/span&gt; don't have to use it. You could go on for the rest of your life not using Twitter and not feel as though you have missed anything. On the other hand, if you do try it out then there are a few things you will experience and gain that are not so easy to list out and debate over Chinese food. These things are additive, like MSG. They add flavour but some people may not react well to it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Networking&lt;/span&gt;&lt;br /&gt;This is networking in whatever sense you want. If there something that you are in to then there are micro-groups on Twitter that share in your passion and will not hesitate to help or support you with your common pursuit. If you want to connect with people around the globe who can encourage your "thing" then Twitter is your forum.&lt;br /&gt;&lt;br /&gt;I use Twitter to network with &lt;a href="http://twitter.com/jodiem"&gt;geek girls&lt;/a&gt;; &lt;a href="http://twitter.com/olabini"&gt;software engineers&lt;/a&gt;, &lt;a href="http://twitter.com/tpbrown"&gt;ThoughtWorkers&lt;/a&gt;; &lt;a href="http://twitter.com/suziedwards74"&gt;friends around the world&lt;/a&gt;; and &lt;a href="http://twitter.com/gga"&gt;family&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reading&lt;/span&gt;&lt;br /&gt;I use Google Reader less and less to find things I want to read when I'm not rushing around and have time to stop. Instead I steadily open in my browser the links that people tweet about that sound interesting to me. These are sometimes things they produce but most often are links to other places on the 'net. From this I find new things to read and subscribe to that I would not have found on my own in the lifetime of the universe. The Interblag is a big place and following people with common interests can introduce a new source of information to the pool you have already collected.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thinking&lt;/span&gt;&lt;br /&gt;I often find it useful to share my thoughts with people on Twitter and then discuss them in order to articulate what I think. There are many intelligent and switched on people out there who will actively discuss things with you.&lt;br /&gt;&lt;br /&gt;Yeah, it is nice to talk about what you are thinking at the time but the coolest part is listening to interesting people bring up ideas that make me you think. Ideas that challenge your own thinking. Ideas you may never ever agree with but are willing to listen to because it's not being shoved down your throat.&lt;br /&gt;&lt;br /&gt;On this point, you must be very careful not to get caught up in &lt;a href="http://en.wikipedia.org/wiki/Group-think"&gt;group-think&lt;/a&gt;. This is very easy to do on Twitter. People do complain regularly that there is too much of this on Twitter and that us being to nice and cuddly towards each other is killing original and critical thought. I do see the danger but also believe that an encouraging environment that allows you to test your assumptions and be wrong without fear of the &lt;a href="http://en.wikipedia.org/wiki/Fail_Whale#Fail_Whale"&gt;fail whale&lt;/a&gt; pushes creativity and individuality. That in itself can overcome the memes that drift in and out of this growing nest of  communities and networks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Twitter is not for everyone but there is a place for you if you choose to follow. It's something different to every person. For all I've expressed here, there will be someone who sees it differently and that's just Twitter.&lt;br /&gt;&lt;br /&gt;Try &lt;a href="http://www.twitter.com/damana"&gt;twitter&lt;/a&gt;. I recommend it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-2435919911154365605?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2435919911154365605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2435919911154365605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2435919911154365605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2435919911154365605'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/12/dont-tweet-drunk.html' title='Don&apos;t Tweet Drunk'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/SVde5YS9TzI/AAAAAAAADWc/ZwXu_CN8lsQ/s72-c/twitter.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2430021426451112928</id><published>2008-12-09T21:17:00.005+11:00</published><updated>2008-12-09T23:09:32.431+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Learning about Testing ASP.NET MVC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/davepatten/389670768/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/ST5f1eIhG9I/AAAAAAAADVM/Q805te1TIl4/s400/fat+controller.jpg" alt="" id="BLOGGER_PHOTO_ID_5277761185551293394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Working on my first commercial implementation of &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt; Beta has been rewarding and frustrating to almost even degrees. Learning to test the MVC framework after hearing the promises of Microsoft and the choir has proven that it is still young and the road is long. It feels like being back in .NET 1.1 land again but as an eternal optimist, I see that as meaning that ASP.NET MVC has a promising future. As promising as C#, which had humble beginnings.&lt;br /&gt;&lt;br /&gt;Abstracting the business value and corresponding actions in to the C part of MV&lt;span style="font-weight: bold;"&gt;C&lt;/span&gt; has meant that the code behind an &lt;a href="http://msdn.microsoft.com/en-us/library/ms178472.aspx"&gt;ASP.NET Page&lt;/a&gt; is reduced to nothing more than specifying the type of model that the strongly typed View uses. That solves an enormous amount of problems that came out of the pre-ASP.NET-MVC world. In particular the classic-ASP-like tendency to put all logic straight in to the events in the code-behind with little to no abstraction. Since you can not instantiate a Page object outside of the ASP.NET framework, it was impossible to unit test the controlling logic in the code-behind. When I have walked on to a project and seen the 3000 lines of code nested in page events, I knew it was almost impossible to safely refactor let alone extend the functionality. All changes in that case had to be additive and in no way morph logic so that nothing legacy would be broken.&lt;br /&gt;&lt;br /&gt;The ability to test Controllers has pushed that code out in to a testable .NET class that can be instantiated independently of the framework and then easily tested. That's brilliant if you weren't already doing that but most of us were. I do commend Microsoft on forcing some sort of design on to us but as usual it's all mechanism and no policy. It's another easy way to say "put it all here" but also test it.&lt;br /&gt;&lt;br /&gt;What I want to see out of future ASP.NET MVC releases is the ability to test Views with simple xpath searches and annotation validators on Models that feed through to the View. Yes, it's not there now but it will be soon as we can see in MVC Futures. This is not a case of Microsoft missing the point at all. They just have to release something and then they will add to it. They have shown their responsiveness to community feedback. If only they wouldn't refer us to stackoverflow.com.&lt;br /&gt;&lt;br /&gt;From the conversations we have had with Microsoft, they have started by saying that it's only the Controller that needs testing and that Views should be tested by a UI testing tool like &lt;a href="http://seleniumhq.org/"&gt;Selenium&lt;/a&gt; and that models have accessors only so don't worry about them. There is then the realisation that testing your View as an abstract concept is not a bad one since it is faster and most efficient than using the UI tools with their overhead (even headless). It certainly will let us test state more efficiently. As for models, validation is so important that the lack of access to annotation validators has resulted in an excess of JavaScript (beit jquery) in our application and I'm not convinced that is a good thing yet. Maybe that's my C# bias kicking in.&lt;br /&gt;&lt;br /&gt;I for one am looking forward to the MVC futures becoming MVC present. Until then, all the positive parts of this new framework like the ease of integration of the Model, View and Controller make up for all the things I still want. It saves me the time I used to spend on implementing MVC in the old world.&lt;br /&gt;&lt;br /&gt;This leaves me extremely optimistic about the future of .NET web development. Until then, let's do our best to avoid the fat Controller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-2430021426451112928?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2430021426451112928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2430021426451112928' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2430021426451112928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2430021426451112928'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/12/learning-about-testing-aspnet-mvc.html' title='Learning about Testing ASP.NET MVC'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A7vd1oW85hU/ST5f1eIhG9I/AAAAAAAADVM/Q805te1TIl4/s72-c/fat+controller.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1304381955635648227</id><published>2008-11-23T21:47:00.008+11:00</published><updated>2008-11-23T23:11:52.811+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>You Inspire Me</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/aeter/535174443/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SSk1zgAvU2I/AAAAAAAADUk/UALpGzF8zCk/s400/girlpower.jpg" alt="" id="BLOGGER_PHOTO_ID_5271803997696512866" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Photo by aeter used under the flickr creative commons license&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I was recently asked by &lt;a href="http://www.thoughtworks.com/who-we-are/leadership-profiles/cyndi-mitchell.html"&gt;one of my colleagues&lt;/a&gt; at ThoughtWorks, who my female role models are.&lt;br /&gt;&lt;br /&gt;It took a bit of thought to come up with famous people who I want to grow up to be or who I aspire to and I felt like I was picking the same old cliches that everyone picks. The interesting thing that was going on as I looked for inspiring political leaders was that I kept going "oh, I can't pick her because she's a friend of mine".&lt;br /&gt;&lt;br /&gt;Then I realised that the people who inspire me are often people you know. People who you look towards for inspiration. I keep reading lists of women in IT who rock but they all seem to be stacked with people from the US and the UK. Here are mine...&lt;a href="http://blogs.msdn.com/ceibner/default.aspx"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;span class="HcCDpe"&gt;&lt;a href="http://blogs.msdn.com/ceibner/default.aspx"&gt;Catherine Eibner&lt;/a&gt;&lt;br /&gt;I met Catherine at the first Girl Geek Dinner held in Sydney. She ran her own successful business at the time. Now she is an evanglist for Microsoft in the Dynamics space. She travels, speaks, blogs and is an active member and organiser of many community groups including &lt;a href="http://wpmu.thepodcastnetwork.com/geekgirlblogs/2008/06/30/geekgirlblogs-podcast-01-running-a-web-20-startup/"&gt;Geek Girl Blogs Podcasts&lt;/a&gt;. On top of all of this, she is a mother of a 3 year old boy who never stands still for more than a minute. She is always smiling, even on 2 hours of sleep.&lt;br /&gt;&lt;br /&gt;Her best advice to me: &lt;span style="font-style: italic;"&gt;"Exhale and enjoy life. We have it pretty good."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/annali/"&gt;&lt;span class="JDpiNd"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="HcCDpe"&gt;&lt;a href="http://blogs.msdn.com/annali/"&gt;Anna Liu&lt;/a&gt;&lt;br /&gt;Anna is the lead of the Microsoft evanglisits in Australia. She's the only person I've ever seen the rest of them truly jump for but they all adore her. Anna and I first met at a lunch for International Women's Day in 2008, that was organised by a splinter group who were over the non-technical dominant IT women's group in Sydney. We first bonded over the colours we had worn on the day and then over the idea that this town needed a group for the niche geek girl idea. Through this year, she has supported GGD Sydney and me by arranging Microsoft sponsorship and just being someone who I could send an email to and have a chat. When I saw her speak on a panel for the first time, she inspired me to want to get up there and do it too. Going to lunch with Anna and friends is always blogable but I've learnt to hold myself back :)&lt;br /&gt;&lt;br /&gt;Her best advice to me: &lt;span style="font-style: italic;"&gt;"Keep doing what you are doing."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="HcCDpe"&gt;&lt;a href="http://cexmatters.blogspot.com/"&gt;Lindsay Ratcliffe&lt;/a&gt;&lt;br /&gt;&lt;span class="JDpiNd"&gt;Linz and I work together. At least we used to at a previous client. Lindsay is the guru of User Experience at ThoughtWorks and in Australia through her involvement in the Australian Usabilty Group. She is a huge supporter of the women she works with and most probably the person TW Australia will attempt to clone first when the technology is in beta. Her skills in user experience design have shown me that building applications is less about what the devs think is cool technology and more about how much people enjoy using your final application.&lt;br /&gt;&lt;br /&gt;Her best advice to me:&lt;span style="font-style: italic;"&gt; "Always think about motives behind why someone may say something nasty to you and throw it away if it just doesn't feel right."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="HcCDpe"&gt;&lt;a href="http://jodiem.wordpress.com/"&gt;Jodie Miners&lt;/a&gt;&lt;br /&gt;Jodie specialises in construction IT. She has many interesting insights in to women in IT and working in male dominated environments and is always positive about our industry. I met Jodie at the first GGD Sydney and we have grown to be good friends. She is actively involved in organsing the IT communities in Sydney and inspires me every time I feel a little tired with my own organising. No matter what happens, she will turn up and support her community because as she has told me, it's about people. After sneaking her in to the TechEd08 party and competing to meet the most new people in a night, I've learnt from her that it's cool to be a geek amongst geeks and never have to apologise.&lt;br /&gt;&lt;br /&gt;Her advice to me:&lt;span style="font-style: italic;"&gt; "Just keep organising it and they will come."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pipka.org/standard-bio/"&gt;Pia Waugh&lt;/a&gt;&lt;br /&gt;Pia is one of those people who has a &lt;a href="http://en.wikipedia.org/wiki/Pia_Waugh"&gt;wikipedia page&lt;/a&gt;, as you do. She's an open source girl but her and I have always found a lot of common ground. I even spare her my rants about giving stuff away for free since I respect her so much. She is major force behind the OLPC in Australia. That includes work in Aboriginal commuities.  We met at dinner 0 for GGD Sydney. Since then we have supported each other's causes and even gone to a tupperware party together.&lt;br /&gt;&lt;br /&gt;Her advice to me:&lt;span style="font-style: italic;"&gt; "Geeks rock! Be proud of it."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://carruthk.blogspot.com/"&gt;Kate Carruthers&lt;/a&gt;&lt;br /&gt;Kate and I just keep running in to each other, at work and in life. I guess the universe was going to get us together sooner or later. She's the most relaxed woman I know yet is on the ball and always ten steps ahead of everyone else. She works for herself as a contractor, a writer and an avid social networker. She is inclusive and supportive to all the people around her and has mastered the ability to get her point across strongly without stepping on a single toe. A must in what we do.&lt;br /&gt;&lt;br /&gt;Her best advice to me: &lt;span style="font-style: italic;"&gt;"Don't worry about it too much. Ask others to help and they will."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.soulsolutions.com.au/Blog.aspx"&gt;Bronwen Zande&lt;/a&gt;&lt;br /&gt;Bronwen and I met virtually through &lt;a href="http://geekgirlblogs.com/"&gt;Geek Girl Blogs&lt;/a&gt; - the biggest women's blog aggregator in the world. She started it. She also works for herself as the expert on Microsoft Live services in Oz, plays volleyball and runs the very successful Brisbane GGD. When we first met IRL after emailing and tweeting for months, she amazed me. She's young, organised and brilliant and the first person in a while who made me want to build a time machine and go back in time to tell myself to do more in my mid-twenties.&lt;br /&gt;&lt;br /&gt;Her best advice to me:&lt;span style="font-style: italic;"&gt; "Ignore the idiots."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://alison-young.com/"&gt;Allison Young&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Alegrya as she is better known in social networking circles is the most popular geek girl in this town. She only recently graduated from a degree with honours in IT and is working in her dream job. If only I had known what I wanted at her age. She's energetic and an achiever. Being around her is fun and educational.&lt;br /&gt;&lt;br /&gt;Her best advice to me: &lt;span style="font-style: italic;"&gt;"You should tweet that."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Who inspires you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1304381955635648227?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1304381955635648227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1304381955635648227' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1304381955635648227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1304381955635648227'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/11/you-inspire-me.html' title='You Inspire Me'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SSk1zgAvU2I/AAAAAAAADUk/UALpGzF8zCk/s72-c/girlpower.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-413367587846101953</id><published>2008-11-19T00:54:00.006+11:00</published><updated>2008-11-19T01:15:58.318+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>What if they just don't get you?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_A7vd1oW85hU/SSLMiG7Q5cI/AAAAAAAADUM/OgRuz20eksE/s1600-h/feedback.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SSLMiG7Q5cI/AAAAAAAADUM/OgRuz20eksE/s400/feedback.jpg" alt="" id="BLOGGER_PHOTO_ID_5269999400323704258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Experiencing feedback is really like it sounds. You are holding the microphone of life and you turn to face the speakers. They scream and squeal in agony as the sound makes the sound of the sound making the sound.&lt;br /&gt;&lt;br /&gt;Feedback is good for me. They all say it is. People who I want to be when I grow up.&lt;br /&gt;&lt;br /&gt;Some people put effort in to it and make comments that will haunt but improve you.&lt;br /&gt;Others take the 95% of you what is good and put that aside. Then they take a gigantic magnifying glass and hold it up so the Sun burns the 5%. They want to fix you.&lt;br /&gt;&lt;br /&gt;Here is my view of feedback in a formal and informal sense...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Always have real life examples for someone when you stand before them and compliment of condemn them. Both situations require honestly and example to show you sincerly care;&lt;/li&gt;&lt;li&gt;Don't put it in writing if it burns - oh how it burns. People don't need to see something in writing that could have been improved with a conversation. Sometimes, taking the time to sit and drink coffee and talk to someone can mend anything you think needs mending. Remember to tell them that if you didn't care then you would not bother sharing;&lt;/li&gt;&lt;li&gt;Mean well. Always mean to help or improve and share. Otherwise, there is no point in bothering.&lt;/li&gt;&lt;/ol&gt;How do you see feedback?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-413367587846101953?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/413367587846101953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=413367587846101953' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/413367587846101953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/413367587846101953'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/11/what-if-they-just-dont-get-you.html' title='What if they just don&apos;t get you?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SSLMiG7Q5cI/AAAAAAAADUM/OgRuz20eksE/s72-c/feedback.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-2556954914326956511</id><published>2008-11-15T21:46:00.004+11:00</published><updated>2008-11-15T22:20:27.815+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='dotnet'/><title type='text'>Making your own VS.NET nunit Test Project Template</title><content type='html'>&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;div&gt;Returning to .NET has been exciting after a long time away playing in Java and Ruby land. I can't say I'll miss XML config files and all that junk.&lt;br /&gt;&lt;br /&gt;First thing I did after creating my first &lt;a href="http://www.asp.net/mvc/"&gt;ASP.NET MVC&lt;/a&gt; project was to add a template to easily create a project to test it. The new template will create a class library project with &lt;a href="http://www.asp.net/mvc/"&gt;MVC&lt;/a&gt;, &lt;a href="http://www.nunit.org/index.php"&gt;nunit&lt;/a&gt; and my mocking framework of choice &lt;a href="http://ayende.com/Blog/archive/2007/03/28/Rhino-Mocks-3.0-Released.aspx"&gt;Rhino&lt;/a&gt; included and ready to go.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;When you use VS.NET 2008 to create an MVC web application, it asks if you want to add a testing project to go alongside. Unfortunately, the only choice of test project template you get is the Microsoft one and I like nunit much much more.&lt;br /&gt;&lt;br /&gt;This is how we do it...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Set the project up the way you want it to appear new&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Create a new C# class library project. Give it a general name which will apply to your test project template. &lt;/li&gt;&lt;li&gt;Add a reference to the &lt;b&gt;System.Web.MVC&lt;/b&gt; dll. &lt;/li&gt;&lt;li&gt;Add a reference to the &lt;b&gt;nunit.framework&lt;/b&gt; dll. &lt;/li&gt;&lt;li&gt;Add a reference to the &lt;b&gt;Rhino.Mocks&lt;/b&gt; dll. &lt;/li&gt;&lt;li&gt;Set the &lt;b&gt;Copy Local&lt;/b&gt; property for all of the above dll references to &lt;b&gt;True&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Create a &lt;b&gt;Controller&lt;/b&gt; folder under the project root. &lt;/li&gt;&lt;li&gt;Add a class &lt;span style="font-weight: bold;"&gt;HomeControllerTest&lt;/span&gt; to the Controller folder. &lt;/li&gt;&lt;li&gt;Add unit tests to cover the &lt;b&gt;About&lt;/b&gt; and &lt;b&gt;Index&lt;/b&gt; actions.&lt;/li&gt;&lt;li&gt;Build your project to get the binaries.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Export the project template&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;ol&gt;&lt;li&gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;Go to &lt;b&gt;File --&gt; Export Template&lt;/b&gt; and use the wizard to export the template. Call it &lt;/span&gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;NUnitTest.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt; &lt;/span&gt;You will be told where the zip file is saved to.&lt;/li&gt;&lt;li&gt;Be sure to chose the option to include the icon.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Importing the new template&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Move the &lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;span style=";font-family:Arial,sans-serif;font-size:100%;"  &gt;&lt;span style="font-weight: bold;"&gt;NUnitTest.zip&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to &lt;b&gt;%Program Files%\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;Csharp\Test\1033.&lt;/b&gt; This might be different for you. &lt;/li&gt;&lt;li&gt;Quit Visual Studio. &lt;/li&gt;&lt;li&gt;Open a command prompt and navigate to &lt;b&gt;%Program Files%\Microsoft Visual Studio 9.0\Common7\IDE&lt;/b&gt;. &lt;/li&gt;&lt;li&gt;Execute &lt;b&gt;devenv /setup&lt;/b&gt; and go make a cup of coffee.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you now open VS.NET 2008 and create a new project, you should be able to see your template show up under the &lt;b&gt;C#--&gt;Test&lt;/b&gt; directory. &lt;/li&gt;&lt;li&gt;Add the registry key below by copying the text in to a file and calling it &lt;span style="font-weight: bold;"&gt;nunit.reg&lt;/span&gt;. Run this regfile to add the key. You can add it manually also using regedit.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Windows Registry Editor Version 5.00&lt;br /&gt;&lt;br /&gt;[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\MVC\TestProjectTemplates\NUnit\C#]&lt;br /&gt;"Template"="NUnitTest.zip"&lt;br /&gt;"Path"="CSharp\\Test"&lt;br /&gt;"TestFrameworkName"="nunit Test"&lt;br /&gt;"AdditionalInfo"="http://msdn2.microsoft.com/en-us/library/ms243147(VS.80).aspx"&lt;br /&gt;"Package"=""&lt;br /&gt;&lt;/code&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/2144813210603379421-2556954914326956511?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/2556954914326956511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=2556954914326956511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2556954914326956511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/2556954914326956511'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/11/making-your-own-vsnet-nunit-test.html' title='Making your own VS.NET nunit Test Project Template'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5880668875138633792</id><published>2008-11-03T15:58:00.001+11:00</published><updated>2008-11-03T17:24:42.956+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gatherings'/><title type='text'>Bar Camp Sydney</title><content type='html'>&lt;a href="http://barcamp.org/BarCampSydney"&gt;Barcamp Sydney&lt;/a&gt; is on again...&lt;br /&gt;&lt;br /&gt;&lt;h2 tocme=""&gt;&lt;span style="font-size:100%;"&gt;Details&lt;/span&gt;&lt;/h2&gt;&lt;p&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Who?&lt;/b&gt; Anyone who is interested in technology, the Internet and related topics. We have room for more than 200 people, so bring your colleagues. &lt;/li&gt;&lt;li&gt;&lt;b&gt;What?&lt;/b&gt; A good opportunity to share ideas and projects and to work with like-minded individuals. &lt;/li&gt;&lt;li&gt;&lt;b&gt;When?&lt;/b&gt; 9am-6pm on Saturday 15 November 2008&lt;/li&gt;&lt;li&gt;&lt;b&gt;Where?&lt;/b&gt; &lt;a class="WikiLink" id="p-f22ffba047d6e434044cd10c4555f69ba777d5eb" href="http://barcamp.org/BarCampSydney"&gt;BarCampSydney&lt;/a&gt; will be held at the Roundhouse at UNSW, Anzac Parade. See &lt;a href="http://www.wikimapia.org/#lat=-33.916516&amp;amp;lon=151.226898&amp;amp;z=18&amp;amp;l=0&amp;amp;m=h&amp;amp;v=2"&gt;WikiMapia&lt;/a&gt; for details about  the location.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Getting There&lt;/b&gt; Lots of buses to &amp;amp; from Central or Elizabeth St (39x, L94). Click &lt;a href="http://www.131500.info/realtime/fullEnquiry.asp?PageMode=&amp;amp;Vehicle=Bus%2CTrain%2CFerry&amp;amp;WalkSpeed=NORMAL&amp;amp;Priority=&amp;amp;IsAfter=B&amp;amp;Date=5%2F4%2F2008&amp;amp;MaxChanges=-1&amp;amp;Wheelchair=&amp;amp;Time=09%3A00AM&amp;amp;FromLoc=City+%28QVB%29+%282000118%29%7E%7E%3BCity+%28QVB%29+%282000118%29%3BCity+%28QVB%29+%282000118%29%7E%7ELOCATION&amp;amp;ToLoc=UNSW+-+High+St%7E%7E%3BUNSW+-+High+St%3B%5B336215%3A6245824%5D%7E%7EPOINT&amp;amp;x=24&amp;amp;y=10"&gt;HERE&lt;/a&gt; for details on busses from the City (QVB) to UNSW to get you to there on time, and see the &lt;a href="http://notessrv.chan.unsw.edu.au/faciliti.nsf/pages/transport?OpenDocument"&gt;Univeristy Busses Page&lt;/a&gt; for details about getting back to the city. For Parking see the &lt;a href="http://www.facilities.unsw.edu.au/maps/Kensington_Parking_Map.pdf"&gt;University Parking Map&lt;/a&gt; - All day parking is on the upper floors of the Barker St and Botany St Parking Stations and will cost you $12 for the day. Plenty of nearby street parking just over Anzac Pde.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Website?&lt;/b&gt; The &lt;a class="WikiLink" id="p-f22ffba047d6e434044cd10c4555f69ba777d5eb" href="http://barcamp.org/BarCampSydney"&gt;BarCampSydney&lt;/a&gt; blog is located at: &lt;a href="http://www.barcampsydney.org/"&gt;www.BarCampSydney.org&lt;/a&gt;. We'll be posting updated information about the event there.&lt;/li&gt;&lt;li&gt;&lt;b&gt;On the day&lt;/b&gt; A map of local food, drink and transport &lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=114494140836971212825.00044a08aaa3e044f0325&amp;amp;z=15"&gt; here&lt;/a&gt;. &lt;a href="http://www.answed.pl/" style="text-decoration: none; font-size: 1px;"&gt;&lt;span style="color:#eaf3d9;"&gt;wino&lt;/span&gt;&lt;/a&gt; &lt;a href="http://www.hipotekaplus.pl/kredyt_mieszkaniowy" title="kredyt mieszkaniowy" target="_blank" style="text-decoration: none; font-size: 1px;"&gt;&lt;span style="color:#eaf3d9;"&gt;kredyt mieszkaniowy&lt;/span&gt;&lt;/a&gt; &lt;a href="http://www.sprzedammieszkanie.com/" style="text-decoration: none; font-size: 1px;"&gt;&lt;span style="color:#eaf3d9;"&gt;sprzedam mieszkanie&lt;/span&gt;&lt;/a&gt; &lt;a href="http://www.sprzedambilet.pl/" style="text-decoration: none; font-size: 1px;"&gt;&lt;span style="color:#eaf3d9;"&gt;sprzedam bilet&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5880668875138633792?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5880668875138633792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5880668875138633792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5880668875138633792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5880668875138633792'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/11/bar-camp-sydney.html' title='Bar Camp Sydney'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5519727133237195401</id><published>2008-10-31T13:36:00.000+11:00</published><updated>2008-10-31T17:36:16.719+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Finding our target velocity without black magic</title><content type='html'>&lt;div style="text-align: left;"&gt;To be in the moment (and I always like to be), here is a post for Halloween that removes the black magic from the estimation process and determines initial velocity.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/euart/282152605"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_A7vd1oW85hU/SQqmplR-K2I/AAAAAAAACao/oMU77-Ky7a0/s400/halloween.jpg" alt="" id="BLOGGER_PHOTO_ID_5263202347848182626" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Photo by &lt;a href="http://www.flickr.com/photos/euart/282152605/sizes/o/"&gt;euart&lt;/a&gt; used under the flickr Creative Commons license&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Starting a new project and being around from the beginning is always an eye opener. If you are involved in estimation then it is also like signing a contract. Breach of promise to reach the guessed random number can be punished with overtime and a sense of failure. Heaven forbid a late project especially if it is fixed price.&lt;br /&gt;&lt;br /&gt;I've started a new project and we are working out how long it will take and what resources are required. For the first time, estimation seemed more deliberate and less like &lt;span style="font-style: italic;"&gt;guesstimation&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;This is how we did it...&lt;br /&gt;&lt;br /&gt;What you need to start estimating:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The latest draft of the master story list - a list of the all the stories known so far, written like &lt;span style="font-style: italic;"&gt;"AS a person using the system, I WANT TO do something functional SO THAT business value is achieved"&lt;/span&gt;;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;As many members of the delivery team as possible - including engineers, testers (QA), business analysts (BA) and even business;&lt;/li&gt;&lt;li&gt;Agree on the length of an iteration;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;An estimation deck - usually consisting of cards representing the Fibonacci sequence between 1 to 13. If you don't have this then use your fingers with 10 fingers = 13;&lt;/li&gt;&lt;li&gt;A willingness to estimate in &lt;b&gt;points&lt;/b&gt; and not days;&lt;/li&gt;&lt;li&gt;A big table for everyone to sit around and to spread the cards on;&lt;/li&gt;&lt;li&gt;Snacks - this can take a while.&lt;/li&gt;&lt;/ul&gt;Next you get the team to understand what you are building, both high-level technically and what the business wants:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sit everyone down at the table;&lt;/li&gt;&lt;li&gt;Have the BA or Project Manager (PM) read through every story;&lt;/li&gt;&lt;li&gt;Allow questions to understand what the story means;&lt;/li&gt;&lt;li&gt;Rewrite or breakdown stories in to small functioning parts;&lt;/li&gt;&lt;li&gt;Write out all stories on 4x6 cards.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now you start throwing numbers around:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Re-read the stories;&lt;/li&gt;&lt;li&gt;Get everyone involved in delivery to do min-likely-max estimates and write them on the back of the cards- minimum points if all goes blissfully well, likely points in a realistic situation and maximum points if all hell breaks loose;&lt;/li&gt;&lt;li&gt;For each story work out volatility - low, medium or high;&lt;/li&gt;&lt;li&gt;For each story work out completeness - complete, incomplete or unknown;&lt;/li&gt;&lt;li&gt;For each story work out complexity - simple, medium or complex;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Engineers group the stories in to what they think they could complete in one iteration. Use about 5 groups - dependencies and iteration order are not important. Just look at the size of the stories and group an iterations worth;&lt;/li&gt;&lt;li&gt;PM secretly adds up the total likely estimated points from the groups and works out average iteration velocity;&lt;/li&gt;&lt;li&gt;PM lays out different groups of stories that would fit in to the new predicted velocity - note this is not the teams actual velocity because that isn't known until they actually start banking points;&lt;/li&gt;&lt;li&gt;The engineers looks at the groups and decide if they are too big, just right or too small - it's a little like Goldilocks;&lt;/li&gt;&lt;li&gt;Rinse and repeat - this can be re-estimated and sorted again to double check numbers.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5519727133237195401?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5519727133237195401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5519727133237195401' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5519727133237195401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5519727133237195401'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/09/finding-our-target-velocity-without.html' title='Finding our target velocity without black magic'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_A7vd1oW85hU/SQqmplR-K2I/AAAAAAAACao/oMU77-Ky7a0/s72-c/halloween.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8808811537203440222</id><published>2008-10-27T23:06:00.005+11:00</published><updated>2008-10-27T23:41:13.832+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Don't Embrace Mediocrity</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/caravinagre/1364614919/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/SQW1qxKzSMI/AAAAAAAACag/POe8JqZ20Rc/s400/dull.jpg" alt="" id="BLOGGER_PHOTO_ID_5261811486010067138" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;used under the flick creative commons license by &lt;a href="http://www.flickr.com/photos/caravinagre/" title=""&gt;&lt;b&gt;caravinagre&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I wrote a post a while ago that somehow got on to a few of the IT aggregators and resulted in an influx of readers, many of whom were interested in what was a popular topic at the time. That attention brings out the good, the bad and the ugly on the Interblag.&lt;br /&gt;&lt;br /&gt;A friend of mine who regularly blogs about food on our work blog feeder has also recently been attacked by the freak-geek police and told her blog doesn't belong as it isn't technical. Amusingly enough, it wasn't even a work colleague who said this.&lt;br /&gt;&lt;br /&gt;After spending an hour listening to &lt;a href="http://en.wikipedia.org/wiki/Edward_de_Bono"&gt;Edward de Bono&lt;/a&gt; talk about why arguing a point doesn't always produce the best outcome, I'm starting to see that point of view reinforced online. It was probably always there but it seems relevant to me now. So let's discuss it and also annoy the people who think that only code snippets belong in blog posts.&lt;br /&gt;&lt;br /&gt;Are any new ideas being added to the blogosphere? Is blogging dead? If it is and there are no new ideas then what or who killed it?&lt;br /&gt;&lt;br /&gt;It seems that if you are established, usually not through rising on the Internet but through a more traditional (and rightfully respected) publishing background, then your opinion is rarely knocked online. Social proof or tangible proof. If you are more like the bloggers I see out there with new ideas and different ways of thinking and challenging the established norm, then your words will be hammered. Interestingly enough, it is a small enough group who attacks so it doesn't really matter most of the time. It does however feel like that constant beating at the edges of the blogosphere, is dulling the interesting sparky parts.&lt;br /&gt;&lt;br /&gt;It even has the potential to silence any new comers who think they might have something to say and haven't quite found their voice. Instead those who are happy with the way the Internet appears to be to them want to keep it that way. Maintain the average. Silence the creativity. It's an &lt;span style="font-style: italic;"&gt;obscure&lt;/span&gt; notion to tell someone else not to speak so I will not tell them not to speak as they so happily feel the right to do to others.&lt;br /&gt;&lt;br /&gt;Instead, I encourage any of you out there with something to say to stand up and say it. Ignore the push toward mediocrity. I paraphrase the wise and powerful Madonna in saying: &lt;span style="font-style: italic;"&gt;Express what you've got, baby ready or not. Express yourself!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8808811537203440222?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8808811537203440222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8808811537203440222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8808811537203440222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8808811537203440222'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/10/dont-embrace-mediocrity.html' title='Don&apos;t Embrace Mediocrity'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/SQW1qxKzSMI/AAAAAAAACag/POe8JqZ20Rc/s72-c/dull.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1186985942910357332</id><published>2008-10-27T22:32:00.006+11:00</published><updated>2008-10-27T22:59:21.961+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><title type='text'>This one is better: ruby-net-ldap</title><content type='html'>After posting a quick how-to about &lt;a href="http://geekdamana.blogspot.com/2008/10/ruby-ldap.html"&gt;Ruby-LDAP&lt;/a&gt;, I received a couple of very helpful comments that pointed me towards &lt;a href="http://rubyfurnace.com/docs/ruby-net-ldap-0.0.4/"&gt;ruby-net-ldap&lt;/a&gt;. This is a pure Ruby LDAP library that is stable and has good documentation to help you along. It is the best Ruby LDAP gem out there and I've been through almost all of them to get to this point.&lt;br /&gt;&lt;br /&gt;Here is a simple search for an organizational unit with the name "marketing"...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'net/ldap'&lt;br /&gt;&lt;br /&gt;def ldap_search&lt;br /&gt;&lt;br /&gt;&amp;nbsp;ldap = Net::LDAP.new&lt;br /&gt;&amp;nbsp;ldap.host = "localhost"&lt;br /&gt;&amp;nbsp;ldap.port = "389"&lt;br /&gt;&amp;nbsp;ldap.auth "cn=Directory Manager", "password"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;filter = Net::LDAP::Filter.eq( "ou", "marketing" )&lt;br /&gt;&amp;nbsp;attrs = [ "ou" , "objectClass"]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;ldap.search( :base =&gt; "dc=mycompany, dc=com", :attributes =&gt; attrs, :filter =&gt;&lt;br /&gt;&amp;nbsp;filter, :return_result =&gt; true )  do |entry|&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;puts entry.dn&lt;br /&gt;&amp;nbsp;end&lt;br /&gt;&lt;br /&gt;end &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here is the code to add an organizational unit under the base node...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'net/ldap'&lt;br /&gt;&lt;br /&gt;def ldap_search&lt;br /&gt;&lt;br /&gt;&amp;nbsp;ldap = Net::LDAP.new&lt;br /&gt;&amp;nbsp;ldap.host = "localhost"&lt;br /&gt;&amp;nbsp;ldap.port = "389"&lt;br /&gt;&amp;nbsp;ldap.auth "cn=Directory Manager", "password"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;dn = "ou=marketing, dc=mycompany, dc=com"&lt;br /&gt;&amp;nbsp;attr = {&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;:ou =&gt; "marketing",&lt;br /&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;:objectclass =&gt;"organizationalUnit"&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;ldap.add( :dn =&gt; dn, :attributes =&gt; attr )&lt;br /&gt;&lt;br /&gt;end    &lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check out the rest of the documentation for &lt;a href="http://rubyfurnace.com/docs/ruby-net-ldap-0.0.4/"&gt;pretty good examples&lt;/a&gt;. This is the library I recommend. In my situation, I'm using ruby-net-ldap to import data in to, manipulate and query data in an OpenDS LDAP server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1186985942910357332?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1186985942910357332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1186985942910357332' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1186985942910357332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1186985942910357332'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/10/this-one-is-better-ruby-net-ldap.html' title='This one is better: ruby-net-ldap'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-9006114943466837477</id><published>2008-10-05T23:08:00.005+11:00</published><updated>2008-10-06T00:58:23.881+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Ruby-LDAP</title><content type='html'>I said it would never happen but here is another Ruby blogpost for the &lt;a href="http://blogs.thoughtworks.com/"&gt;ThoughtWorks pool&lt;/a&gt;. In my defense, there really wasn't much help out there on this topic so my &lt;a href="http://www.markhneedham.com/blog/"&gt;pair&lt;/a&gt; and I decided this had to be posted. His post on what we tried in order to make &lt;a href="http://www.ruby-lang.org/en/"&gt;Ruby&lt;/a&gt; talk to LDAP is &lt;a href="http://www.markhneedham.com/blog/2008/10/05/ruby-ldap-options/"&gt;over there&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Bits&lt;/span&gt;&lt;span style="text-decoration: underline; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="font-weight: bold;" href="https://opends.dev.java.net/"&gt;OpenDS&lt;/a&gt; is Sun's LDAP server. We chose this as our LDAP server because it is the one most likely to sit behind the &lt;a href="https://opensso.dev.java.net/"&gt;OpenSSO&lt;/a&gt; Single Sign-On implementation we are populating, querying and binding to. It is written purely in Java and provides a bunch of useful shell scripts and a Java API to do the things we want to do. This will allow us to test our Ruby-LDAP implementation independently of our solution.&lt;br /&gt;&lt;br /&gt;OpenDS has a nice installer with a friendly setup wizard. If you want to &lt;a href="https://www.opends.org/wiki/page/Setup"&gt;script the install&lt;/a&gt; then run this from the root of the installation directory:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt;$&lt;/span&gt;    './setup --cli --no-prompt -p 1389 -D "cn=Directory Manager" -w "password" -b dc=example,dc=com -a --doNotStart'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ruby-ldap.sourceforge.net/"&gt;Ruby-LDAP&lt;/a&gt; was the friendliest and most sensible choice because it was the most pure Ruby choice which allowed us to do things &lt;span style="font-style: italic;"&gt;the Ruby way&lt;/span&gt;. &lt;a href="http://rjb.rubyforge.org/"&gt;RJB&lt;/a&gt; let us use the OpenDS libraries but was too much like writing Java in Ruby and involved running another JVM on the production server it is destined for. If we were to go that far then we'd have opted for JRuby to do the bridging. After &lt;a href="http://rubyforge.org/projects/ruby-activeldap/"&gt;ActiveLDAP&lt;/a&gt; flat out refused to acknowledge OpenDS and would only play well with OpenLDAP, that was written off. Ruby-LDAP is a written in C so it isn't a nice gem install but instead takes a bit of making and shaking to get going.&lt;br /&gt;&lt;br /&gt;Here is how to install it from the command line once it is &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=66444"&gt;downloaded&lt;/a&gt; and unzipped:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt;$&lt;/span&gt; ruby &lt;/code&gt;&lt;code&gt;ruby-ldap-0.9.7&lt;/code&gt;&lt;code&gt;/extconf.rb "."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt;$&lt;/span&gt; make&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&gt;$&lt;/span&gt; make install&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Required Basic LDAP Knowledge&lt;/span&gt;&lt;br /&gt;LDAP is like a very simple and slightly stupid database for storing Identity information. It does not have transactions. You can't query it with SQL. It is a tree. It does have a schema.&lt;br /&gt;&lt;br /&gt;Understand your LDAP schema. You can customise it. It is made up of nodes that are defined by &lt;a href="http://www.zytrax.com/books/ldap/ape/"&gt;object classes and attributes&lt;/a&gt;. These include but are not restricted to: Organization; OrganizationalUnit; and Person.&lt;br /&gt;&lt;br /&gt;Distinguished Name &lt;span style="font-weight: bold;"&gt;(DN)&lt;/span&gt; appears everywhere when you are dealing with LDAP. It is the unique name given to a node in the LDAP tree and describes the exact path from the node to the root. A&lt;span style="font-weight: bold;"&gt; DN &lt;/span&gt;starts at the node and walks up the tree. It looks like:&lt;code&gt; uid=damana,ou=australia,dc=mycompany,dc=com&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This is an &lt;a href="http://www.zytrax.com/books/ldap/apd/index.html#dit"&gt;LDAP glossary&lt;/a&gt; that was useful in deciphering the LDAP maze and nomenclature.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding an Organizational Unit&lt;/span&gt;&lt;br /&gt;To add an organizational unit:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require 'ldap'&lt;br /&gt;&lt;br /&gt;connection = LDAP::Conn.new('localhost', 1389)&lt;br /&gt;&lt;/code&gt;&lt;code&gt;connection&lt;/code&gt;&lt;code&gt;.bind('cn=Directory Manager','password')&lt;br /&gt;&lt;br /&gt;record = [&lt;br /&gt;LDAP.mod(LDAP::LDAP_MOD_ADD,'objectclass',['&lt;span style="font-weight: bold;"&gt;organizationalUnit&lt;/span&gt;']),&lt;br /&gt;LDAP.mod(LDAP::LDAP_MOD_ADD,'&lt;span style="font-weight: bold;"&gt;ou&lt;/span&gt;',['australia&lt;/code&gt;&lt;code&gt;']),&lt;br /&gt;]&lt;br /&gt;&lt;br /&gt;connection.&lt;span style="font-weight: bold;"&gt;add&lt;/span&gt;("ou=branches, dc=&lt;/code&gt;&lt;code&gt;mycompany&lt;/code&gt;&lt;code&gt;, dc=com", record)&lt;br /&gt;&lt;br /&gt;connection.unbind&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding a User&lt;/span&gt;&lt;br /&gt;To add a user to an organizational unit:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require 'ldap'&lt;br /&gt;&lt;br /&gt;connection = LDAP::Conn.new('localhost', 1389)&lt;br /&gt;connection.bind('cn=Directory Manager','password')&lt;br /&gt;&lt;br /&gt;record = [&lt;br /&gt;LDAP.mod(LDAP::LDAP_MOD_ADD,'objectclass',['&lt;span style="font-weight: bold;"&gt;person&lt;/span&gt;']),&lt;br /&gt;LDAP.mod(LDAP::LDAP_MOD_ADD,'&lt;span style="font-weight: bold;"&gt;cn&lt;/span&gt;',['Damana Madden']),&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  LDAP.mod(LDAP::LDAP_MOD_ADD,'cn',['dmadden']),&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  LDAP.mod(LDAP::LDAP_MOD_ADD,'&lt;span style="font-weight: bold;"&gt;sn&lt;/span&gt;',['Damana Madden']),&lt;/code&gt;&lt;br /&gt;&lt;code&gt;]&lt;br /&gt;&lt;br /&gt;connection.&lt;span style="font-weight: bold;"&gt;add&lt;/span&gt;("cn=Damana Madden ou=australia, dc=mycompany, dc=com", record)&lt;br /&gt;&lt;br /&gt;connection.unbind&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Deleting a User&lt;/span&gt;&lt;br /&gt;To delete a user:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#/usr/bin/ruby -w&lt;br /&gt;&lt;br /&gt;require 'ldap'&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;connection&lt;/code&gt;&lt;code&gt; = LDAP::Conn.new('localhost', 1389)&lt;br /&gt;&lt;/code&gt;&lt;code&gt;connection&lt;/code&gt;&lt;code&gt;.bind('cn=Directory Manager','password')&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;connection&lt;/code&gt;&lt;code&gt;.&lt;span style="font-weight: bold;"&gt;delete&lt;/span&gt;("cn=Damana Madden ou=australia, dc=mycompany, dc=com")&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;connection&lt;/code&gt;&lt;code&gt;.unbind&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-9006114943466837477?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/9006114943466837477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=9006114943466837477' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9006114943466837477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9006114943466837477'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/10/ruby-ldap.html' title='Ruby-LDAP'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5633934755311531755</id><published>2008-09-01T11:23:00.004+10:00</published><updated>2008-09-01T23:41:52.002+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Is there no hope for stoopid programmers?</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_A7vd1oW85hU/SLdzzuJSL8I/AAAAAAAACU0/Vs-fwc-UrNA/s1600-h/mistakes.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_A7vd1oW85hU/SLdzzuJSL8I/AAAAAAAACU0/Vs-fwc-UrNA/s400/mistakes.jpg" alt="" id="BLOGGER_PHOTO_ID_5239784023866355650" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://despair.com/"&gt;despair.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Recently, we (on the Interblag) have gone through another wave of &lt;a href="http://blog.jayfields.com/2008/08/elephant-in-server-room.html"&gt;controversial discussions&lt;/a&gt; about people who shouldn't be writing code and should consider choosing a different career that is not in Technology. There has been heated debate and a lot of elitism expressed but what we have not talked about is if there is some other way for these developers to be used. I would like to consider and work my way through this idea.&lt;br /&gt;&lt;br /&gt;There are many different levels of developers. My usual way of dividing up developers is in to two groups: &lt;span style="font-weight: bold;"&gt;Software Engineers&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;People Who Waste Air&lt;/span&gt;. This is the result of years of running in to and over people who don't belong in my profession.&lt;br /&gt;&lt;br /&gt;On my long commute to and from my current engagement (in south-Brisbane/Chatswood), I've had the time to wonder...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Why don't some programmers belong in IT?&lt;/li&gt;&lt;li&gt;How do we encourage them go somewhere else?&lt;/li&gt;&lt;li&gt;and if we can't then what can be done to make them useful and less destructive?&lt;/li&gt;&lt;/ul&gt;Let me work through this in a slightly more succinct way than I have on the train and without the interruption of smelly passengers who like to rub up against my leg. That's another blog post for another time or just follow &lt;a href="http://twitter.com/damana"&gt;me on twitter&lt;/a&gt; for my daily #TrainTalk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Why don't some programmers belong in IT?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is not a new list of reasons. Most discussion seems to settle on the idea that there are people who are always learning and adopting new ideas. They do this in order to hone their craft and improve the journey - the journey from idea to software for the builders and the clients. These people are probably you. Yes, you reading this blog. You are a small minority of people who are constantly learning and thinking.&lt;br /&gt;&lt;br /&gt;There are also people who don't learn or they once did and that was enough. That usually means that they don't know what's going on now. I've heard people say... &lt;blockquote&gt;nothing has changed since the 70s in computing&lt;/blockquote&gt;...and I really want to slap them with the Internet.&lt;br /&gt;&lt;br /&gt;Then there are those people who have brains but they've blue screened or they just don't think the way you need to think to do this job. If the idea of expressing something in code is difficult every time then that's not good. One highly paid contractor I worked with in 2005 said &lt;blockquote&gt;programming is a matter of trial and error. You write it and then you try to get it working over and over again until it all of a sudden does.&lt;/blockquote&gt; That's not how it works if you have a clue at all about what you are doing. If this is how the job looks to you then look for another job.&lt;br /&gt;&lt;br /&gt;The other prevalent characteristic that rears it's ugly head and hisses at us, is the unwillingness to alter the way things are done. Change is difficult for everyone. I struggle with it in many ways, every day. Change is not worth it just for the sake of change and that's not how I like to do it. I like the idea of learning from what I've done before. Retrospection and learning are reasons for change. Many programmers I've worked with who probably should not have been there were not open to adjusting their ways in any form at all. It was the way they were comfortable and any motion made them very insecure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How do we encourage them go somewhere else?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The solution I usually see to getting rid of people who are making a mess of their career in IT or making a mess of your project, is to have the team push them out. First assumption here is that the rest of the team is able to judge that a person is not worthy. The &lt;a href="http://en.wikipedia.org/wiki/Dunning-Kruger_effect"&gt;Dunning Kruger effect&lt;/a&gt; describes when people who don't know much think they know a lot, while those who know a lot realise how little they actually know. What if your team really believes in themselves but don't have the ability to judge up? What if they don't know enough to know if an engineer is good?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://indexed.blogspot.com/2008/08/humbling.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_A7vd1oW85hU/SLvCyxyuaFI/AAAAAAAACU8/3RLijNnzaOk/s400/humbling" alt="" id="BLOGGER_PHOTO_ID_5240996768991045714" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;indexed.blogspot.com shows the Dunning-Kruger effect visually&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Sadly, I have seen that a lot. Teams of people who have decided that they are brilliant and have nothing more to learn. Anyone who disagrees with their team is collectively declared an idiot. Wrongly usually but the mob prevails. They have little chance of realising this about themselves so self-culling won't occur. Other teams and organisations do it quite well. I guess you need to find smart people first or bring in smart people who can make this judgement.&lt;br /&gt;&lt;br /&gt;There is one other way to deal with this and it is to have as good a firing policy as your hiring policy. I've worked in a situation like that. The people manager was one of the coolest chicks you've ever met but one of the scariest if you happened to suck at your job. In her previous company, she was known to come up to the desk of people judged lacking with a moving trolley so they could be marched off the premises wheeling their belongings. It got to the point that people would run and hide if they saw her pushing a trolley. The thing was that she did something about people who were not meant to be there. She didn't let them cluster or build up political power. If you were wrongly hired, your were rightly fired. Trolleyed out!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;If we can't get rid of them then what can be done to make them useful and less destructive?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is where the arguments start. If you've had to spend the time undoing and fixing what these people produce then you just don't want them there. That is fair. If you have had to work with people who you have to constantly direct and correct then that consumes time and good resources. You could write the code in the time it takes to hammer it in to their heads. That frustration is understandable.&lt;br /&gt;&lt;br /&gt;While writing this post I asked if these people are the same as junior developers who need to be mentored and taught and there was a resounding "NO WAY!" in response. Juniors with potential are more productive and encouraging than the useless types.&lt;br /&gt;&lt;br /&gt;People suggested that it's best to keep them out of the way all together. Give them the jobs that no good developer wants. I'm not sure what those jobs are. Won't they just screw them up too?&lt;br /&gt;&lt;br /&gt;At a start-up I worked at recently, the most unproductive and partially comatose person in the business was allowed to do the repetitive Flash work. He was a flunky for the graphic designer. Someone to write the script the designer wasn't interested in but had to be done. He was happy doing that and it kept him out of harms way, mostly.&lt;br /&gt;&lt;br /&gt;The conclusion seems to be that these non-developers should be kept out of the way or removed completely. Is this valid? Is this how we all see it? Maybe there is no conclusion. I still need to ask...&lt;br /&gt;&lt;br /&gt;Is there no hope for stoopid programmers?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5633934755311531755?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5633934755311531755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5633934755311531755' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5633934755311531755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5633934755311531755'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/08/is-there-no-hope-for-stoopid.html' title='Is there no hope for stoopid programmers?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_A7vd1oW85hU/SLdzzuJSL8I/AAAAAAAACU0/Vs-fwc-UrNA/s72-c/mistakes.jpg' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1705332923494138808</id><published>2008-08-28T16:36:00.002+10:00</published><updated>2008-08-28T16:37:45.772+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><title type='text'>GeekGirlBlogs Podcast about Girl Geek Dinners Sydney</title><content type='html'>Check out the podcast with me about &lt;a href="http://girlgeekdinnerssydney.blogspot.com/2008/08/geekgirlblogs-podcast-about-girl-geek.html"&gt;How to set up a GGD&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1705332923494138808?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1705332923494138808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1705332923494138808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1705332923494138808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1705332923494138808'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/08/geekgirlblogs-podcast-about-girl-geek.html' title='GeekGirlBlogs Podcast about Girl Geek Dinners Sydney'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-36246407867228439</id><published>2008-08-24T15:02:00.002+10:00</published><updated>2008-08-24T15:08:21.662+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Scrabulous completely gone from Facebook</title><content type='html'>It's official, I hate Hasbro.&lt;br /&gt;&lt;br /&gt;Yesterday, &lt;a href="http://www.scrabulous.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Scrabulous&lt;/span&gt;&lt;/a&gt; disappeared from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Facebook&lt;/span&gt; completely after &lt;a href="http://apcmag.com/facebook_scrabulous_sued_by_the_makers_of_scrabble.htm"&gt;Hasbro sued&lt;/a&gt; them. It's been suggested that I sign up to the Hasbro application on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;fb&lt;/span&gt; but I'd rather light fire to my newly painted toenails. It was a good &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;fb&lt;/span&gt; community and was well written and presented.&lt;br /&gt;&lt;br /&gt;This is a terrible shame. Big companies triumph again. Why can Hasbro do &lt;a href="http://www.news.com.au/perthnow/story/0,21598,24231026-948,00.html"&gt;this in Australia&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Apart from status updates and photos, that only reason I went to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;facebook&lt;/span&gt; was to play &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Scrabulous&lt;/span&gt;. Twitter and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;flickr&lt;/span&gt; can replace the others for me. Maybe this is the end of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;facebook&lt;/span&gt;, at least for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-36246407867228439?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/36246407867228439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=36246407867228439' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/36246407867228439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/36246407867228439'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/08/scrabulous-completely-gone-from.html' title='Scrabulous completely gone from Facebook'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5979259869332494243</id><published>2008-08-11T20:09:00.003+10:00</published><updated>2008-08-11T20:23:02.943+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>Spam A LOT</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_A7vd1oW85hU/SKAQgGk1PmI/AAAAAAAACT0/cyCZ9GRw7NY/s1600-h/spam.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_A7vd1oW85hU/SKAQgGk1PmI/AAAAAAAACT0/cyCZ9GRw7NY/s400/spam.jpg" alt="" id="BLOGGER_PHOTO_ID_5233200910711471714" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Photo by &lt;a href="http://www.flickr.com/photos/cursedthing/"&gt;cursedthing&lt;/a&gt; used under the flickr&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt; &lt;a href="http://www.flickr.com/photos/cursedthing/899415086/sizes/l/#cc_license"&gt;Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Today I unsubscribe from Australia's biggest ticketing agent after they sent out mine and tens of thousands of other people's email addresses in a broadcast email.&lt;br /&gt;&lt;br /&gt;I opened it thinking "cool, I might go see the Dandy Warhols" and was pretty unimpressed to see the body of the email with a listing of their subscribers. Apparently I am in the lucky 0.01% who had their email address shared with their entire mailing list and any spammers who get their hands on it.&lt;br /&gt;&lt;br /&gt;First thought, can I trust a company with my credit card details if I can not trust them with my email address? Second thought, where do I complain about this? Go &lt;a href="http://www.privacy.org.au/"&gt;here&lt;/a&gt; and do complain because in Australia you can't be defended if you don't put your hand up and complain.&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/2144813210603379421-5979259869332494243?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5979259869332494243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5979259869332494243' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5979259869332494243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5979259869332494243'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/08/spam-lot.html' title='Spam A LOT'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_A7vd1oW85hU/SKAQgGk1PmI/AAAAAAAACT0/cyCZ9GRw7NY/s72-c/spam.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4082770691133430272</id><published>2008-08-01T11:36:00.003+10:00</published><updated>2008-08-01T20:04:15.924+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='About Me'/><title type='text'>Degoogling My Life</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.flickr.com/photos/markknol/2568436053/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_A7vd1oW85hU/SJJ_kBj-GcI/AAAAAAAACTc/BKfbVjkC6zM/s400/Degooogle.jpg" alt="" id="BLOGGER_PHOTO_ID_5229382374201891266" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Photo by &lt;a href="http://www.flickr.com/photos/markknol/" title=""&gt;markknol&lt;/a&gt; used under the &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;flickr Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I've recently started using &lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt; for my blogs. Yes, I'm watching you watching me.&lt;br /&gt;&lt;br /&gt;A few interesting things have emerged from setting this up and from looking at the data it produces. The first is that Google applications are easy to register for, own and use. They make it &lt;span style="font-weight: bold;"&gt;easy to let them host your data&lt;/span&gt;. The second revelation is that a website can &lt;span style="font-weight: bold;"&gt;collect a surprising amount of information&lt;/span&gt; about you as you meander around the Interblag.&lt;br /&gt;&lt;br /&gt;Let's go backwards and look at second things first - collecting information about the people who land on your site. Here is a quick summary about what I know about you when you visit this blog:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;your browser and OS;&lt;/li&gt;&lt;li&gt;screen colours and resolutions;&lt;/li&gt;&lt;li&gt;flash and Java versions;&lt;/li&gt;&lt;li&gt;network location and host name;&lt;/li&gt;&lt;li&gt;connection speed;&lt;/li&gt;&lt;li&gt;the length and depth of your visit (the pages you read and time you spent);&lt;/li&gt;&lt;li&gt;language used;&lt;/li&gt;&lt;li&gt;referral sites (search engines, other sites or if you came directly to my blog);&lt;br /&gt;&lt;/li&gt;&lt;li&gt;and where in the world you are.&lt;/li&gt;&lt;/ul&gt;There are many valid reasons for wanting to know this useful information. It makes it easier for software engineers that build web applications to know about and cater for the different technologies in use out there. It helps us serve the majority when building a site by knowing what is most commonly used.&lt;br /&gt;&lt;br /&gt;This information is collected using a simple script call that looks something like this, which is generated for each of your sites:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;small&gt;&lt;br /&gt;&amp;lt;script&amp;gt; type="text/javascript" var=""&gt;gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");&lt;br /&gt;document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;script&amp;gt; type="text/javascript" var=""&gt;pageTracker = _gat._getTracker("xx-xxxxxxx-x");&lt;br /&gt;pageTracker._initData();&lt;br /&gt;pageTracker._trackPageview();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/small&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now back to the idea of making it easy to give your data to Google. I often roll my eyes at friends (geeks mostly) who avoid getting a Google account at all costs. They don't want a huge company to have so much information about them. Another good friend of mine believes that no matter why information is collected, it will be used for evil. Combine those too ideas and even with a company that &lt;span style="font-style: italic;"&gt;promises &lt;/span&gt;to do no evil, you may get a little nervous.&lt;br /&gt;&lt;br /&gt;Google knows a lot about me. I use their &lt;a href="http://gmail.com/"&gt;email&lt;/a&gt;; &lt;a href="http://docs.google.com/"&gt;docs&lt;/a&gt;; &lt;a href="http://google.com/reader"&gt;feed reader&lt;/a&gt;; &lt;a href="http://blogger.com/"&gt;blog hosting and editor&lt;/a&gt;; &lt;a href="http://www.google.com/picasa/"&gt;photo library&lt;/a&gt;; &lt;a href="http://www.google.com/analytics"&gt;web analytics tools&lt;/a&gt;; &lt;a href="http://www.google.com/webmasters/"&gt;webmaster tools&lt;/a&gt;; and their oxygen. OK, not the oxygen but they might own shares in it. They use this information to provide advertisers with targeted advertising. I imagine they have a setup like &lt;a href="http://en.wikipedia.org/wiki/Places_in_Harry_Potter#Gringotts_Wizarding_Bank"&gt;Gringots&lt;/a&gt;, with the servers that store the history of all our virtual wanderings. I like to believe it is protected and will not be used in a bad way.&lt;br /&gt;&lt;br /&gt;Of course, I'm not going to jump up right now and stop using google apps due to a passing over-thought paranoia. They are easy to use. Easy to start using. They use one id and one password. They let you do what you want to do without worrying about how. They are free.&lt;br /&gt;&lt;br /&gt;As for how easy it would be to degoogle my life, I'm not sure. What are the alternatives?&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Email: &lt;/span&gt;I could get mail through an ISP and bring it down to my laptop. It already comes to my crackberry;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Docs:&lt;/span&gt; Easy, Office on laptop. Everyone has that these days. How would people collaborate on the documents though? hmmm...&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Feed Reader: &lt;/span&gt;Use Firefox but that doesn't move with me. Maybe another web reader.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Blogging and Analytics: &lt;/span&gt;Easy, host a web server running &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt; or use a hosting site and track everything through &lt;a href="http://www.feedburner.com/fb/a/home"&gt;feedburner&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Photos: &lt;/span&gt;I already use &lt;a href="http://www.flickr.com/"&gt;flickr&lt;/a&gt; and &lt;a href="http://www.facebook.com/"&gt;facebook&lt;/a&gt; for that too.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Oxygen:&lt;/span&gt; It's free.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Will I be doing this any time soon? Probably not, it all seems like a lot of effort. Maybe one at a time. First I need a universal id. Let's see how it goes.&lt;/span&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/2144813210603379421-4082770691133430272?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4082770691133430272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4082770691133430272' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4082770691133430272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4082770691133430272'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/01/degoogling-my-life.html' title='Degoogling My Life'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_A7vd1oW85hU/SJJ_kBj-GcI/AAAAAAAACTc/BKfbVjkC6zM/s72-c/Degooogle.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-415611980938418055</id><published>2008-07-20T21:27:00.003+10:00</published><updated>2008-07-20T22:51:44.484+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>The Extroverted Minority</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SIMz9jZhFQI/AAAAAAAACSs/iw9WsJfnp_U/s1600-h/MB+Women.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SIMz9jZhFQI/AAAAAAAACSs/iw9WsJfnp_U/s400/MB+Women.jpg" alt="" id="BLOGGER_PHOTO_ID_5225077125247210754" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-weight: normal; font-size: 78%;"&gt;Photo by &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://www.flickr.com/photos/pforret/" title=""&gt;PeterForret&lt;/a&gt; used&lt;/span&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-weight: normal; font-size: 78%;"&gt; under the &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;flickr Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I am a member of many minorities and rather than complain about disadvantage, I find it is better to understand how other people think. That way I can explain why things are the way they are and like a good geek &lt;span style="font-style: italic;"&gt;understanding is the bomb&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Since a friend introduced me to the oracle that is &lt;a href="http://www.humanmetrics.com/cgi-win/JTypes2.asp"&gt;Myers Briggs&lt;/a&gt;, I have been entranced by the idea that people have a preference for how they think, are energised and how they prefer to behave. Let's not be ridiculous, it's a little more accurate than astrology but does not define you or me. Understanding the basis of behaviour is always revealing.&lt;br /&gt;&lt;br /&gt;Over the years, I have spent a lot of time being the lonely extrovert in the sea of IT introverts. I won't complain because introverts are my favourite people. I do realise though that they often see me as the excited puppy or the open book.&lt;br /&gt;&lt;br /&gt;In a fascinating conversation today with a group containing an even number of introverts (Is) and extroverts (Es), I discovered the kind of thresholds that people can handle before they feel uncomfortable in a group. According to Jung, extroverts get their energy from people while introverts are energised from within. To me, that makes introverts like superheroes and extroverts... well not. Being in a group and interacting with people makes me feel charged. Sometimes I have to stop hanging out with people or I feel I'll explode.&lt;br /&gt;&lt;br /&gt;So back to the thresholds... the Is in the group and some of the Es found that they were comfortable with groups containing 1-6 people. Once they had interacted with these gatherings for a few hours, the Is had to have time on their own to recharge.&lt;br /&gt;&lt;br /&gt;As a good puppy, I thought long and hard about my threshold because I wanted to contribute to the conversation. As a good extrovert, I waited for the person speaking to stop and spoke up with my number. This is the number at which I get uncomfortable dealing with that many people at once. When I said "My tipping point is around 50", there was great laughter and smiles. That was the honest truth though but it may be higher in larger rooms.&lt;br /&gt;&lt;br /&gt;Even while I'm surrounded by introverts, I still don't quite get how they work and think and recharge but I do love the variety of people in the world. It's probably best we keep on trying to understand each other and just accept everyone for the beautiful unique snowflakes they are :)&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Your &lt;a href="http://en.wikipedia.org/wiki/ENTJ"&gt;ENTJ&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-415611980938418055?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/415611980938418055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=415611980938418055' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/415611980938418055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/415611980938418055'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/07/extroverted-minority.html' title='The Extroverted Minority'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_A7vd1oW85hU/SIMz9jZhFQI/AAAAAAAACSs/iw9WsJfnp_U/s72-c/MB+Women.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8389990451067703601</id><published>2008-07-01T20:13:00.003+10:00</published><updated>2008-07-01T21:07:08.779+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Stop. Collaborate and Listen</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_A7vd1oW85hU/SGoPBoxpuCI/AAAAAAAACSU/6uhIhT7z6S8/s1600-h/Vanilla+Ice.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_A7vd1oW85hU/SGoPBoxpuCI/AAAAAAAACSU/6uhIhT7z6S8/s400/Vanilla+Ice.jpg" alt="" id="BLOGGER_PHOTO_ID_5217999639062100002" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;&lt;span style="font-weight: normal; font-size: 78%;"&gt;Photo by &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://www.flickr.com/photos/66179962@N00/812262577/"&gt;Tio&lt;/a&gt; &lt;/span&gt;used under the &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;flickr Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;As a crippling head cold ends and I roll off my couch and on to a new project in the far north of Sydney, I've taken my sick days to think through what happens when I start a new gig. Doing this at ThoughtWorks is no different to the decade I spent contracting. It's all about walking in to a new space with new faces and working out how to make a difference.&lt;br /&gt;&lt;br /&gt;Although I may be the first person to realise, it is now clear that &lt;a href="http://en.wikipedia.org/wiki/Vanilla_ice"&gt;Vanilla Ice&lt;/a&gt; was talking about consulting when he sang the wise words...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Stop. Collaborate and Listen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is no better set of rules to follow when you are entering unknown territory, whether they take you with open arms or have been told to have you there. Let's break it down...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stop.&lt;/span&gt;&lt;br /&gt;No matter how brilliant you are or how much you know you can contribute to a client, don't open with that line. Stop yourself from walking in to the room and telling everyone they are wrong and that you know a better way. The fact is that until you have a good understanding of what is going on, you have no idea how to improve it. Some people are able to understand this better and get going pretty fast. You will still notice that they hold back, even for a split second.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Collaborate&lt;/span&gt;&lt;br /&gt;If your situation is like mine and you spend your entire working life on teams then collaboration should show it's face in your working ethos. Work together with people to change the landscape, achieve the goals or to teach and learn. You have a common goal. Work together with others to get there. If you pull in a different direction to those around you then you'll hold everything up or go nowhere. Of course, none of this means that you should not say what you think is right or suggest ideas but do it with the common goal in mind.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;and Listen.&lt;/span&gt;&lt;br /&gt;Listening to people and reacting to them as you work with them is the key to gaining trust and influencing any situation. Listening does not mean saying nothing until they stop talking and then talking about what you want to say. Listening means hearing what people say, even if you don't agree with it. In order to change minds, you must first understand what you are trying to change.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;None of this means that you shouldn't try to make changes. If you know a better way to do something then it is your professional responsibility to make that heard, even if no one listens. The thing is that no one will listen to you if you walk straight in the door and start telling everyone how stupid they are. I've witnessed brilliant people go down in flames because they couldn't build trust. They insisted on being given control. Influence and trust are gained through building relationships. Think about the people you listen to. They will all be people you know and trust. They will rarely be the stranger who just walked in the door.&lt;br /&gt;&lt;br /&gt;Be sincere, if you are really there to help and not just score genius-points then people will see that. You lose nothing by taking the time and effort to show them that you are a good person who they can rely on.&lt;br /&gt;&lt;br /&gt;If Vanilla Ice doesn't work for you then maybe you could continue listening to &lt;a href="http://www.azlyrics.com/lyrics/eminem/lowdowndirty.html"&gt;Eminem's Low, Down, Dirty&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8389990451067703601?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8389990451067703601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8389990451067703601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8389990451067703601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8389990451067703601'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/07/stop-collaborate-and-listen.html' title='Stop. Collaborate and Listen'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_A7vd1oW85hU/SGoPBoxpuCI/AAAAAAAACSU/6uhIhT7z6S8/s72-c/Vanilla+Ice.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3987286880478593474</id><published>2008-06-20T17:01:00.003+10:00</published><updated>2008-06-20T17:05:07.398+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Physics is to Maths...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_A7vd1oW85hU/SFtWSRkrxrI/AAAAAAAACLc/uK7agVmEGHY/s1600-h/Purity.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_A7vd1oW85hU/SFtWSRkrxrI/AAAAAAAACLc/uK7agVmEGHY/s400/Purity.jpg" alt="" id="BLOGGER_PHOTO_ID_5213855865566381746" border="0" /&gt;&lt;/a&gt;&lt;a href="http://xkcd.com/435/"&gt;xkcd&lt;/a&gt; from last week. As a mathematician, I agree with everything but &lt;a href="http://xkcd.com/435/"&gt;the on hover comment&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3987286880478593474?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3987286880478593474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3987286880478593474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3987286880478593474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3987286880478593474'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/06/physics-is-to-maths.html' title='Physics is to Maths...'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_A7vd1oW85hU/SFtWSRkrxrI/AAAAAAAACLc/uK7agVmEGHY/s72-c/Purity.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1100786740191840331</id><published>2008-06-20T16:14:00.006+10:00</published><updated>2008-06-20T16:42:28.495+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='How To'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Live Outside Your Comfort Zone</title><content type='html'>&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SFtLM5nQ31I/AAAAAAAACLU/DDopDvlU7Ns/s1600-h/comfort+zone.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SFtLM5nQ31I/AAAAAAAACLU/DDopDvlU7Ns/s400/comfort+zone.jpg" alt="" id="BLOGGER_PHOTO_ID_5213843678607499090" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: normal;font-size:78%;" &gt;Photo by &lt;a href="http://flickr.com/photos/doeth/489786214/"&gt;doeth&lt;/a&gt; used under the &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;flickr Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;p&gt;IT is a changing space. It moves faster than other industries. The tools you worked with five years ago are the ones we would all sigh at if we heard they were being used now. Languages are born, reborn, popular and then not. The shape of the space changes with architectures ending in OA and everything 2.0. Your head will spin if you try to do it all but our jobs do mean that we have to at least keep up and know what the latest technology is, even if only for those moments at the water cooler.&lt;/p&gt;&lt;p&gt;Of late, I've had the chance to meet a lot of smart people who are new to the industry and asking how to keep up with all the changes. Of course, us oldies mention reading blogs, tech books, books on thinking, joining user groups and all those practical things. A lot of people are doing that but they still look around and wonder why nothing is happening. I think it's because you can't wait for change. You have to stretch yourself and extend your comfort zone.&lt;/p&gt;&lt;p&gt;We all look on ourselves favourably and think we live on the edge. Each of us is convinced that we push ourselves to be better at things - things we already do and those we don't. That's probably mostly true. For me, it's not really enough.&lt;/p&gt;&lt;p&gt;It is easy to stagnate. Take a job that by definition appears hard to others and you at first and then stay in it too long. Too long is when you know what the upcoming day entails. When you are comfortable. When nothing in your day scares you and makes you doubt yourself that little bit. That is a bad spot to be in. That is when you need to move on or shake things up.&lt;/p&gt;&lt;p&gt;When I talk to someone who is bored with their job, my usual response is to tell them to start making it fun and if that's not possible then find something newer and harder. Yes, quit and go for a job that extends you. Every interview I have ever been to involves me interviewing them too. Sometimes the guys on the other side of the table don't pass. I don't hire them as my employers. They aren't smart enough or intellectually intimidating enough to excite me about the job. That's what you should do.&lt;/p&gt;&lt;p&gt;The more you move, the more likely you are the stupidist person in the room, the more unsure you are that you know everything there is to know then the more likely you are to learn and keep up. That's not always in another job. Maybe it's in another team at work. Maybe it's outside work in a user group for a language or tool you have never used before. Be a sponge and also take something to the group. Everyone can add something to a situation.&lt;/p&gt;&lt;p&gt;Soon enough, you'll be back in your comfort zone and you'll surprise yourself about what you know. At that point, shake it up and move again.&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/2144813210603379421-1100786740191840331?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1100786740191840331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1100786740191840331' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1100786740191840331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1100786740191840331'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/06/live-outside-your-comfort-zone.html' title='Live Outside Your Comfort Zone'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_A7vd1oW85hU/SFtLM5nQ31I/AAAAAAAACLU/DDopDvlU7Ns/s72-c/comfort+zone.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-9014148444135205717</id><published>2008-06-19T12:01:00.009+10:00</published><updated>2008-06-19T22:00:59.876+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>No Comment!</title><content type='html'>&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_A7vd1oW85hU/SFoY8e-GoKI/AAAAAAAACLM/haOK8TKX1ro/s1600-h/confidential.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_A7vd1oW85hU/SFoY8e-GoKI/AAAAAAAACLM/haOK8TKX1ro/s400/confidential.jpg" alt="" id="BLOGGER_PHOTO_ID_5213506946019532962" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: normal;font-size:78%;" &gt;Photo by &lt;a href="http://flickr.com/photos/naiadsspring/"&gt;decadentyou&lt;/a&gt; used under the &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;flickr Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;There is an etiquette to blogging. It encompasses writing, commenting and responding to posts. Credit should be given where credit is deserved. Images should note any license or conditions that allow them to be used. Quotes should only come from people who have approved their use or already been publicly stated.&lt;br /&gt;&lt;br /&gt;Yesterday, I lunched with some old colleagues from a past life before heading off to Google Developer Day Sydney. We often meet. We always talk. We all blog.&lt;br /&gt;&lt;br /&gt;This time was different. This time while we spoke, we had no idea that one of the participants was going to go to work the next day and post snippets of that conversation to his blog. The post included our names, the names of other people who weren't there, links to our blogs and absolutely no context.&lt;br /&gt;&lt;br /&gt;Although he took down the post once it was made clear to him that what had happened was inappropriate and an abuse of trust, it still leaves me a little worried. There was nothing malicious in what he did but it was pretty bad form.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;To make it clear: &lt;/span&gt;Do not quote someone or paraphrase them without their permission. If you do, don't expect me to trust you enough to say anything interesting ever again.&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/2144813210603379421-9014148444135205717?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/9014148444135205717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=9014148444135205717' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9014148444135205717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/9014148444135205717'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/06/no-comment.html' title='No Comment!'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_A7vd1oW85hU/SFoY8e-GoKI/AAAAAAAACLM/haOK8TKX1ro/s72-c/confidential.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7129181883184911654</id><published>2008-06-03T12:07:00.011+10:00</published><updated>2008-06-15T19:12:12.177+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><title type='text'>Come on Barbie, let's go party!</title><content type='html'>&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_A7vd1oW85hU/SESyzfIYByI/AAAAAAAACIE/vYHAMW86gRw/s1600-h/barbie.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_A7vd1oW85hU/SESyzfIYByI/AAAAAAAACIE/vYHAMW86gRw/s400/barbie.png" alt="" id="BLOGGER_PHOTO_ID_5207483666746836770" border="0" /&gt;&lt;/a&gt; &lt;span style="font-size:78%;"&gt;Photo by &lt;a href="http://flickr.com/photos/carolesther/" title="Link to Carol Esther's photostream"&gt;Carol Esther&lt;/a&gt; used under &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;a Creative Commons license&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/center&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;After rolling off a project that seemed a little longer than the 5 months I was there, I've had cause to look forward to what comes next. There are options. There are always options. Everyone has options.&lt;br /&gt;&lt;br /&gt;The interesting trend I've seen lately is that consultants with social skills are often pushed in to roles that express those talents. That's fine, except if you are an engineer. Software engineers with the ability to not frighten the clients are encouraged openly, explicitly, implicitly and suggestively to walk down the one-way street to the post-technical role.&lt;br /&gt;&lt;br /&gt;My feet are firmly planted on the ground and I'm not moving in that direction. To me that is not even a valid option and it shouldn't be for poly-skilled engineers. I have decided that there will be no such thing as post-technical for me because I enjoy &lt;span style="font-style: italic;"&gt;technical&lt;/span&gt; too much. However, I will be extending my skills in other areas that are not purely technical.&lt;br /&gt;&lt;br /&gt;At university we were told that software engineers covered all parts of software development, regardless of methodology. There are no strict roles. You must understand and participate in some way in all aspects of listening, enabling, communicating, coding, testing and building software. To me, the days of sitting in a dark room and "cutting code" on a green on black console never truly existed. Even experienced long term programmers will tell you they work across the project or product from go to whoa. There are no strictly defined vertical roles.&lt;br /&gt;&lt;br /&gt;From now on if anyone asks what my role is, I will tell them that I am a consultant with an engineering background. Break the mould and resist the classic definitions given to people in IT.&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/2144813210603379421-7129181883184911654?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7129181883184911654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7129181883184911654' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7129181883184911654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7129181883184911654'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/06/come-on-barbie-lets-go-party.html' title='Come on Barbie, let&apos;s go party!'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_A7vd1oW85hU/SESyzfIYByI/AAAAAAAACIE/vYHAMW86gRw/s72-c/barbie.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1631405202812067056</id><published>2008-05-26T10:10:00.017+10:00</published><updated>2008-05-26T15:18:06.617+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Coding'/><title type='text'>Are we there yet?</title><content type='html'>&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_A7vd1oW85hU/SDoAOUxoDlI/AAAAAAAACHU/3zEtE67sYbM/s1600-h/Old+Clock.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_A7vd1oW85hU/SDoAOUxoDlI/AAAAAAAACHU/3zEtE67sYbM/s400/Old+Clock.jpg" alt="" id="BLOGGER_PHOTO_ID_5204472565475053138" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(153, 153, 153);font-size:78%;" &gt;Photo by &lt;a href="http://flickr.com/photos/tonivc/"&gt;tonivc&lt;/a&gt; used under &lt;a href="http://flickr.com/photos/tonivc/2283676770/sizes/l/#cc_license"&gt;a Creative Commons license&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Reaching the end of a project is always a very satisfying feeling for me. A few years ago, I got over that feeling of panic and dread that came from the belief that if a bug went in to production then the world would end; people would sue us; and puppies would die. That is quite ridiculous since there are ways to ensure those &lt;span style="font-style: italic;"&gt;risks&lt;/span&gt; &lt;span style="font-size:78%;"&gt;(I so dislike that word)&lt;/span&gt; are minimised.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Don't expect me to go in to why agile software development will save your life. There are many ways to assure yourself that the world won't implode because of you and they go from development methodologies to putting things in to perspective. Since many others will preach agile, I'll try give you perspective.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At university, I was lucky enough to have a programming lecturer who had worked in the &lt;span style="font-style: italic;"&gt;real world&lt;/span&gt; and hadn't just read books&lt;span style="font-size:78%;"&gt; (although I had plenty of the book types).&lt;/span&gt; His experience included working on implantable defibrillators. Imagine the machines they use in medical emergency shows, that are used to zap someone's heart when it stops beating. Everyone yells &lt;span style="font-weight: bold;"&gt;"stand back!" &lt;/span&gt;and then a huge charge is sent through two paddles in to the patients chest and hopefully the heart monitor starts blipping again. Now imagine they implant a tiny version of that so that if a heart patient's heart goes too fast or too slowly, they are zapped and encouraged to beat at a normal pace. Well, my lecturer was one of the embedded systems programmers who wrote the code that told the implanted device when to go boom.&lt;br /&gt;&lt;br /&gt;Now, this would not be a useful story if there had not been a bug in their code. The thing is, their bug meant that they had to recall the device to replace the defective code. Think it through, recalling the device meant putting patients under the knife in order to remove and replace the defibrillator. Heart patients having unnecessary surgery is never a good thing but that's what had to be done to deploy the fix.&lt;br /&gt;&lt;br /&gt;In our nice little worlds where a bug may cause a user to not be able to log in or to call up a helpdesk to get the account opened or not be able to update their &lt;a href="http://www.gcc2008.com/"&gt;GCC&lt;/a&gt; step count, it's probable that no one will die. &lt;span style="font-style: italic;"&gt;If you do work in the other world where they could die then please ignore me. You are the minority.&lt;/span&gt; The rest of us can relax a little and breathe. Take your time to enjoy that you started and finished a project. Bathe in the glow of delivering software that will be used. After all, letting your heart rate rise too much might lead to the need for me to necessarily zap you.&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/2144813210603379421-1631405202812067056?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1631405202812067056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1631405202812067056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1631405202812067056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1631405202812067056'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/are-we-there-yet.html' title='Are we there yet?'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_A7vd1oW85hU/SDoAOUxoDlI/AAAAAAAACHU/3zEtE67sYbM/s72-c/Old+Clock.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-4219915097453772540</id><published>2008-05-21T15:51:00.005+10:00</published><updated>2008-05-26T15:55:12.223+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pointless'/><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>My Current Favourite Time Waster</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_A7vd1oW85hU/SDO4yMPejmI/AAAAAAAACG0/rMxELU3VGJQ/s1600-h/dipity.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_A7vd1oW85hU/SDO4yMPejmI/AAAAAAAACG0/rMxELU3VGJQ/s400/dipity.jpg" alt="" id="BLOGGER_PHOTO_ID_5202705166962167394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Today I discovered &lt;a href="http://www.dipity.com/user/damana/timeline/Damana_M"&gt;dipity.com&lt;/a&gt; and found that I've only been contributing to the Interblag as  &lt;span style="font-weight: bold;"&gt;Damana 2.0&lt;/span&gt; since early last year. It sure feels like forever. I wonder if writing web apps counts... prob not.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dipity.com/user/damana/timeline/Damana_M"&gt;dipity&lt;/a&gt; lets you graphically display all your different feeds in a meaningful timeline. My current obsession is to understand why people need to see things as a picture to fully absorb them. Many conversations with varied types of people since Tuesday have pulled me from side to side. Do conceptualists need pictures? If you need visualisation tools, should you be in IT? Is there value in the 10,000ft view? It is not yet answered in my mind but the blog post is being born. Stay tuned.&lt;br /&gt;&lt;br /&gt;Until then, check out &lt;a href="http://www.dipity.com/user/damana/timeline/Damana_M"&gt;what I've been doing&lt;/a&gt; since March 2007.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-4219915097453772540?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/4219915097453772540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=4219915097453772540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4219915097453772540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/4219915097453772540'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/my-current-favourite-time-waster.html' title='My Current Favourite Time Waster'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_A7vd1oW85hU/SDO4yMPejmI/AAAAAAAACG0/rMxELU3VGJQ/s72-c/dipity.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3612737429814180883</id><published>2008-05-18T21:46:00.006+10:00</published><updated>2008-05-26T15:19:00.986+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>The 'No Chick Lit' Rule</title><content type='html'>&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SDAfEMPejbI/AAAAAAAACFA/1Pys8ul8yDI/s1600-h/HighHeal.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SDAfEMPejbI/AAAAAAAACFA/1Pys8ul8yDI/s320/HighHeal.jpg" alt="" id="BLOGGER_PHOTO_ID_5201691726479003058" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;picture from &lt;a href="http://www.alternative-footwear.co.uk/shoes/shoes.html"&gt;alternative-footwear.co.uk&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Over the last 12 months, I have ranted and &lt;a href="http://geekdamana.blogspot.com/search/label/Geek%20Girl"&gt;blogged about women in IT&lt;/a&gt; across multiple blogs and to anyone who is interested or polite enough not to walk away. This post continues that theme so stop here if you were hoping for something lighter.&lt;br /&gt;&lt;br /&gt;I'm a geek girl in almost every way but am still pretty unique, while being like everyone else. My latest geekdom to be revived is my love for discussing what I read. After leaving Canberra, finding a book group wasn't as easy as I'd hoped so that meant starting one was the only option. It has started and is going well. We are on our first book and headed at some cool titles I would not have picked off the shelf on my own but am looking forward to reading.&lt;br /&gt;&lt;br /&gt;When it rains, it pours. After signing up for &lt;a href="http://www.goodreads.com/"&gt;goodreads.com&lt;/a&gt; at the recommendation of a couple of friends, I discovered others I knew shared the same hobby for reading and talking. A wise friend of mine says that "&lt;span style="font-style: italic;"&gt;you can tell a lot about someone from their bookshelf&lt;/span&gt;" and that is true. I'm willing to push that as far as you can tell a lot about a person if they read at all.&lt;br /&gt;&lt;br /&gt;With a lovely invitation to join &lt;span style="font-weight: bold;"&gt;another&lt;/span&gt; book group came the tale that they want people who join to share a book with others in the group that they might not read normally... BUT there is a &lt;span style="font-weight: bold; font-style: italic;"&gt;'no chick lit'&lt;/span&gt; rule. The person doing the inviting is a geek girl. Now what I am about to say does not apply to her directly but what she said triggered off a torrent of emotion and thought that had to be ranted at someone&lt;span style="font-size:78%;"&gt; (so you will do)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why is it that geek girls say and do things that make other women feel insecure about being geeky and girly at the same time?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just like it is ok to &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; be a pink-feather-boa-wearing girl in thigh-high boots reading chick lit, it's ok to be that too. I like to think that I'm pretty secure in who I am &lt;span style="font-style: italic;"&gt;most days&lt;/span&gt; but it sure does suck when I feel the need to butch it up so as not to lose some geek cred. Imagine how it makes young girls feel about a career in IT. Every time I hear this it makes me want to be who I want to be and ignore the no-blah rules. What if you are more socially driven? Is this what makes 'geek' a bad word? All this talk of rejecting mainstream views because geek and popular are mutually exclusive?&lt;br /&gt;&lt;br /&gt;Embrace your inner pink feather boa wearing self and read your chick lit while eating Swiss chocolate on a couch with a sequined cushion or don't but I'd like to let you know that whichever path you choose to walk is ok. You are a cool geek girl, just like Jane Austen.&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/2144813210603379421-3612737429814180883?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3612737429814180883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3612737429814180883' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3612737429814180883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3612737429814180883'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/no-chick-lit-rule.html' title='The &apos;No Chick Lit&apos; Rule'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_A7vd1oW85hU/SDAfEMPejbI/AAAAAAAACFA/1Pys8ul8yDI/s72-c/HighHeal.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-8509908874833575985</id><published>2008-05-18T17:06:00.002+10:00</published><updated>2008-05-18T17:08:26.208+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ponder'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><title type='text'>Maybe we are wrong about Lotus Notes</title><content type='html'>Maybe Notes is IBM's way of making people talk to eachother because the pain of having to send an email is too great. It is IBM bringing people together.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-8509908874833575985?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/8509908874833575985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=8509908874833575985' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8509908874833575985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/8509908874833575985'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/maybe-we-are-wrong-about-lotus-notes.html' title='Maybe we are wrong about Lotus Notes'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-614644521287908068</id><published>2008-05-17T17:33:00.011+10:00</published><updated>2008-05-17T17:52:17.298+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Ruby on Rails presents WeddingPresents</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://yourweddingpresents.com/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SC6NOsPejaI/AAAAAAAACE4/-ZbMl3cpVtQ/s400/WeddingPresentsBanner.jpg" alt="" id="BLOGGER_PHOTO_ID_5201249903193263522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My friend &lt;a href="http://jamescrisp.org/"&gt;James&lt;/a&gt;, has created &lt;a href="http://yourweddingpresents.com/"&gt;a unique wedding registry site&lt;/a&gt; written in Ruby on Rails. It took him no time at all and leaves us with a cool site that allows the couple to pick whatever presents they want without signing up to a department store.&lt;br /&gt;&lt;br /&gt;Having recently used it for &lt;a href="http://jamescrisp.org/"&gt;James&lt;/a&gt;' wedding last week, I can say that it's simple to use and effective. Also a great help for those of us who shop a little late :o)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:180%;"&gt;"&lt;/span&gt;  Why &lt;a href="http://yourweddingpresents.com/"&gt;YourWeddingPresents.com&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Unlike other wedding registries, &lt;a href="http://yourweddingpresents.com/"&gt;Your Wedding Presents&lt;/a&gt; is not owned by any store, and does not limit your gifts in any way. Your Wedding Presents:&lt;br /&gt;* is completely free. No strings attached.&lt;br /&gt;* lets you choose gifts from any store or even just say the type of present you want (eg, cutlery set for six).&lt;br /&gt;* lets you ask for contribution presents, where several guests can pool their money to get a larger gift.&lt;br /&gt;* shows you which presents have been chosen and, if guests enter their name, who has chosen what.&lt;br /&gt;* lets you write a welcome message to show guests when they go to your registry.&lt;br /&gt;* is easy to use. There are no big forms to fill in.&lt;span style=";font-family:georgia;font-size:180%;"  &gt;  "&lt;/span&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/2144813210603379421-614644521287908068?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/614644521287908068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=614644521287908068' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/614644521287908068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/614644521287908068'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/ruby-on-rails-presents-weddingpresents.html' title='Ruby on Rails presents WeddingPresents'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_A7vd1oW85hU/SC6NOsPejaI/AAAAAAAACE4/-ZbMl3cpVtQ/s72-c/WeddingPresentsBanner.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-6982130482293628831</id><published>2008-05-11T12:05:00.006+10:00</published><updated>2008-05-11T12:56:53.836+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Sir Robin and the Bubbles</title><content type='html'>I often tease my friends at Google about the preschool environment they work in - bright colours; soft furnishings and mobiles hanging from the ceiling. After stepping back and trying to argue that &lt;a href="http://www.worldrps.com/"&gt;RPS&lt;/a&gt; is a valid way to settle a small &lt;a href="http://www.urbandictionary.com/define.php?term=bikeshedding"&gt;bike-shedding&lt;/a&gt; disagreement, I realised that my time at TW has been more of a game than a job. That's a good thing. Work is fun but it's probably not the definition of "&lt;span style="font-style: italic;"&gt;grown up&lt;/span&gt;" - which is just so over-rated anyway.&lt;br /&gt;&lt;br /&gt;Our team is known as Team Bubbles for classified reasons. Of course, we've gone wild with that idea. There are bubble machines, individual bubble packs (manual) that are great on breaks.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hZzT0NiiwRU&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/hZzT0NiiwRU&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;This is one of the bubble machines that greets people as they enter&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Then there are the non-bubble things like Sir Robin, our check-in chick-en. He's our check-in token and as we try to maintain a green build (especially) through UAT, he makes sure we only commit while we are in his company. We are currently trying to get him on to our RM list as a Release Manager but our Resource Manager guy is resisting... so far. Sir Robin has connections though so we might get him signed up as an official TWer.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_A7vd1oW85hU/SCZa2_SnKKI/AAAAAAAACEY/GXSq1JxdsK4/s1600-h/Sir+Robin+and+Roy.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_A7vd1oW85hU/SCZa2_SnKKI/AAAAAAAACEY/GXSq1JxdsK4/s400/Sir+Robin+and+Roy.JPG" alt="" id="BLOGGER_PHOTO_ID_5198942720594749602" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Sir Robin with the founder of TW at the Australian Team Hug&lt;br /&gt;(photo by Lachlan)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;The aircon in our building hardly ever works so we have a portable aircon unit and since there was a spare beach ball hanging around (as usual) we got the anti-gravity going.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:78%;"&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JOdtLLPK-GY&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/JOdtLLPK-GY&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;The magic falling floating ball&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Then there is the lolly drawer for sustenance, the hats to let everyone know when you aren't working on a story and the pweety flowers. It's fun. I hope we don't have to grow up any time soon.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SCZdRfSnKLI/AAAAAAAACEg/RpHak4k9naA/s1600-h/Lolly+Drawer.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SCZdRfSnKLI/AAAAAAAACEg/RpHak4k9naA/s320/Lolly+Drawer.jpg" alt="" id="BLOGGER_PHOTO_ID_5198945374884538546" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;The very unhealthy lolly drawer full of 10kg of lollies at a time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_A7vd1oW85hU/SCZdR_SnKMI/AAAAAAAACEo/heM42s0xPeE/s1600-h/SOAP+Images+098.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_A7vd1oW85hU/SCZdR_SnKMI/AAAAAAAACEo/heM42s0xPeE/s320/SOAP+Images+098.jpg" alt="" id="BLOGGER_PHOTO_ID_5198945383474473154" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;Sam + I not working on our stories&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SCZdSfSnKNI/AAAAAAAACEw/fLrm0eee65c/s1600-h/StickyFlower.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SCZdSfSnKNI/AAAAAAAACEw/fLrm0eee65c/s320/StickyFlower.jpg" alt="" id="BLOGGER_PHOTO_ID_5198945392064407762" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;A sticky note flower&lt;/span&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/2144813210603379421-6982130482293628831?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/6982130482293628831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=6982130482293628831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6982130482293628831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/6982130482293628831'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/sir-robin-and-bubbles.html' title='Sir Robin and the Bubbles'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_A7vd1oW85hU/SCZa2_SnKKI/AAAAAAAACEY/GXSq1JxdsK4/s72-c/Sir+Robin+and+Roy.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5737299537977929481</id><published>2008-05-05T16:26:00.001+10:00</published><updated>2008-05-05T16:27:33.907+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>Let's Hug</title><content type='html'>What happens on the Gold Coast, stays on the Gold Coast... well &lt;a href="http://damana.blogspot.com/2008/05/dont-blame-it-on-sunshine.html"&gt;mostly&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5737299537977929481?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5737299537977929481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5737299537977929481' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5737299537977929481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5737299537977929481'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/05/lets-hug.html' title='Let&apos;s Hug'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-1654222229646118803</id><published>2008-04-25T20:39:00.007+10:00</published><updated>2008-04-25T21:01:15.732+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Kill me now because all we need are "Flash Coders"</title><content type='html'>Continuing with my theme of &lt;a href="http://geekdamana.blogspot.com/2008/04/you-dont-own-me-im-not-that-kind-of.html"&gt;Crazy People Tell Me How Life Is&lt;/a&gt;, here is my recent encounter with a friend I met on the Inteblag a long time ago. We've never actually met but posted to the same newsgroups in the mid-90s. We recently met again when he sent me a reminder and facebook invite.&lt;br /&gt;&lt;br /&gt;Last night or this morning, I got up at some ungodly hour to see off a visitor who had spent a week with us in Sydney. My trusty &lt;span style="font-style: italic;"&gt;Crackberry&lt;/span&gt; was handy and I checked my email, sms and fb messages as usual. The one thing waiting for me was a message asking if I knew of any "Flash Coders" - meaning web monkeys who write action script. I'm willing to admit that they are usually far more artisitically enabled than I am but... and it's a large one, they usually aren't able to pass for &lt;span style="font-style: italic;"&gt;coders&lt;/span&gt; in any way, shape or form.&lt;br /&gt;&lt;br /&gt;I have worked for one start up where the flash guy was a shocking electrical engineer who found solace in being able to make flash movies. Maybe there is more to it but it was common place for devs to show him how to embed his stuff in HTML.&lt;br /&gt;&lt;br /&gt;So my &lt;span style="font-style: italic;"&gt;friend&lt;/span&gt; tells me that Flash devs are worth US$20 000 a week from a business man like him. The Interblag has become so simple that&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt; real programmers&lt;/span&gt; &lt;/span&gt;are no longer required. No one needs hard stuff written anymore. The games and promo tactics used to sell stuff only need &lt;span style="font-style: italic;"&gt;Flash Coders&lt;/span&gt; (FC).&lt;br /&gt;&lt;br /&gt;I sure hope that isn't true. Who writes the stuff whose shoulders FCs stand on? Is it business guys? Is it other FCs? I sure hope there is some need for us sloggers. Those of us who can at the most draw a bath if not draw a picture.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-1654222229646118803?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/1654222229646118803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=1654222229646118803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1654222229646118803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/1654222229646118803'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/04/kill-me-now-because-all-we-need-is.html' title='Kill me now because all we need are &quot;Flash Coders&quot;'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7520579334630109753</id><published>2008-04-23T18:46:00.005+10:00</published><updated>2008-04-23T18:53:06.036+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Social'/><title type='text'>facebook now has im</title><content type='html'>facebook now has real time chat, just in case you can't get enough of your friends. It doesn't work with normal IM clients though so there will be no adding it to Adium yet.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_A7vd1oW85hU/SA730j6iSUI/AAAAAAAACCY/-dXgexI_34E/s1600-h/fbchat2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_A7vd1oW85hU/SA730j6iSUI/AAAAAAAACCY/-dXgexI_34E/s400/fbchat2.jpg" alt="" id="BLOGGER_PHOTO_ID_5192359902770776386" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_A7vd1oW85hU/SA730T6iSTI/AAAAAAAACCQ/iCn0cUtXlaY/s1600-h/fbchat.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_A7vd1oW85hU/SA730T6iSTI/AAAAAAAACCQ/iCn0cUtXlaY/s400/fbchat.jpg" alt="" id="BLOGGER_PHOTO_ID_5192359898475809074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can also easily see who is online atm. I might spend most of my time hiding :o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7520579334630109753?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7520579334630109753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7520579334630109753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7520579334630109753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7520579334630109753'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/04/facebook-now-has-im.html' title='facebook now has im'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_A7vd1oW85hU/SA730j6iSUI/AAAAAAAACCY/-dXgexI_34E/s72-c/fbchat2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-5318814928555704797</id><published>2008-04-16T22:05:00.005+10:00</published><updated>2008-04-16T22:24:44.000+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Thoughtworks'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><title type='text'>You don't own me, I'm not that kind of girl anymore</title><content type='html'>After an interesting conversation last night with a colleague I respect and like usually, I was thoroughly disturbed to hear that there are people who believe that a company _owns_ it's employees.&lt;br /&gt;&lt;br /&gt;I'm not a company man or a company woman even. If they are handing around the drinks, I'll pass on the &lt;a href="http://en.wikipedia.org/wiki/Jonestown#Mass_murder-and-suicide"&gt;kool-aid&lt;/a&gt;. My work is good. What I do is fun, challenging and stretches my ideas about technology, people and myself each and every day.&lt;br /&gt;&lt;br /&gt;It's still my "day job"&lt;br /&gt;&lt;br /&gt;Although those are words we are not supposed to say, I will shout them to the heavens.&lt;br /&gt;&lt;br /&gt;I love my job. Sometimes I am shocked that people pay me to do this.  Would I retire tomorrow? Yes! Then after traveling the world and sleeping in a lot, I'd go back to work. People often do what they do to get paid. They do what they do to buy houses, feed families and fill their time. Not me, I like what I do.&lt;br /&gt;&lt;br /&gt;Right now I work for a company I like. In the past I've worked for ones I didn't. Either way, I have fun and enjoy it. Learning and learning each day. Extending myself.&lt;br /&gt;&lt;br /&gt;But do I belong to the company I work for? No! Never!&lt;br /&gt;&lt;br /&gt;If that means I'm doomed to walk the Earth for eternity writing code and building beautiful ideas, then that's ok.&lt;br /&gt;&lt;br /&gt;No matter how much my job makes me happy, my family and my life outside work are just as important and more. Obsessing about anything is not good. Moderation is good. Do everything well but know when to stop. Do your job well but remember to go and hang out with your friends. Put down the mouse and call someone to go out. Liking your life outside work does not mean you suck at work. It means you are good at living.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-5318814928555704797?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/5318814928555704797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=5318814928555704797' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5318814928555704797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/5318814928555704797'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/04/you-dont-own-me-im-not-that-kind-of.html' title='You don&apos;t own me, I&apos;m not that kind of girl anymore'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-3207163019479309530</id><published>2008-04-16T21:51:00.003+10:00</published><updated>2008-04-16T21:56:10.772+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Geek Girl'/><title type='text'>Women without a country</title><content type='html'>Megan, a geek girl from work posted &lt;a href="http://testutopia.com/?p=10"&gt;this story&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The idea of &lt;a href="http://testutopia.com/?p=10"&gt;this situation&lt;/a&gt; had never even occurred to me before. Love has nothing to do with laws. Change the laws to work under the rules of love!&lt;br /&gt;&lt;br /&gt;Hugs to you Megan. Keep fighting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-3207163019479309530?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/3207163019479309530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=3207163019479309530' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3207163019479309530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/3207163019479309530'/><link rel='alternate' type='text/html' href='http://geekdamana.blogspot.com/2008/04/women-without-country.html' title='Women without a country'/><author><name>Mana</name><uri>http://www.blogger.com/profile/00506368430609135921</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='21' src='http://4.bp.blogspot.com/_A7vd1oW85hU/SOIWXRkqUOI/AAAAAAAACZI/MEennG2LHu4/S220/Paz+and+I.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144813210603379421.post-7000024999272126641</id><published>2008-04-13T23:28:00.001+10:00</published><updated>2008-04-13T23:30:33.239+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Maths'/><title type='text'>The Accuracy of Numbers</title><content type='html'>These are old but still good facts about numbers..&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bookofratings.com/numbers.html"&gt;Pi&lt;/a&gt;&lt;/b&gt;&lt;a href="http://www.bookofratings.com/numbers.html"&gt;&lt;br /&gt;Pi, by and large, is very useful, but there is this ridiculous obsession with finding the nth digit of Pi, where n is stupid. A value of pi that's accurate to the 31st digit is good enough to measure the circumference of the entire universe within one proton, so anything beyond that is bordering on the -- please forgive the coinage -- mathsturbatory.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144813210603379421-7000024999272126641?l=geekdamana.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://geekdamana.blogspot.com/feeds/7000024999272126641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144813210603379421&amp;postID=7000024999272126641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7000024999272126641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144813210603379421/posts/default/7000024999272126641'/><link rel='alternate' type='text/html' hr
