Thursday, June 18, 2015
Will this effect affect anything?
Now, I've got a bug report to fix, saying, "Use the terms Affect and Effect consistently". One screen has "Effect" on a label, the other has "Affect" in a heading.
Well, it's not meant to be used consistently! It's meant to be used correctly! But all the same, I could not say with any confidence that it was right - so I Googled it, and guess what, it was wrong, in both cases listed on the bug report. Completely backwards. Whoever raised the report didn't know that either - they wanted it the same. But hey, the report was fair enough - it looked dumb, and in fact, was dumb.
So, for the record (at least my personal record): Affect is a Verb. Effect is a Noun.
You have a "Tax Effect" of some attribute in our system, and therefore that attribute "Affects Tax" in a certain way.
Affect is Verb, Effect is a Noun.... Affect is Verb, Effect is a Noun.... Affect is Verb, Effect is a Noun.... Affect is Verb, Effect is a Noun.... Affect is Verb, Effect is a Noun.... Affect is Verb, Effect is a Noun....
I need a rule to remember this.AVEN or ENAV ???
Monday, April 20, 2015
It is your job and it is your choice.
Recently I've been stretched quite a bit at work. As every developer in a small business can tell you, they are the one "responsible" for printers that don't work, windows updates that need to be applied, Internet connectivity, backups, and so on.After a recent spate of server outages and just a bad month for our network in general, I found myself becoming a little bit disillusioned with my role in general.
I'm trying hard to keep up with new development technologies and fighting an uphill battle to keep our software product relevant and somewhere close to up to date. It's a tough battle in a small (microscopic) software development house.
Anyway, after recently being drawn into discussions on disaster recovery, backup best practice, virtual servers architecture, RAID drive recovery and so on and seemingly being the one who's fault it was that a drive failed in the first place, then also copping plenty of pressure to keep the progress of our ongoing, leviathan development project going, I started having some toxic thoughts about how I'm not paid enough to be a system administrator AND a lead developer.
But I know that's toxic! I just said it was. It didn't stop me feeling a little dejected - or used. But I believe I am a more positive person than that and I don't want to become "that guy". There is two ways to look at every situation. You can be a victim, or you can look at what you can control. You can lament that you aren't paid enough, or you can grab the opportunity to do more.
I like to think the negative thoughts that sometime creep in are only skin deep - a short term reaction to a tough day maybe - and that underneath, the "positive me" will ultimately control my actions, for the better.
So with those fairly positive (I'd like to think) core values, I took to Google. I searched terms like "it's not my job", "initiative" and "attitude" and Dr Google prescribed this one....http://www.personalbrandingblog.com/eliminating-its-not-my-job-attitudes-at-your-workplace/
This is a gem. This make the analogy with a sporting club and pointing out that everyone has "roles" but essentially, there is a "job" to be done - by everyone! So I thought, yeh, but what happens when one superstar carries the team all the way! Well, firslty that rarely never happens, secondly, when it looks that way, the value of that superstar skyrockets. But think about what comes first. I love cricket so I'll relate to that. You will never see a player, unproven, state that "right, I'm going to open the batting, open the bowling, captain the side, oh, and I'm going to be incredibly successful at it, so I want top dollar before I start". It doesn't work that way. That player goes out, does what he says he can do, then gets the big offers. If he's bought into the side as a wicket keeper or an opening bowler or a leg spinner, and does that, he doesn't not make runs or take catches until he's paid more. He makes the runs, takes the catches and turns into an invaluable resource. Then come the spoils. If he's still not appreciated by his current team, that's a different issue. (The recruiters will come knocking).
So time to "put some runs on the board". Once I really am invaluable - then worry about the spoils, and I'm tipping that if it's going that well, you won't have to worry too much.
Monday, April 13, 2015
Remarkable Curry Puffs
They were learning about spices and flavours and so on. His were seriously hot. He'd experimented with the curry and the chili.
He'd learnt too. I loved them. No one else did.
Is it better that he made ridiculously hot curry puffs that I loved and most people hated, but that everyone talked about, or should he have just followed the recipe and made something that everyone expected.
I think his remarkable curry puffs were far more....well,,,remarkable.
Thursday, January 22, 2015
How to install the Dot Net 3.5 runtime to a Windows 8.1 Pro system
Initially the normal web installer for the 3.5 run time was failing with error:
"0x800f0906 : “The source files could not be downloaded. Use the "source" option to specify the location...".After a bit of Googling I discovered (in fact remembered because I think I've been here before) that you can only install the Dot Net 3.5 run time from the Windows "Add / Remove" features section of the Control Panel. However, this too failed, with the same error.
Now our Internet traffic in the office is all routed through a Web Guard proxy. There is however a work around for this exact scenario which I promptly implemented, ensuring I was bypassing the proxy - still the same error.
Next, I discovered there was a security patch, which could actually prevent the run time being installed - but that could be resolved using security update 3005628. I ran the Windows 8.1 x64 version of this - guess what, no change.
Now you always find what your looking for in the last place you look right? The next discovery on my part was that, as the only way to add the Dot Net 3.5 run time to Windows 8.1 Pro is via the Windows Update service (no stand-alone installation is going to work) you cannot be running your Windows updates via WSUS. Guess what, We are!
So, the work around for this is a command line option - found here.
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:installationMediaDrive:\sources\sxsBut alas, that too was failing.... still failing to locate the required files, with the same error!
Next, to disable the WSUS Group Policy. Luckily, we are a very small company, and I, as the developer and also "the I.T. Guy" because, you know, I know how to restart a server!
So I located the Group Policies in question, recorded the settings for each relevant one, then disabled them. (For the record, they are in the Computer / Policies / Administrative Templates / Windows Components / Windows Update branch of the Group Policy editor.) Having run "gpupdate /force" on the Windows 8.1 Pro machine, I tried again from the command prompt. It didn't work! I was attempting to use a Windows 8.1 Pro MSDN disk as the source for the component.
- Make sure you are not accessing the Internet via a Proxy that is preventing access to Windows Updates (pretty unlikely you'd hope) - you must have Internet access as this is the only way, for Dot Net 3.5 on Windows 8)
- Remember, you need to be using the Control Panel / Programs and Features option to "Turn Windows Features on or off (you can find Control Panel in Windows 8 by just typing "Control Panel" from the Start Screen.)
- Make sure Security Update 3005628 is applied.
- Find out if you are using Windows Server Update Services (WSUS) for windows updates as this will prevent you PC from accessing the files required to add the feature. If so, you'll need to get it disabled for this process. If you're like me and in control of those Group Policies, temporarily disable them. If you work for a larger organisation where that is impractical, you will need to see if you can get yourself temporarily excluded from that policy, while you add this feature.
Friday, November 07, 2014
So tempting to blame the user for bad design...
Monday, March 31, 2014
How do you use templates in Word 2013
Word 2013 will only show you the "Featured" AND "Personal" options on the "File / New" screen, if you have something entered in the "Default Personal Templates Location", which can be found in the Word Options screen. (Go To "File" in the top left, then down to options.)
Enter the path to your templates, in the "Default Personal Templates Location" field - I am sticking with the old Office 2010/2003 etc location.
Once you have a valid path in that field, the "Personal" link will appear on your File / New screen, and you'll be able to see your old documents.
Discouverable software - right! - discoverable only using Google.
Wednesday, January 15, 2014
Some in sight into how Google Calendar Quick Add works
Recently, one of those automated entries contained the phrase - "13 years" in the middle of a decent slab of text - from a Facebook status update actually.
So, you can guess what happened in my calendar. Yep - the "13 years" was removed from the text that was used as the description for the calendar entry and a 13 year entry was made.
I've used the quick add feature often from the calendar page in the browser and often entered text like, "for 2 hours" or "for 1 day" but never realised that any text related to any time frame would simply be stripped out and used as the duration, regardless of the context of that text.
Friday, May 25, 2012
Keep it real
I'm so guilty of concentrating on the wrong things, and even more often, focussing on the wrong things at the wrong times.
Customers (of the "end user" variety") and even managers, especially in the building industry, don't care about your code, how good it is, what language it's written in or whether your curly braces line up. They don't want to hear you talk about how well architected your system is. They want to know it works, and they want to know it does what "they" want it to, and nothing else.
Most of the time, "what they want it to do" is different to everyone else, and most of the time they can't understand why on earth any other customer would be different, but most importantly, they don't care. It doesn't matter.... to them.
What your software could do for them, and how well it could do it, are completely irrelevant. They are interested in knowing what they want to know right now - be that a problem a prospective customer is trying to solve, or an issue an existing customer on the phone to help desk, is trying to resolve, of a non-technical manager wanting to know when your latest project is going to be ready.
I know what Seth is getting at in his post is intended to apply to any discipline, in any industry with any customer, but I find it is particularly relevant to a developer especially one who is in close contact to the end user of their software.
This is not to say robust, well designed code isn't important or that refactoring your code to make it maintainable, optimised etc isn't vital. It is. Clearly! These just aren't things the customer is interested in (usually).
Likewise, as Seth says;
"what matters changes by culture, by buyer, by product, and even by day of the week".The message I take from Seth's post is (in my world) "work hard at building good quality software but be especially attuned to what really matters to the customer/manager/colleague/prospect/friend you are currently interacting with, and relate to that and you'll be a winner."
This has parallels with listening with empathy and "seeking first to understand, then be understood".
Monday, June 27, 2011
Seth's email checklist
READ IT! Its great ;-)
http://sethgodin.typepad.com/seths_blog/2011/06/email-checklist-maybe-this-time-itll-work.html
Wednesday, December 01, 2010
Voiced and Voiceless
http://english.stackexchange.com/questions/5913/pronouncing-possessive-words-that-already-end-in-s
This takes some reading, and following a couple of the links, in particular, http://forum.wordreference.com/showpost.php?p=672824&postcount=8 and http://en.wikipedia.org/wiki/Voiced_consonant
Thursday, April 22, 2010
Lambdas - good intro
Wednesday, April 21, 2010
I’m estimating in Apples and entering Oranges on my timesheet
I’ve just had a realisation that for the past month, I’ve been making a fundamental mistake with regards to managing the schedule on a software development project I’m working on.
Someone that’s tried all the various techniques that I have and listened to or read countless case studies on the matter, should never have made such a fundamental mistake.
We have undertaken a massive rewrite of our software recently and have been roaming fairly aimlessly along, building some really nice stuff, but with only a vague picture of what we want to do, and what will wait until later. I’ve felt bad about the lack of direction for awhile but have never had enough pressure on me (or put enough on myself) to make some commitments about where it’s going. I’ve always been able to show plenty of progress – lots of cool looking screens and better features than the old system – but progress to where…I’m driving my car along a very long highway and have no clue as to where the road goes.
Lately, in the nicest possible way, the owner of the business has decided he’d like to know when this project is likely to be ready to launch. I cringed a little, as I wanted to be all Agile, and not set some “pie in the sky” date way out 12 months of so from now, only to completely miss it and….you know how it goes. However it is clearly just as big a mistake to continue to wander aimlessly along with no goals and no solid commitment on my part. I had to face facts and make a few tricky calls.
So I applied my best Agile techniques and started talking about small iterations, monitoring progress, and even evidence based scheduling.
So for the past month, I’ve put together a work log (or backlog), done my estimates of the work to complete, recorded my time and compared results, recording how much time I get to dedicate to the project and how much time I get dragged off onto other stuff.
After a very interrupted month, the results came in. There weren’t too many unexpected figures in there except that my estimates were about 25% too high.
After some discussion with the boss, he agreed to do whatever he can to stop interruptions to my day task switching etc. He means it and has put his money where his mouth is in terms of contracting others to take over some of the work. no complaints here.
Then we started talking about what a fair percentage of my time is, to be dedicated to this project. My gut feeling was that if I could log 70% of my time to the project, that would be great. He couldn’t understand why, with all he was doing, that I would so matter-of-factly" say, achieving productivity of over 80% is a pipedream.
“I want you to be spending at least 90% of your time on this. I’m paying you to work here….” and so it goes.
So today, I've focussed and the first two hours were really productive “zone time”. I started at 8.30am, made coffee, replied to some emails, checked a couple of settings on our network as the new guys contracted to manage that (last week – one of the obstacles removed) were making some changes overnight, and I was into it.
I surface at 11.00am and thought, well there’s 2 hours. So I logged that time. Now that’s 120 / 150 minutes – 80%. Geeez! How is 90% ever going to be possible if I done this much and still only hit 80%. So I went to make a coffee, thereby dropping that figure a little more!
Then it occurred to me, when I estimate these tasks, incredibly roughly with a huge amount of guesswork and gut feel, I do so in a “that’s about a day, but that one is less than half a day, that one will take me a week” and so on.
This form of guesstimation intuitively takes into account all the normal daily interruptions of phone calls, email, coffee making. It’s not fair, or even accurate to estimate in terms of duration (“it will take me at least a week to do all that”) but then record your time in terms of dedicated zone time. I have to record time the same way as I estimate it.
It sound so bloody obvious when you say it out loud, but the fact was, even after the number of different approaches to this type of scheduling and estimating I’ve seen and used, I still made such a stupid mistake.
Anyway, it is now clear that as I have not worked on any other projects or tasks today, Ive hit 100%. How much did i get done? Well, if you look at the tasks I finished, almost exactly what I’d expect to get done in a day. Good estimating Stu! Now I am recording that time fairly my estimates at the end of the month should look a lot more correct too. Not only that, but the boss will be happy seeing my get close to the target he set of 90%…dream on…
Joel Spolsky had a rant along these lines on a recent StackOverflow podcast too – talking about absorbing the minor interruptions into the hours you record against the job – those interruptions are a normal part of the day and should be included in the evidence you take on board, for the next estimate you make.
Wednesday, December 23, 2009
Form_Load Event vs overriding onLoad
Wednesday, September 09, 2009
Counting records in a SQL Server table
Wednesday, February 11, 2009
Streams demystified
Thursday, January 22, 2009
My LINQ stuff won't compile after Visual Studio 2008 SP1
Wednesday, January 14, 2009
A BitWise Calculator
Wednesday, January 07, 2009
public T Find (Predicate <T> match)
Tuesday, December 09, 2008
Using Personas really helps!
I recently read Alan Cooper's book - "The inmates are running the asylum". What a life changing (or developer life anyway) book that was!
It really got me thinking. At first I was depressed about the state of affairs in computer software development, but then, I started noticing changes in software that have taken place in recent years, since this book was published, and realised that it really is having an impact in some quarters...granted many other "quarters" still have a long way to go, and the problem is far from solved - take for instance Office 2007! But then I;m sure Microsoft would argue that ribbon controls are precisely a response to the usability and interaction design that Alan Cooper espouses. I'm getting way of track in this post already!
Here at Constructor we have recently implemented some personas. It was a little experiment really, to see if I could get any traction for the idea, without really ranting, raving and evangelising. It helped that I waved Alan Cooper's book under the nose of the GM, who read it, loved it, and now two other staff members have also read it.
Anyway, we drafted up a handful of personas, and stumbled across some graphics software we could use to knock up some very satisfactory images to go along with our personas. We printed up little one page "bios" complete with "mug shot" onto nice glossy A4 cards and these float around the office, living mainly on the round table in the middle of the developers area. They have already been the centre of a handful of discussions about new enhancements and so on. It's been very encouraging to watch other staff members, completely "get" the benefit of using personas (not specific users) to discuss these features.
Our personas were developed without formally interviewing customers, mainly because we know our existing customers, many of them have been with us for 10 years, and feel we could at least start down this track without the extended interview process.
Anyway, it's working a treat!
Just now, I've been designing a new screen, for customising some user options. While sitting staring at Visual Studio IDE, I found myself slipping into that old trap whereby it's all too easy to just pick controls that work best for me at the time, and throw them onto a form. Now, the background data access work is down. The user interaction has been designed at a higher level with our personas in mind, and this "customise" screen is a bit like a "Tools/Options" kind of screen. Won't be highly used - this doesn't mean it shouldn't be easy to use.
Anyway, as I said, I found myself slipping into the, "ah well a combo box will do here, the user can just pick..." oops - there I go, stretching and twisting the user into the shape I need him/her to go...I heard a small call from the table behind me. It was Eddy, my primary persona in this case. I turned around and read the bio, and thought again about my new screen. Suddenly something dawned I me. This screen was coming at the solution, from completely the wrong angle. This was a screen about setting user options. It needs to start with the user, and most likely the current user. The module they are setting options for needs to be highlighted, but given it's for customising, they need to see the others, right there in front of them. The massive list of customisations that can be made is secondary and had to be moved way over to the right...look the details of this particular feature don't matter, focussing on our personas, has just improved to interaction with this screen for everyone that users it, by simply forcing me to think "step away from the computer" and get in the shoes of the people that need to interact with this thing.
Now there is most definitely plenty still wrong with our approach. We are still developers doing design work - that's not likely to ever change here, we're 5 people, but surely, this is a big step in a very positive direction.
Monday, December 08, 2008
I never knew this was called "Monty Hall"
Several years ago I walked into an office with a group of guys having an animated argument over a game on a white board.
"Pick one of these doors" (drawn on the board). "If I tell you there's a brand new car behind one of them, then after you make a choice, I'll tell you which one of the remaining doors is incorrect, should you change your choice to the other remaining door?"
So you could be right all the long, but you now know a little bit more...so should you change.
I've since bought this up at other offices, dinner parties, BBQs etc and wonderful conjecture always ensues.
Anyway, I found an online version - here - http://montyhallgame.shawnolson.net/ - check it out. You should win this, 66.666% of the time.








