DDD Perth: Lessons learnt


MapDDD Perth was held last weekend in, you guessed it Perth, a sleepy little city in Western Australia. It still makes me smile when sharing with overseas friends that they don’t quite understand the size of our beautiful country.
It’s a 45 hour drive, or a 5 hour flight from Brisbane to Perth. The flight is relatively short in comparison to my travels to USA, UK, Europe or Russia, but still a little longer than than travelling to New Zealand.

The conference was amazing, you only have to check out the twitter feed or the DDD Perth Flickr to see what went down, but there were some important lessons to be learnt.

Double check all numbers before transferring money

As sponsor for the after party, I had to transfer funds to ‘My Place Perth‘ (great place to visit by the way, especially on Karaoke night eh Lana!) since the Heritage Bank app does not allow you add new payee’s (for what reason I will never understand), the browser had to be used, navigating a bank web site on an iPhone 6 Plus is not the easiest thing to do. Attempt #1 – add all information, wait for SMS from bank to finalise the transaction, go to messages screen to get the conformation number, switch back to web browser and catch the ‘back’ button, therefore wiping out all data added! Attempt #2 – add all information, again wait for SMS from bank, carefully swap between message app and browser and enter code. All this time having a friend read back the account number and BSB to send to from a pdf invoice received on email. Celebrate the small victory of getting this far, then email a copy of the receipt to venue. Happy days! though short lived!  The owner of My Place gently advised that when she had checked the receipt it was apparent I had entered a 6 instead of 5 in the account number! GAH! So in order to keep the peace, I paid the invoice again, this time via my card. It was not a small amount, and then I had to go chasing the banks to see where my original payment had gone, however, that had to be a job for Monday since banks (for some reason) don’t work Saturday nights. After a number of calls on Monday, I was quietly assured the money will bounce back to my account sometime in the week.

Don’t leave things in your hotel room

The morning after a big party, my brain was not yet firing on all cylinders, 6am and time to get ready to head to the airport. I remember so vividly putting my Bose QC20 headphones (the only noise cancelling headphone I recommend for long flights) on the back of the chair, then noticing they had fallen off, thinking to myself “don’t forget to pick those up”.  I arrived at the airport with that niggling feeling, you know, the one where you think you have forgotten something. First sign of a bad day in progress was the ‘Priority Check-In’ taking longer than normal check-in and bag drop, this is not a usual thing, in fact the service provided by Virgin Australia is the main reason I continue to fly with them on as many trips as I can. Finally, I checked my bag and headed to the Virgin Australia lounge looking forward to some breakfast before the long flight home (which was actually shorter than the one over, but seemingly longer because I had to add 2 hours back on the clock). Lounge closed! WTF, after a quick tweet, Virgin Australia confirmed – no lounge on weekends in Perth! Okay, off to the coffee shop for a sandwich. As I sat wondering why I had that feeling, it struck me, NO, I DIDN’T!? but of course I did, the headphones were still sitting under the chair in the hotel room. I remembered I had just received an email with the settlement account from them, so I replied straight to that advising exactly what had happened and where they were. Boarded the plane and headed home. Monday, nothing from the hotel, so Tuesday morning I rang, a brief chat to house keeping explaining the whole story and I was promised a call back. A short 15 minutes later I got the promised call. “Sorry Mr Usher, we checked and there is no sign of your headphones”.  Oh well, it’s my dumb mistake anyway, but I don’t understand why they were not found. In the meantime a survey email came across my desk from AccorHotels and I took the time to share my thoughts with the COO of the group.  Approximately 30 minutes after my first call from the hotel, a lovely lady named Heather, Housekeeping Manager, called and advised my headphones had been located, yay! I’m not going to go into details here, but in short they ‘turned up’. I received an apology for the late reply to my Sunday email, and to the time it had taken to find them, I also received an email from the operations manager in Perth again apologising and confirming a policy review, hmm. My faith in AccorHotels restored, and my trusty Bose QC’s making the journey (albeit alone) back to sunny Queensland.

Don’t use the phrase ‘guy’ when you meant ‘guys & gals’

Cq1AIj7UAAApeOi

Before the conference I had sent a tweet to a couple of high profile people, namely Pip Marlow – Microsoft Australia MD, and Richard Branson (wonder if we can get that Lounge policy changed?), in support of women in tech, I am a strong advocate that more women should be involved and find it too dominated by men! After being heralded in the opening notes for my push (thank you Pip for your feedback, it’s a shame Mr Branson didn’t weigh in on the subject), I made the faux pas of using the singular, masculine phrase ‘guy’ during my talk. Thanks to Michelle for pointing that out publicly!

T1

A big weekend, well done to Rob Moore, Jake Ginnivan and the team for pulling everything and everyone together. I met some fantastic people, made some great new friends and some important lessons learnt, but all’s well that ends well.

 

Inbox:Zero


