Friday, June 21, 2013
Kids vs Clients - who wins you decide
What I realised after looking back on the day was that I think anyone ho wants to run their own business should start by managing young kids for a day, they make the best on the job training money can buy.
My oldest is quite happy to sit and play on her own with her princess castle and entertain herself in short 15-30 minute bursts before deciding it is time to do something different.
She will then come and find me asking for a different toy or if she can watch TV etc, once setup with this new mini project we get 30 minutes of clear time before the next project needs to be found and started. Projects rarely get finished, movies are always half watched etc.
If she does something embarrassing and it is noticed (a trip up over the corner of a rug for example), all hell breaks loose and all projects are put on hold, or dropped from the master
My son is the complete opposite, he likes to follow you around checking up on you, closing cupboard doors you have left open to make putting the dishes away possible, luckily he announces the closure by pointing, yelling 'door' and slamming it closed while you aren't looking.
He like to change the rules constantly, after picking his sandwich ingredients and watching it be made, he decides one or two or all of the ingredients are not up to spec and removes them to be eaten or dropped on the floor.
And I guess anyone who freelances will see some similarities in this behavior in some of their clients, well I can in some of mine and this is not a bad thing.
As someone who tries to build software/web to model business processes for a living, I need to understand how the people who are going to use the software think and deal with all aspects of what is built.
Yes I know it can be a pain to have a client looking over your should while you work and there can be a lot of 'hold your tongue' moments, but in the long run I think they have to be (hopefully) happier with the end result as they have been there every step of the way.
Obviously this is not always the case....
Customers who give you a brief spec and say good luck, then disappear until they come up with the next idea are great for developers as we can get on with the project and just build it. At lest until the customer comes back with the next best idea they have ever had and ask for it to be added...
Both have good and bad points, there is no such thing as a perfect customer and at least most of the time time they door drop to their stomachs and starting kicking and thumping the floor while wailing.... well .....
Wednesday, June 19, 2013
Happy Hosting gone wild
The site mentioned in the previous post http://chillfire.blogspot.co.uk/2013/06/between-rock-and-hosting-company.html is offline now and guess what I am on the phone to the Happy Host team...
I am guessing thier system sattus notice does not cover this server:
Last modified: June 18, 2013 @ 9:08 am
All systems and services are operating as normal.
Oddly enough the site was online at 908am... Dave, Dave, Dave put down the screwdriver...
I wonder if they have caller ID, I would have thought that being no.2 in the queue would have been a good thing...
Support member on phone, he has gone off to check...
He is back (5 minutes later), "oh yeah that box is definitely off, we will turn it back on and see whay it happened, probably be back up in an hour or so"
AAAAAAAAAARRRRRRRRGGGGGGGGGHHHHHHHHHH
Tuesday, June 18, 2013
Between a rock and a hosting company
I have decided to not shame the company that created this mess, but the names of the staff are all real, so lets call the hosting company 'happy hosting' (just hint of irony there) or HH for short.
Only because I have clients still on them and don't need a repeat disaster.....
So My client calls to say they have noticed a load of traffic across the site in their HH stats package, this traffic is not being picked up on Google analytics.
After some hunting and scratching of heads we find all of the traffic was on 2 pages;
- /rayban.asp
- mulberry.asp
Both pages were being indexed by google from pages like this one http://www.bizzybassrecordings.co.uk/index.php/component/kunena/2-general-forums/5076-vtpvvlmhttpwwwidropoitray-banasp?Itemid=0
Now being a up market publishing company these sorts of products wouldn't normally get mentioned anywhere on their site...
So the firefighting started, anyone who found a bad page was told to delete it via the CMS, because the CMS had root access.
No one at the client was creating these pages, so as the alarm bells started their ominous ringing in my head, we raised a support ticket at mysupport.HH.com ...
24 hours later with no response to HH (my client spends around £1000 a year with HH) I did some invetigation online and found that it appeared we had been hacked by something similar to china chopper
Notes added to the ticket...
Finally we get a response, "it's not us it's your site", "or it could be someone else on your server as you are on a shared server", " we patch our servers etc etc"
The server we were being hosted on was a Server 2003 box, running .Net 2.0 (thanks to http://browserspy.dk/webserver.php for some help with this)
I asked them to check the security settings on the site as if it was china chopper then it would need to get in somehow,
- "it's not us it's you"
"right thanks, can you send over any IIS logs for us to work out where the access is coming from"
- "we don't do logs for shared hosting"
"thanks again Dave, can you check IIS for me to see if there are any noticeable alteration to security settings on our site then?"
This is when it all went wrong, 3 hours later I get a call from the client, "the site is yellow and white and says "error" - bugger
So it is 530 on a Thursday evening and the support lines are open 24x7.... ring ring ring.... ring ring ring....
New support ticket added as this is not the same as the first problem, obviously something has happened at a server level as its completely dead returning a 500 error mentioning security privileges.
Wake up the the same error and no support updates, you have to love the HH support team dedication to the meaning of "24x7"
We start on the phone, support are in but the guy we need 'Jim' or 'James' to his friends is not in until 930, he will call you.
11'o'clock and all is quiet, site has blipped a few different errors so we assume Jim is rebooting the server (if all else fails!).
We call Jim, he is unavailable but the best guy to fix the problem , he will call you back
1pm, the site error now says .Net 4.0, so they have failed to fix the problem and are hoping that patching the server and upgrading the .Net framework will fix the problem.
Another call, this time I offer some advice "Can we move the site to a new server while we wait for you to fix the current one?"
- "no, well maybe, or what if we do restore a backup of the site from last week?"
"Dave that sounds like a good idea, you should get a medal, no really, mate you are a genius, wonder why no one thought of that earlier, I am going to recomend you for a promotion" (I did not say any of that to Dave, if I had been close enough I would have driven over there and...
So they restore the site at 430pm on a friday night, my client has been without their site (or what I like to call their only form of income) for going on 40 hours, the nooses are removed from the rafters and everyone goes home, leaving me to pick up the pieces because the CMS they have is not compatible with .net 4.0 and although HH have restored the site they have not restored IIS to its former glory.
There are still weird errors all over the place, the home page doesn't work, the stats package doesn't work, the backend bespoke admin system doesn't work.
A week later and it is all held together with sticky tape and number 8 wire, no one wants to tell HH about any of their services that don't work in case they try and fix them.
The support team were crap (or are under resourced and cant be bothered), HH are crap, they were one of the best in the UK until they were bought out by iomart and are now part of easyspace
This is what I think happened when Dave went off to look at the IIS settings;
- Dave restarted IIS - fail
- Dave tried a reboot -fail
- Dave tried to patch the server - fail
- Dave upgraded the 2003/IIS6 server . net 4.0 - fail
- Dave then did more updates and left to go home at 5 - fail
- Something broke on the upgrade, or a window on the console 'click to continue' was left?
- Dave came in the next day and made sure no-one else noticed the ticket and hoped it would all go away - fail
- The shit hit the fan
- My client lost thousands - fail
- I have to fix it - fail
- HH are still in business - fail
- I am moving all of my client sites hosted on HH to a new host, proabbaly only cost HH a few grand, but hey a - success
There is a lot to be said for good customer service, if my client who have zero technical staff had had to deal with HH directly the problem would not have been solved (or may be it would have).
My client lost valuable sales and business because someone decided to fiddle with IIS6 (not for the faint hearted) without telling us that it might break and not hanging around to check it.
Most importantly there has never been any mention of compensation (I know 2 days is under the 99.9 SLA but come on) or anything to say how it happened or that they will make sure it soesn't again.
All in all I would never use HH again, make sure when you select a web host you do some research on them, the most expensive are not always the best.
And we never did get to the bottom of china chopper
Thursday, May 02, 2013
coffee - it is over rated
I am normally not too far from a can of energy drink or stameing cup of coffee, however last week I was struck down with a horrendous stomach bug which kept me out of action for 4 days.
During this time I was unable to eat and was left to drink water and/or flat ginger beer (the non-alcoholic version).
When I came to the end of the week and was finally able to eat food again and had the option of a hot coffee, I said no.
I have no idea why, but I didn't have that craving that is normally in the back of my head, the one that sits hunched over in the darkest recess of my brain saying 'one more hit'.
It will be nearly 2 weeks tomorrow since I had any caffeine and I feel pretty good, I am sleeping better than I have in years (I have 2 kids under 5 and I know about sleep deprivation).
I wouldn't say I feel like I could run a marathon or play the violin or anything, but I feel pretty good.
How long this will last I don't know, but if you work long hours and rely on caffeine to get through a day, my advice is to go through the coffee tremors/headaches and all that horrible stuff for a day or so and then give a coffee free life a go for a few days.
It is amazing to try and go about your normal day while trying to stay out of your normal routine, I really think 70% of my coffee addiction was down to some bizarre repetitive syndrome that made me want a coffee because I had one yesterday at the same time...
Anyway if you give it a go, good luck breaking the habit of a lifetime, I am about to shave my beard buy a suit and leave the world of software development to become a insurance salesman.... not
Thursday, April 18, 2013
speed reading for business - great course from mylearningworx
And every once and awhile a course comes along that I think is awesome, quite tough as we are getting some pretty slick courses being created at the moment.
The one that I just finished testing is "Speed reading for business" by Alex Garcez (@alexgarcez) the speed reading coach, I liked it so much I made it course of the week!
I must admit I was a little skeptical about this as I have always thought I could read pretty fast, take in and then retain information as I read. But after finishing the 2 hour course I realised I had been missing a key part of it all, the techniques that Alex teaches are simple and for me they worked nearly instantly, like a light bulb being turned on.
And no I wont give away any of the techniques here, all I can say is it will be £27 well spent.
I now read in excess of double the speed I used to and I guess this will only get faster as I hone my skills.
It does mean I may be getting through a few more books on holiday though, so much for packing lite.
If you need to read and retain information on a day to day basis, I cannot recommend this course enough www.mylearningworx.com/app/take/course/760/speed-reading-for-business
crowd sourcing, where do we start
| DEADLY DIRK: Campaign for Free Galilee. FRANCIS: Oh. Uh, People's Front of Judea. Officials. DEADLY DIRK: Oh. FRANCIS: What's your group doing here? DEADLY DIRK: We're going to kidnap Pilate's wife, take her back, issue demands. FRANCIS: So are we. DEADLY DIRK: What? FRANCIS: That's our plan! DEADLY DIRK: We were here first! FRANCIS: What do you mean?! DEADLY DIRK: We thought of it first! WARRIS: Oh, yeah? DEADLY DIRK: Yes, a couple of years ago! P.F.J.: Ha. Heh. Ha ha. DEADLY DIRK: We did! FRANCIS: Okay, c-- co-- come on. You got all your demands worked out, then? DEADLY DIRK: 'Course we have. FRANCIS: What are they? DEADLY DIRK: Well, I'm not telling you. P.F.J.: Aghhh... |
FRANCIS: Oh, come on. Pull the other one. P.F.J.: Shh! DEADLY DIRK: That's not the point! We thought of it before you! WARRIS: Did not. DEADLY DIRK: We did! FRANCIS: You didn't. C.F.G.: We bloody did! BRIAN: Shhhh! P.F.J.: Shhhhh! Shh. DEADLY DIRK: You bastards! We've been planning this for months. FRANCIS: Well, tough titty for you, Fish Face. Oh! Oh. RANDOM: All right. WARRIS: Clever. You sly... BRIAN: Brothers! Brothers! We should be struggling together! FRANCIS: We are! Ohh. BRIAN: We mustn't fight each other! Surely we should be united against the common enemy! EVERYONE: The Judean People's Front?! BRIAN: No, no! The Romans! EVERYONE: Oh, yeah. Yeah. Yeah. Yes. |
Both scenes are a great fun poking exercise into how we think and act when in a crowd, the power of the people and all those other cliches come to mind as well.
The sewer scene is a good reminder that sometimes we need to make sure we are all working on the same problem in the same direction, fighting the common enemy.
Crowds can go bad
This is where crowd sourcing could fall apart, I mean if everyone who joins the 'crowd' is in it for different reasons, or the same end goal but have different motives for getting there, it would be easy for the crowd to get steered away from the original goal.
Personally I love the idea of crowd sourcing, the dev4good events and every other hack event around the planet are in essence crowd sourcing events. People who are interested in an idea, come together to work on it with other people with different skills.
So maybe 'skill pooling' is more apt name but not one that would ever take off I guess?
The difference to these hack events to the sewer scene (other than it being in a sewer and under a palace) is it is an open forum for discussion, debate. No one person has control over any part of the group, if people in the group don't like the 'plan' they are encouraged to start their own group (and yes we do call these people 'splitters') and see what happens.
Sometimes this works, other times it doesn't, that is part of the game.
The online training system I am co-founding (www.mylearningworx.com) is at its heart a place for people interested in learning and/or teaching to meet and share their knowledge (and in the process make some money if they want to).
The way I see it everybody is an expert in their own world, shed, castle, boat, whatever. Most of us never part with this knowledge and will take it with us when we leave. When we look around skills, languages, cultures are being lost because people simply don't share like they used. Before the advent of TV and the internet, people spent more time together talking, passing on information. Nowadays, this happens less as people 'interact' more in a virtual way and the conversations have gone from 'Dad how do you change a washer?' to 'Nom eating dinna'.
What we have tried to do with the My learning worx platform is to make it as easy as possible for anyone with some information to share it (and make money if they want).
This knowledge transfer can take place anywhere, anytime and just about on any device, meaning there is no reason why we cannot do it.
Feel free to take a look around the new platform and let me know what you think!
Wednesday, November 28, 2012
dev4good holiday hack
After a few years of organising hack events, I was beginning to get a bit annoyed by the fact that we can bring together some super smart people with amazing skills and ideas, but not get around to pushing these ideas out to market. Maybe we were doing something wrong, targeting the wrong charities?
To prove to myself that you could build an MVP project in a weekend I built a dev4good windows 8 app in around 30 hours, so I knew it would be possible as long as you kept it as a simple a product, it could be pushed to market. With knowledge I had some mental leverage (not the crazy kind) to show people what could be done.
This time around we decided to bypass the charities altogether, instead we invited developers designers, marketers, ideas people and anyone who was interested to join us at Google Campus for the weekend. In the end we had 40 people, a few familiar faces, a few crazy ideas and a load of passionate volunteers looking to make a difference.
Our holiday hack mantra for the weekend: MVP MVP MVP (keep your eye on the Minimum Viable Product) Along with things like "you are not at work, if it is wrong tell your team, they cant fire you", "hey crazy boy, no we are not adding that to the project", it will all come together shortly"
The only rules were each team must be made up of different skills, a team of developers would never get finished and a team of designers might look good but wouldn't get out of Photoshop, it was all about co-operation and finding the right people with the right skills when you needed them.
With an initial intro from Heidi (our co-organiser from The Giving lab), Amy (the dev4good design/UX guru), myself and Jas (API architect from the Giving lab) we started everyone off with ta simple question. Think up new ways for people to give to charity, you have 10 minutes....
20 minutes later (scope creep can start at anytime), the groups came together and pitched their initial ideas to the masses. This (for me anyway) is where the magic happens at these events and if it doesn't happen you might as well head for the hills, people just start working in teams. It reminds me of those 60s horror films with each idea (the blob) just moving about consuming people, spitting them out until it finds the right group of people to start hacking.
Throw in some coffee, pasta, work tables, beanbags, sweets and the whole place was alive with people sketching ideas, writing code (and in one case launching their project before 1pm on the first day http://www.shevember.org .
At 4pm we had a quick meetup with everyone to see where they were or what they needed to get things done.
Other than Shevember ho were onto making their site work better and trying to arm twist people to donate through their site, the other teams were all at different points of their build. But the Shevember roject really highlighted the fact that keeping it simple makes sense and most importantly means you can push ideas out to the internet very quickly. Which I think spurred the other teams on, there is nothing like a constant reminder of 'hey my site is live, how is yours' to make any developer grit their teeth and weep a little.
Unfortunately I wasn't on site for the Sunday, but when I left on Saturday night I was stoked and very very proud of the work everyone had done. These people had given up their weekend to come along to a building with absolutely no idea what was going to happen or what they would achieve. And the fact that we were looking at 3 maybe four projects being ready to go live, I was a happy organiser.
All in all we had 5 or so products live by the end of the weekend, with a couple more close to going live and one in the iTunes store being authorised..... A massive achievement by anyone's standards and as far as I know (I could be wrong) the most 'to market' projects ever written during a hack weekend (imagine if we were allowed to stay overnight)
As for 2013, there are a lot of plans for new events, bigger events and even more products to market! If you have an idea that could help a charity or a community in general, send it to ask@dev4good.net you never know we could build it in a weekend.
Massive thanks to everyone who came along to work with us, even bigger thanks to Heidi, Amy, Jas, Dom and all those who made it possible, see you all next time!
Thursday, November 15, 2012
My Learning worx, turning the corner in e-learning
Our goal is to ultimately change the world, nothing big there then.
At the moment there are a large number of sites around that allow people to take courses, mostly based on SCORM which is the industry standard for e-learning. If you have taken any courses at work for Office, Health & Safety etc it was proabably a SCORM based package.
The problem with SCORM is you need to buy software and know how to use it before you start.
Making a course is relatively easy, but you then need to host it somehow, or run it locally on your own PC, which could make it difficult for others to use.
What we want to achieve is to give the power of authoring to anyone with an internet connection, without the need for a training course on how to build a training course.
My learning worx allows anyone with a basic knowledge of the internet the ability to create a course, promote it and then sell it (or give it away for free).
The better your course and the more sales you make, the more money you can make.
So if you have an itch to teach or want to learn the easy way, we would like you to check out the site and give us feedback - but most of all to try your hand at authoring some courses.
We will be looking for developers to help me build a Windows 8 (& phone) app for the platform in the near future, so keep an eye out if you are interested in e-learning.
We're giving prizes of Amazon Kindle Fires to the best courses published before Christmas.
Course authoring is really easy, all you need is an idea on what you want to teach people.
To read the blog and get more information go to: My Learning Worx Blog
Or signup and start making courses - http://www.mylearningworx.com
Wednesday, August 22, 2012
Is windows 8 that bad - I dont think so
I started writing it as a comment to the looooong 'uninstalling windows 8' post, but it got a bit out of hand so here it is instead;
Dear Tim,
A few things, I have had windows 8 running for ages and yes it is 'different' to other windows experiences and yes some of it works better on touch devices, but I dont think uninstalling it is really the answer. The more feedback we can get out for others to comment on the better, good/bad or otherwise.
Microsoft needs to see and use this feedback to make it better and to be fair they have listened to some of the feedback with regards to the new Visual Studio, maybe this will herald a new beginning for the application life-cycle of MS products?
I really don't think Windows 8 is that bad, its not 'Oh my god, the best OS in the world' but none of the current ones are either, they all have their quirks.
They are built by humans, I mean we aren't perfect and creating an OS that keeps every single user happy is impossible.
There are a few keys that you have missed off your comments that I think may help you with some of your usability issues.
The windows key will always take you to 'home' (this being the tiled metro homepage)
Using windows key combinations you imitate touch gestures;
Windows + Z, Windows + X, Windows + C all bring up different menus while inside an app or 'home'
Windows + D still works to take you back to the old faithful desktop
Windows + Tab & Alt + Tab still shuffles you through the active windows
Windows + R still brings up the run command
The full list of old and new key combinations is here - http://www.pcworld.com/article/251022/windows_8_consumer_preview_keyboard_shortcuts.html
Yes I realise that we shouldn't have to use the keyboard, but it is one of the 2 most used input devices we have.
Okay there is no start button (start scary horror soundtrack music), but to be fair most consumers and remember Windows 8 is designed for the general public who are consumers of information, not geeks like most of the people who read this who are pro-sumers - that is we make stuff. They will use a dozen or so 'apps' on a day to day basis and don't care if they cant see the 'control panel' menu or most of the other options under the start button as they everything they need will be visible on 'home'.
So as long as they see their main app tiles they wont care either way.
I think if you are a geek or gamer you will feel unjustly forced down the 'app' centric route, it took me a long time to come to like iPad because of this. For a long time I wanted to get into the nitty-gritty and play with the folders hidden inside the OS. I even bought an android pad to do this... waste of time and money. Anything with a 10" screen is NOT designed for inputting large amounts of data.
You take a picture upload it to face book, send 140 character message to a friend, tell the world what you are eating for dinner, check whats on TV, watch a TV show,find a recipe, listen to a song, job done - it is nearly always consuming data.
I was also a bit confused with the whole home vs desktop idea. I am a dektop man, we all are I guess, everything gets dumped on the desktop first (or in the downloads folder) to be used whenever we need it and then left to clutter up the view, I used fences for ages to help clear this up.
But in windows 8 there is this clean (and easily read) blocked out 'home' interface that just allows me to see the top 20 or so tiles that link to the apps I use the most, not 4 screens (I have a lot of desktop space) of random files, links and shortcut, I mean really how on earth could that be easier and more productive? (sarcasm)
Windows 8 has made me do things differently, much the same way Mac users do things differently to windows folk. I now store nearly everything on skydrive and dropbox, very little is stored locally.
My laptop only gets the files I need to use, then they are stored or deleted, I just don't need them.
It has forced me to be more organised, I have not installed anything that I dont really need and do install a lot of crap that just hangs around, but if a tile stares at me long enough and I don't use it I remove the app, as the old meerkats say 'Simplesss'.
I will be lining up to buy a Microsoft Surface (not the old surface or pixelsense as it's called now, the new tablet one) when it launches in the UK. Why you may ask, well its really because android and I just don not see eye to eye and I am still not convinced the iPad is for me. Don't get me wrong it is a great platform with an awesome design/UX, however it just does things I don't like and I want to see if a Windows 8 touch device feels better and this is the big thing for me.
This is the crux of the whole mobile device OS issue. The difference between one OS and another is not how it works or what it looks like or if it crashes every 2 seconds, but how it 'feels' when I am using it; is it tactile?, does it make sense when I am doing a task?, does it allow me to access something in a way that feels right? can I use it how I want to use it?
I might be biased towards Windows 8 as I have a windows 7.5 phone, an Xbox 360 and rely on Microsoft stack and it's technologies to help pay my mortgage, but I personally think that Windows 8 is going to make people stop and think about how they work and what they 'really' use their PC/tablet/mobile device for.
And from a financial point of view, even if only half all current windows users move to Windows 8 that is still a shed-load of consumers who will be in the market for new shiny apps and that can't be a bad thing for us developers/designers.
One last thing, when reviewing an OS we shouldn't really focus on the apps that it runs, I know the mail client is pretty basic (although not that bad really), it is Outlook express at the end of the day and is not Outlook.
In general the apps are written outside of the OS, so shouldn't we review them in their own context?
regards,
Craig
Tuesday, July 31, 2012
Dev4good 2012 deconstructed - part 2
Please, please, please listen! I've got one or two things to say.
I have been writing code of some description since 2000 and would consider myself fairly knowledgeable when it comes to UI design, user interactions etc. I am realistic and know that I couldn't design my way out of a paper bag and that there are always better ways to do things...And I guess most developers think the same, we all code our systems to be designed around the functions we build and the specifications we are given...
My way of thinking was about to be beaten with a stick (probably with a few rusty nails stuck in it).
Stwike him, Centuwion. Stwike him vewy wuffly!
Picture the setting (this isn't me), its 230am on a Sunday morning, you have been coding a project since 11am the previous morning and you turn the developer across the table and say 'something just isn't right'. The UX consultant who has been trying to tell everyone in the team about something called 'stakeholder', behavior, touch points for the last 15 hours turns and says "Boys I have an idea".Queue 3 mini coopers, a bus going over the alps, or at least - 3 developers a super smart UX consultant and a whiteboard....
As I mentioned, I wasn't actually in the scene above (a lot of literary licence was used), I called in right towards the end (heading for what would turn out to be an incredibly uncomfortable bean bag) just to say goodnight, only to be told "Craig, Amy has just told us we don't need an IT solution for the Gaza project". Bearing in mind the gaza team had already split and it was nearly 3am, I thought what the hell this could be interesting.
Amy went through her presentation and I went from being completely shattered to being completely awake, everything she was talking about made sense. It appeared we had all missed the 'human' aspect of the problem and looking at the problem from a different angle (not the developer 'must write code' angle) meant the solution was extremely simple - we need somewhere for people to meet and share information.
This was where I dropped a bombshell, 'why dont you just do a mashup?'. Use the data feeds from all of the other projects, plus blogs etc and create a place for people to see the information they need to see.
The Gaza1 team came in as well to say they had realised that their solution was not going to work, mainly for technical reasons. They had framework issues and were stuck, everyone discussed options and they headed back to try some new options.
After an hour of discussing the different approaches of developer and designers I went to bed, feeling enlightened.
I've been here five years, they only hung me the right way up yesterday.
It will probably sound very cheesy, but the early morning lesson really struck home. I am reading the Nail it, then scale it book at the moment and there is a lot of talk about doing the minimum right first. You build a minimum feature set first and seeing what people think/need before adding more to it, this is exactly what the teams should be doing (lightbulb moment), thinking as a developer you always build to the end specification and would never (rarely) remove functionality just to get a build/release.However thinking about the human problems and behaviours of the stakeholders you very quickly realise that actually most of the functionality in the spec is down to what you (or they) think they need not what they need.
This would prove to be a valuable lesson that I think nearly everyone learnt over the weekend, all for different reasons
Two days to dismantle the entire apparatus of the Roman Imperialist State
I digress, the morning started slowly, actually I think it was more like Saturday, just became Sunday so there was no real start and everyone just got up and carried on.More coffee, monster energy, coca-cola was drank while the teams started on the home straight.
Wednesday, July 11, 2012
Dev4good 2012 deconstructed - part 1
Life of Dev4good 2012 - part 1
I sometimes hang awake at night dreaming of...
I am always apprehensive about how many people actually turn up, I had 57 registered but with 4 other hack events within a 20 mile radius it was a busy weekend for developers.
The early starters were given jobs while I headed to Tesco to pick up breakfast. All I had to pick up was 80 pastries to go with the Lavazza coffee we had been given. However the staff at Tesco had an issue with this and kept asking me how I was going to carry 80 pastries, “in a bag” I kept saying but they still couldn’t comprehend the purchase.
Welease the dewelopers
As you will see only one charity had a representative, this might be down to me not communicating the importance of this as well as I should (note to try harder next year) and to be honest it was something I was initially concerned about. This worry was quickly dispelled while listening to Iyas talk about his recent trip to Gaza, how bad it really is on the ground and what we could to do help.
What have the Developers ever done for us?
Another fear moment (probably a recurring dream about this too), everyone has heard the pitches and then decide to not take part and leave. However I forgot I had a room full of some seriously smart and passionate people and after running around, trying to find the man size post-it notes, I came back to find the organic process of a group of individuals turning into teams.
Popular people front - splitters
You start with a few people talking and others walking past overhear something interesting and get pulled in, if the conversation isn’t what they want they head off on a different trajectory. The bigger the group the more gravitational pull they seem to have on others, then all of a sudden the group will disband and people start to wander off again.
This continues until the groups stop disbanding and regrouping…. A very weird herd/pack thing I guess.
Otters noses, badgers spleens
More splitters, the developers front of tower.js
I have to admit there had been murmurings from some, those mumbles of wrong framework, bad ideas etc and a few people had moved out of teams to help elsewhere.
Something I really liked (it took some balls to drop out of a team) and not something people can do at their day job - “Sorry boss I don’t like the database structure we are using and I am going to head off and work in the canteen this afternoon, ok, thanks, bye”
One of the best quotes of the weekend has to have come from one of these particular incidents - “They all went for a cigarette, but never came back”.
The aliens/ufo scene
Solidarity brothers, solidarity
It was about this stage that I realised what I had asked everyone to do, last year the goal was to have a good weekend hacking and have some fun. This year they had to build something that worked, then show it off and as any developer knows #failure is not an option when it comes to a live demo (Win95 and a USB device anyone).
I also had a chance to check out the project whiteboards and reflect on what had been planned by each team, they all had pretty big ideas and were way above what I thought was possible (proof of the skills and knowledge of the teams taking part).
I'm not the Messiah! Will you please listen?
There was a lot of coffee, monster energy drank over the next 12 hours, plus a tiny piece of sleep and in the early hours of Sunday morning, something close to a geek revelation took place for 2 developers (and me).Crucifixion party, one cross each, by the left, wait for it...
big thanks to
Thursday, April 19, 2012
Dev4good, Mozilla Foundation and a lesson learnt
I arrived up to the Mozilla reception on the 3rd floor and waited a bit as there was no one there, then signed myself in and emailed Dees to say I was here but there was no one on the desk.
I have been to a number of tech offices in the past and there is always the feeling that you shouldn’t be there, you are just a visitor, you are a small dude in a big fish tank etc.
Mozilla have been around for ages, since Netscape released their source code and I always assumed they were just another big tech company with loads of staff cubicled up tapping away at their keyboards, powering the corporate engine.
We went through to the main space where Dees explained how the Mozilla foundation works and what a mozspace was
Places like http://www.centralworking.com/ were a fantastic idea until I found out about mozSpace, even if your average coffee shop is becoming a little more lenient when it comes to people with laptops hanging out for extended periods of time.
Even with the advent of the new centralworking space at google campus, which as a sceptical entrepreneur I can see being an interesting place for google to find new tech while its cheap. The mozSpace has no corporate buy out feel to it, yes they expect the people using the space to hopefully take part in the Mozilla community, some will some wont and it is a gamble for them.
I remember when the .Net framework was launched and Microsoft was spending a fortune on the MSDN road shows every year and other big developer events, they needed a UK community of people to be passionate about their products.
Along with the main space there are 3 big board rooms and from memory 5 smaller rooms, plus a couple of smaller breakout rooms as well.
Friday, October 28, 2011
Silverlight 4– MVVM – binding & dependency property injection
I am not going to try and explain MVVM in depth, there are loads of post about what it is and how it works In essence its splitting the code and UI into separate (and testable) layers within your application while trying to keep the business logic out of the UI.
What I thought I should do is a simple example of one way you could bind your data.
One of this problems I hit very early on, was how do I use MVVM and allow data to be passed through from parent to child UserControls (these have to be generic - one for the address, one for a single phone number, etc) that are coded to validate themselves without having to understand the data context they are being used in. The big plan is to use them across multiple projects without having to rewrite/create each from scratch every time.
I started by dumping everything into one massive view model, this was the wrong way – it was nearly impossible to manage the code and with each control only needing the field(s) to do its single job it proved tough.
I looked at all the MVVM frameworks around, all are great, but none do all of the tasks I seemed to need. I also wanted to understand how MVVM worked in the background and using a framework would hide this from me.
No framework this time, I just coded my own simple modelBase to manage the standard bits and bobs.
What I ended up doing with the databinding is an MVVM application that uses dependency properties in the control code behind to manage data binding to some UI elements while still using MVVM to do the logic and control data storage.
I am building a Silverlight control to manage/create new customers so they can be vetted/contracts created etc for a telecoms company.
I have broken the form up into a number UserControls to try and make development easier and hopefully make each UserControl useable in other parts of the application.
The control forms a part of a larger control/view that manages an entire customer account, so being able to access the same customer data across (possibly) multiple Views is important.
How I did it (this time)
I am using web services to build the objects/classes/observable collections, these are all stored in a set of static classes that are all run before the application loads the UI, I had issues with loading everything asynchronously as if the customer loaded before the list of categories for example it would crash (there is probably a work around for that).
The main page holds all user UserControls , each UserControl is populated with static data before I load the customer view and ViewModel which will set the selectedvalue on any databound controls or text property for text etc.
Injection into user control code behind;
I am adding a binding my Customer ViewModel object to the LayoutRoot grid’s DataContextProperty, however you could add this to any property on any control. Or you could add a single field from the DataContext as well to any UI property.
My child UserControl code behind =
namespace Project.Controls.Customer
{
public partial class ContractDetails : UserControl
{
public ContractDetails()
{
InitializeComponent();
LayoutRoot.SetBinding(Grid.DataContextProperty,
new System.Windows.Data.Binding
{
Source = this,
Path = new PropertyPath("PropName"),
Mode = System.Windows.Data.BindingMode.TwoWay
});
}
public static DependencyProperty DataProperty =
DependencyProperty.Register("PropName", typeof(GenericDataService.queueCustomer), typeof(ContractDetails), null);
public GenericDataService.queueCustomer PropName
{
get { return (GenericDataService.queueCustomer)GetValue(DataProperty); }
set
{
SetValue(DataProperty, value);
}
}
}
}
I hva set the Mode to TwoWay, you could set this to OneWay, OneTime or change this at runtime depending who who is logged to force the binding to be readonly.
I then pass the data into the child UserControl above in the xaml of the parent control;
<my:ContractDetails PropName="{Binding TheData }" x:Name="contractDetails1" />
One last step is to set the text property of the textbox that is on the child UserControl , in this case it is the phone number, I use a text filter command to only allow numbers and there will be some UK phone number validation as well.
<TextBox Text="{Binding ElementName=LayoutRoot, Path=DataContext.PhoneNumber, Mode=TwoWay}" />
<TextBox Text="{Binding ElementName=LayoutRoot, Path=DataContext.Fax, Mode=TwoWay}" />
<ComboBox Height="23" Name="CBContractDuration" Width="120" Grid.Column="2"
ItemsSource="{Binding Path=ContractDuration, Source={StaticResource StaticData}, Mode=TwoWay}"
DisplayMemberPath="Name" SelectedValuePath="id"
SelectedValue="{Binding ElementName=LayoutRoot, Path=DataContext.ContractDuration, Mode=TwoWay}"
/>
From the ComboBox sample above you can see the control is filled with data form my Static data class, however the selected item is set by the Customer ViewModel data passed in through the dependency property up in the first example,
(I have tried to show the linking between the three steps by colouring the keywords, sorry if this is confusing for anyone)
It is important to remember that even in Xaml the binding keys are case sensitive so in the above example PropName="{Binding TheData }" is okay, but PropName="{Binding Thedata }" will not work.
The above works well, but there are instances where you end up doing the validation on the control within the ChildUserControl in the code behind rather than the ViewModel, this is not perfect MVVM, but it works, so is good enough for me – at least until I work out how to do it all in the view model.
Summary
From what I have seen so far, its only been a few months of a steep learning curve (decided to move form VB to C# at the same time – glad I did), but there is no limit to what you can do in MVVM/Silverlight/Xaml, its really down to working around the eccentricities of the framework to make it do what you want it to.
Databinding is one of them, which I hope the above example explains - at least one way to do it.
Please note this may not be the best way, however in the rough and tumble of agile development, it works and it has shipped.
Thursday, August 11, 2011
Silverlight 4 – error in FrameworkElementMetaData
Booted up my PC and opened the latest project only to find when I try and view any of the silverlight VStudio just gives me this error: The type initializer for 'Microsoft.Expression.Platform.Silverlight.SilverlightCommonDesignTimeProperties' threw an exception. - Nice and helpful.
There was only 1 result on google that sent me to https://connect.microsoft.com/VisualStudio/feedback/details/669751/the-type-initializer-for-microsoft-expression-platform-silverlight-silverlightcommondesigntimeproperties-threw-an-exception#
Thanks to dgcaron for his workaround;
I had this very same issue when i installed the WP7.1 templates from the MVVM light toolkit. i was able to build and use my projects after i :
- removed the system.windows.interactivity.dll reference
- cleaned my sln
- readded the reference
Tuesday, August 09, 2011
Activity.log – visual studio 2010?
Every now and then I have a pop up saying that something went wrong in visual studio and it is probably an add-on component that did it and I should run visual studio in /log mode to see what is happening in the activity.log
After a little playing in the command line trying to get this so work, I found this; http://blogs.msdn.com/b/visualstudio/archive/2010/02/24/troubleshooting-with-the-activity-log.aspx by Bill Weinberger
A great post, explaining how to do it and what to look for!
Now to work out what is happening.
Tuesday, August 02, 2011
Identity theft how simple is it
Armed with a few spare minutes and nothing but a mobile number for an eBay seller I was picking some kit up of I wondered how much I could find out about this person?
Step 1 – Asked Google
Google gave me a few spammy hits plus a link to a page on Facebook called "I have lost my phone, please tell me your mobile number again", I mean come on people. There were about 90 mobile phone numbers alongside this persons ‘friends’ names.
Step 2 – Facebook
Following through to the person profile for my ebay seller, a quick skim through their wall showed a load of birthday wishes a few months back, whilst their profile details mentioned they graduated from XXX university in 2002.
He also had a picture of his pride and joy, a beat up VW polo with its number plate visible in the photo.
So some simple maths gave me their date of birth +/- a year.
Step 3 – some more public sites
A quick scout of Linkedin gave me a few more clues on where they worked and adding this to the Facebook data a rough idea of where they lived too.
Twitter had no results, so they weren’t a geek (he works in a hotel btw)
Via BT, whitepages and 123people, using name and rough location I got a hit on an address, same surname but different initials (maybe lived with parents?)
So in half an hour I had;
1. Full name
2. Date of Birth
3. Postal Address
4. List of friends,mobile numbers (and all their names too, possibly DOBs)
5. Current employer and their address
6. Car number plate, although not sure what I could use it for?
This is probably enough to do bad stuff with, or at least cause some havoc.
I really don’t think people understand how easy it is now to piece together a full identity of just about anyone.
Yes there are bad people on the net that look for this stuff, but we really need to make it hard for them don’t we?
Prelude
I picked up my eBay purchase (from the address I found above it happens – strike 1), from the sellers father (strike 2), when I asked how his son was getting on at his new job (maybe pushing it a bit far with this), he said good but then looked at me a little bemused.
But I had already paid for the items so all is fair in identity theft and eBay purchases.
Keep it locked away
Its a dirt internet, keep it clean and hide the data you don’t want people to know about. You wouldn’t write your PC password on a post-it note and stick it to your screen would you?
Tuesday, July 05, 2011
Running a developer event – sponsors
But don’t let that put you off!
There are a few or companies who support the UK MS development community that you could say will be guaranteed to help out in some way, make contact with these guys as early as possible as they always run their sponsorships on a first come (with the best idea) first served. And they take the longest to get money signed off and paid.
Now its the hard(er) bit, start sending emails out to every business contact you know, anyone could be a sponsor. I didn’t go for the give us cash or forget it, it was important for me to get ‘stuff’ that could keep the costs down and I never said no to a sponsorship offer.
The email that went out was heavily focused on what I was trying to do, not on how much cash I needed, actually for most first contact emails I never asked for cash. If there was a positive email, then I would send a gracious thanks and mentioning cash needed.
My initial thoughts were to ask for small amounts (trying to avoid a ‘no’), after speaking to someone who knows about running and organising a lot of successful events (Simon Sabin from SQLBits), I realised that I should be asking for the full amount from everyone and seeing what happens… First try on this was surprisingly effective.
Don’t stop looking for sponsors, you cannot be certain of anything until the cash arrives.
Be prepared to cover some(or all) of the costs for the event yourself, hopefully it wont come to that. But you do need to bear this in mind, this will also keep you focussed on finding both sponsorship and the right venue.
Phase1 – the people you know
Phase 2 – the people you know through people
Phase 3 – random companies that you have seen advertising in the magazines you read, who may or may not have any link to the event
Phase 4 – repeat 1,2,3
It takes balls (not literally) to run an event, if you approach people confidently and know what you want to achieve you will get a better response. If you know what the sponsors can get out of the event, you will get a better response.
My initial emails were basically crap, it took me awhile to get my story of what I was trying to achieve straight.
Once you have your sponsors, do keep them in the loop, now this is not something I did on the run up to dev4good, but I will be sending a thanks and summary to them all within a few days of the event finishing.
While the event is on, make sure every attendee knows who the sponsors are and what they paid for, I did a lot of this on day1, but forgot about this on day 2.
And most importantly don’t lie to sponsors, ie this is our 5th year, we have 200 people registered, your closest rival has given us £xxx etc It will only get you bad press when the truth comes out and you will find it very hard if not impossible to get these people to ever take you seriously.
Well that’s a few bits on sponsors, don’t hesitate to contact me if you want to find out more, tweet me @chillfire
Running a developer event - venue
Get your venue sorted FIRST
That’s about it really, except a few other things to consider;
suitable for the Event
Make sure you focus on venues that fit your event, there is no use chasing a venue that is not suitable, if you can go to the venue before you say yes or put cash down, expect to out a deposit down well in advance of the big day, to secure the booking.Keep in contact with the venue, make sure you know what they need from you and that they know exactly what you are expecting them to do.
When you go to the venue, try and imagine how the event will run in your head, ask about everything you may need and make sure anything verbally agreed is also bounced around in emails too.
Location
This will set your cost per person straight off.In London its going to be a lot more than in the sticks, saying that you wont get as many people travelling to somewhere that doesn’t have a train for example.
Infrastructure
Public transport is a must, if it’s out of range to walk, then is their parking?Accommodation
If you plan to run the event over night or not, people may want to stay the night before to save an early trip. I used a hostel as an option for anyone who didn’t want to kip on the floor. Saying that a few said they would have crashed on the floor if they had to. Also I could have saved a lot of cash by booking beds rather than dorm rooms that were not full due to last minute drop outs.I was very lucky when I found www.hammersmithriverside.co.uk, this was all down to an opportune email. They allowed me to use the venue overnight (this was the biggest hurdle for dev4good, I wanted people to be able to work through the night if they had to (or sleep for free). I spoke to a few businesses and insurance was the problem, so was security. I tried real estate agents as well, looking for empty buildings, but again insurance and security were the problem.
I also looked into YHA hostels, as the initial event idea was for it to be a code retreat, but there are very few that have an internet connection (even 3G) and even fewer that are close to civilisation – they are a very cheap option though.
Services
Can you get the internet, is their 3G, how many people are you planning to have on site?We had 25 people using 2 wifi points on the same Adsl and we crashed this quite regularly. One team ended up in the pub next door using theirs for a few hours. If you are using a corporate venue this probably wont be an issue, but do go wandering around your venue and make note of any ‘public’ wifi spots, cafes etc
Food
After the venue itself this is the second biggest cost, at dev4good I covered all food costs + coffee/tea/biscuits through the venue’s kitchen. We ordered pizza in on day 2 as it is a pre-requisite for any coder event.backup
I didn’t have one, but its always worth having a backup in mind, especially if you are booking a long way in advance, don’t stop looking for other venues, you never know hen you might need them.If you have any questions, tweet @chillfire and I will see what I can help with
Saturday, July 02, 2011
dev4good day 1
Day one has been a great day for learning!
The 3 charities all came to us with completely different problems.
Hope and Play (www.hopeandplay.org) were looking for a way to locate and manage resources. And allow other charities or people to do the same.
The Ministry of Stories (www.ministryofstories.org) are looking for a way to get more young people writing stories and publishing these to the world. All while helping to generate a little more cash along the way.
The Design and Craft Council (www.craftanddesigncouncil.org.uk) want to be able to automate their awards processes
For me one of the big worries about the event was how to get the teams to work on all the projects.
Fortunately after much post it noting and milling about, the teams magically built themselves!
Then came much discussion and planning
Then the internet and wireless connections started to fail our multi user downloading of updates/platforms/frameworks. So much so that one of the teams retired to the pub next door to use their wireless (well that’s their story anyway)
More pics from day 1
http://www.flickr.com/photos/64749203@N03
Its been a great day and there will be more code and frivolity tomorrow.
Wednesday, June 22, 2011
These are not the mind waves you are looking for
A few weeks ago I was watching the ‘Best if the Gadget Show’ and one of the task they showed was how they controlled a gantry crane with nothing but the power of their minds.
This was in my mind something straight out of the Sci-Fi shows I watched (and still do) as a kid.
This coincided with me trying to find some cool kit for the volunteers coming to dev4good (www.dev4good.net), we had the Kinect, we had the MS Surface, mind control was definitely on the cards.
Two days ago my Neruosky Mindwave arrived, queue the Star Trek theme tune.
Out of the box
Un Boxing the toy was easy, getting the sticker off their USB dongle was tricky. Unboxed there is not much to the system.
A weird headset similar to the one used in universal soldier (maybe there is a hint of irony here) and the aforementioned USB dongle.
That it I thought, this is all I need to control the world?
I did need a single AAA battery though.
There was also a CD, installing this gave me the option to install the latest software which was 400mb…
The headset is fairly lightweight and feels fairly solid, although not sure about letting the kids use (as the pictures on the box show).
When its on your head, it feels a little odd at first, its not something I would wear in public, at least until I can get my Jedi mind tricks working to make people forget they saw it.
I am guessing the positioning of the main contact and the forehead pad is important, but it does feel weird.
Install
Simple, just agree to the Licence and its off, took about a minute and half to extract.
Plug in the dongle when told, 30 secs later and MindWave manager opens and asks you to add put a fresh battery into the headset.
Once on it auto searches and pairs itself to the headset and tells you the serial number.
Up and running
Once installed the ‘App Central’ application kicks off
and the mindset becomes active.
Using mind control in the real world
Okay its all a little more grey than I thought, there is a great set of free apps/games installed by default. But while playing them you never really know if its you actually doing anything. This I think because you are not interacting with things in the same way.
When I type on a keyboard, I can feel what is happening, I am thinking a millions times faster than my fingers can type – but I know that its me that is doing it.
Sounds strange, but the mindset reads you brainwave and there are you you use for most of the games
- Alpha waves for relaxation
- Beta waves for focus.
But as I don't know how to control them, its a ll a bit hit and miss.
I guess the more you use the hardware and apps the more you understand how your own brain functions.
Now all I need to do is find an application I can use this for!
good place to start for developing against the mindset
- http://developer.neurosky.com/
- http://thinkgearnet.codeplex.com/
more to follow as I start to code my world domination platform up"!