Over the years, I’ve subscribed to a number of different productivity philosophies. Being in the IT industry has meant adopting and then tweaking certain aspects to meet my needs. There has to be a balance between productivity pirates (emails, sms messages, Skype, phone calls and other notifications) and providing a response service to customers or even peers. Jumping from coding in one project to helping debug something else, or provide phone support and then straight back to what I was doing has never been an issue.  One thing that I am almost OCD about is having my inbox(es) at zero unread messages.

Before you go clicking away from this post thinking I’m a raving lunatic, or that I only have one account to consider, let me explain. At the time of writing, I have five email accounts, all with some form of activity each day. I can read/reply to any of those accounts on any of my devices, iMac, Dev PC, Phone, Watch, iPad Pro, iPad Mini, Tablet. I do believe it is an important point, having all devices in sync. Next, I’ll share some of the ways I manage my days and inboxes and other tools I use to achieve my goals.

Notifications are not a distraction. I find desktop notifications quite useful, as an email is received, I can glance and determine in milliseconds if I need to deal with it, I don’t need to break away from the focused application to go looking in the inbox straight away. I then have specific times in a day where I will go back to my inbox and deal with *all* the unread items. I do not use folders, categories, flags or other tools inside my mail programs… why? Because I have found in the past, different applications do their own thing and create more problems. Now I’m starting to open Pandora’s box, different applications? Even on the same machine I have found I switch between different versions of email clients depending on a) my mood, b) the quality of the version c) the operating system. The mail accounts I deal with are Gmail, Office 365 and hosted Exchange. Depending on the machine I’m on, I will switch between Mail (OS X), Outlook for OS X, Outlook (Windows), Browser, Mail (iOS) and Outlook (iOS). As a developer I will often run beta versions of operating systems and other tools (like MS Office).

Back to dealing with the unread mail. Years ago I was taught a principle of handling every piece of paper that came across my desk, I’ve applied this same technique to email for as long as I can remember. It’s a simple yet effective method: D.D.D.D.

Do It : just get it done, write the reply, or do the required action now.

Dump It : the delete button in your email client is the most used button by far. Don’t be afraid to send it to the trash, if you think you may want it later on, then date activate it, but don’t procrastinate.

Delegate It : if someone else can deal with this, forward it on, delegation is a good thing. It sometimes pays to date activate it also in case you need to follow up, but don’t leave it as ‘unread’ for that reason.

Date Activate It : this is probably the most important ‘D’ for me, it allows me to move the issue into my task management system where it can be triaged and I don’t have to spend any unnecessary time thinking about it. You may think that at this point all I’ve done is move the ‘unread’ somewhere else, which technically is true, but now I’ll explain how I manage my day to day tasks.

The problem with looking for a personal task management system is the time you have to invest to determine if it is the right one for you. To be fair, you should run the tool for at least a month to put it through it’s paces. That is a huge investment in time and sometimes money, then you have to move all the data (often rekeying from scratch), all of which is costing you precious time, the very thing you are trying to save. I think, especially on a corporate scale, quite often, a product is found and people are told to use it without due diligence being performed. There are a lot of products out there from good to great, personally I found many overkill especially when I wanted a tool for me, not the company. I’m not going to turn this into a product review, simply to say I use and prefer Todoist. It is a powerful, yet simple product that provides everything (with exception of Kanban) that I want. I particularly like the ‘karma’ feature to help drive me forward.

Let me tie this back into the zero inbox principle. If I have an email that requires attention or work, I forward it to my Todoist email address. Imagine the process, 100 unread emails in my box

Begin loop:

  • read mail
  • apply dddd
  • needs action
  • forward & forget

Move to next mail item

It is that simple, and I can do that on any device. Once inside Todoist, I have a daily task (recurring tasks are amazing), “triage inbox”, that simply means date activating and assigning the task to a project. Then on the day, I deal with the email/task. Nothing gets forgotten, my email client isn’t showing unread mail that I know I’ve read but keep flagged because I don’t want to forget.

At the end of each day, I ensure all tasks for the day are dealt with, anything I have not finished (or cannot finish) I put to a day I know I can, ensuring my outstanding list is zero.

I cannot take the credit for the principals used in my daily routines, but I would like to thank Brian Tracy and Gary Ryan Blair for their mentoring, and amazing work they do.

 

 

 

I’m DXcited !


And so begins a new chapter…

Evident in the pages of this blog is my passion for cool tools, with a definite bias towards the DevExpress tool set. Well today, I am proud to announce that I loved them so much I joined the DevExpress team as a Technical Evangelist for Asia Pacific. In other words I get to tell lots more people how cool the tools are 🙂

There is so much happening in the developer community at the moment, such as Windows 8, Surface, Mini iPad, iPhone 5, DXTREME, DXv2 12.2, its a great time to able to share my knowledge with people and help teams prepare for the next big phase in our ever evolving industry.

So does this mean the ‘Keeping IT Real’ blog will stop ? – NO, it may be quiet for a little while, but there will always be something to talk about. What I would encourage you to do though is also frequently visit my new blog home… DevExpress.Paul

For those that haven’t heard it mentioned yet (where have you been hiding?), check out the new DXTREME product suite introduced on September 17th, it is one of the coolest things to hit your IDE since CodeRush.

I plan on doing a couple of discovery videos to help demystify multi-channel development, so stay tuned.

A big thank you to all those people who have helped me reach this DXciting new chapter, and a definite big thank you to Dave Mendlen for the chance to work along side some of the smartest, geekiest, coolest people on the planet !

Paul.

110% DX ? DXTREME


Before everyone starts messaging me and telling me 110% is not possible, just listen !

For weeks I’ve been watching the countdown over at DevExpress promising to announce something cool.

Well tonight 6pm AEST all was revealed – DXTREME

In a nutshell, 3 tools in 1 – developing rich cross platform applications, and it looks amazing. Simplified codebase, clever wizards, deployment via QRCode (for testing)

There is no way I can do justice to what is being shown, so instead, head over to DXTREME and watch the announcement video.

I can’t wait to get my hands on the product to use a single environment to create my next iPad project that compliments my 100% DX WinForm app !

Relevance people !?


Ok, I understand there is money in advertising, I’m ok that some sites are funded purely by these funds. But shouldn’t they be relevant ?

On a recent visit to VB.Net Forums, I was greeted by some “older woman” in a skimpy black top, breasts prominent, pained look on her face with a caption “Meet older woman for dating”, ignoring the grammatical issues, I found it difficult to see the relevance of the advert on a tech site, I mean, “hmmm.. I have a coding issue, so lets go ask for help, oh, and whilst I’m there why not see if I can find a love interest as well.”

I think it would be much more appealing to see ads targeting the specific audience, tool vendors, training courses, gadgets and such. Since the site is aimed at developers, I’m pretty sure we all know how to use Google to find dating sites if we wanted to !

Relevance people !?

What? You mean I have to *Pay* for that?


I was answering posts in a community forum on the weekend when I came across an entry asking for help to build a data grid. The requirement was complex. The poster had expressed at the time that the functionality needed was available in a 3rd party control, but did not want to spend the money as the price was too high. On investigation he could have spent as little as $895 for the suite of tools. I just don’t understand the mentality ?

If you are working on a commercial piece of software (defined here as software that you are being paid to write by virtue of wages, contracting or future sales), then do the math…

NOH x YHR = VOT

So, Number Of Hours for you to write the tool you are looking for, multiplied by Your Hourly Rate equals Value Of Tool.

Take a basic data grid with grouping, sorting, binding, totals and some nice UI, I’m pretty confident it would take more than a couple of months to get right, but even if we said 4 weeks, or 152 hours, at a nominal rate of $25/hour (who works for that rate?), you are still looking at a cost of $3,800. So the cost of $895 is looking good.

Lets work it back the other way… $895/$25 hr = 35 hours, could you develop what is on offer for that?

Or (based on my estimate of 152 hours) $895/152 = $5.89/hr

I understand when buying tools we have to find balance, but I find it ridiculous when Devs expect everything for free.

There are some great tools out there (my obvious preference being DevExpress) and these companies put a lot of resource into making our jobs as easy as possible, lets show some support and appreciation, if everything became open source no of us would have a paying job.

100% DX – XtraReports : bye bye Crystal, sorry ActiveReports


What’s the first thing that comes to your mind when I mention reporting? Crystal? ActiveReports? I have used these and others on numerous projects, but then I learnt about Developer Express XtraReports, lets see if XtraReports can make it into the 100% DX range…

For a full run down on all the cool things you can achieve, check out the Developer Express web site, this post is about filling a need, quickly.

As part of the RetailOne Connect system, we needed to print a purchase order, nothing complex, just a nice looking report that can be updated from time to time. It was important to be able to export as a pdf, and generate the document quickly.

The report designer was just as friendly as expected, with a drag drop approach for fields, or a nice selection of other tools available in the toolbox,

Creating bands is a simple right click, inserting sub reports just as simple.

In the case of R1, I didn’t need any scripting or code behind, but I couldn’t help having a play first.

What really surprised me with the ease of implementing in the code:

A complete preview version of the order could be generated with as little as:

Dim report As PurchaseOrder = New PurchaseOrder()
report.DataSource = db.OrderSummaries.Where(Function(p) p.OrderID = OrderID)
report.ShowPreview()

The preview window has an amazing amount of options available, page layouts, colours, watermarks, export to PDF, JPG — you name it !

And a quick send order as PDF via email client was a matter of:

Create PDF from report:
Dim path As String = GetTempOrderPath()
Dim report As PurchaseOrder = New PurchaseOrder()
report.DataSource = db.OrderSummaries.Where(Function(p) p.OrderID = OrderID)
report.ExportToPdf(path)

Create Email with attachment:
Dim mail As SendFileTo.MAPI = New SendFileTo.MAPI
mail.AddAttachment(path)
mail.AddRecipientTo(Supplier.Contact, Supplier.Email)
mail.SendMailPopup(String.Format("Purchase Order {0}", OrderNumber), "Please find attached purchase order.")

For me there is no choice now, I will be sticking with XtraReports in all our projects. When I do a more complex layout or code behind I will do another post and report my findings.

My only complaint is that they don’t offer a version for Objective-C …. maybe in the future?