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?

100% DX – CodeRush replaces ReSharper


The debate as to CodeRush or ReSharper has been undertaken by many people of the years, in fact prior to writing this post, I read through a number of older comparisons which put forth good arguments for both camps.

For me, it is part of the 100% DX campaign.

For years I was an avid user of CodeRush & Refactor! Pro (from here on the combination of products will just be referred to as CodeRush), but colleagues continued to rave about ReSharper. At the time I wanted to get more feedback on my code style so I decided to give ReSharper a go.

Initially I found the memory usage on ReSharper better than I was experiencing with CodeRush, the UI a little less ‘in your face’, but even after a month of experimenting with all the features, I was still becoming frustrated and getting ‘tripped up’ and therefore slowed down when trying to do basic text editing. Constantly being told that code the Visual Studio IDE had generated (click events etc) was not complying to the best practices was also annoying. The intelli-sense interaction was lacking, templates and code-gen cumbersome to setup.

So I decided to switch back to CodeRush. Now I understand not everyone thinks the high visibility UI is a good move, but I like the fact that things stand out when I want them to. Templates and Drop Markers are a heaven send, and the refactoring functionality gets a regular workout. For example, being able to type ‘CC’ and have a constructor created with the relevant parameters is great, I can select which items from my class I want to include and bam.. the code is there.

The CodeRush training window ensures I have context sensitive help through the learning curve.

But for me, the real time saver is templates. One of my co-workers once called me a ‘Template Whore’, I have set up a large number of custom routines that save hours of coding. It takes a little bit of time to get used to the myriad of options you can use, but persevere, you will make your time back ten fold.

Finally, but by no means least is the Refactor! Pro functionality. I love a refactor session after some hardcore development, and the features available make streamlining my codebase a pleasure not a chore.

Simple things like extracting code into a new method is simple:

If you have not yet tried CodeRush and Refactor! Pro, then I highly recommend you head over to DevExpress and download a trial copy, you won’t be disappointed.

iPoints available for sale


November 2009, I had just purchased an iMac and decided it was time to write an iPhone utility. Samantha & I were both enrolled in Weight Watchers and one of the cool things before eating anything was to see how many “Points” things were. Using the trusty $50 calculator purchased at a meeting you could enter the Energy and Sat. Fat content from the nutritional information panel found on most foods and be told the damage.

So I spent the weekend writing a cool little app that allowed me to calculate the same information on the iPhone. It was my first experience in submitting an App to the AppStore and allowed me to learn a lot about Apple. At this point the benefit of writing the App was to help my wife and myself on our journey.

Original App:

The AppStore process should go…
– waiting for review
– in review
– processing for AppStore
– ready for sale

If there are problems such as bugs etc, then you have to repeat the first two steps a few times, but I was confident.

Ha! My App was rejected, for possibly breaching Weight Watchers patents or trademarks. So I did some research, contacted Weight Watchers in Australia, there was nothing available on the Australian AppStore doing what iPoints would do. So after some correspondence between myself and a legal representative in Cupertino, iPoints was permitted on the Australian AppStore. Total time in process 4 weeks.

December Sales : 90
January Sales : 380
February Sales : 401

It was incredible to watch. Now there was no way I was going to get rich from this just yet, but knowing nearly 900 people in Australia alone were running around with my weekend project was cool.

Then a letter from Apple, basically saying Weight Watchers International have issued a take down order, blah, legal threats, blah etc.

I attempted to contact WW both Internal and Australia. Stone walled at every turn. They had nothing on the AppStore at the time, and I was offering to develop this thing further and share the profits, minimal risk for them. Nothing, nada zip. Not even recognition of my correspondence, I phone WW Australia and introduced myself only to be told “Oh, we are well aware of who you are Mr Usher”. Still no amount of discussion was going to see a joint venture happen, so I complied with the request and Feb 2010 removed iPoints from the AppStore.

Anyone who had purchased iPoints was allowed to continue using it, and I was still receiving emails from people all around the world asking for it.

The problem as this point was the $700 revenue for the program would soon be eaten up seeking legal advise, so I decided to cut my losses, but it has been a sore point ever since.

March 2012 – Friday evening, I was looking through my code archive and came across the iPoints folder, “you know what” I thought to myself, let’s redevelop it. So that evening and into Saturday, I updated the user interface, put a custom keyboard in place, changed the measuring units and added retina display support. Done. Submit.

I submitted the product as an upgrade so that the previous 900 users would get a nice surprise (free upgrade), but since the previous App had been removed I also figured there may be some hoops to jump through.

Well, this morning, some 7 days after submitting, I awoke to the cool notification that iPoints status had changed from “waiting for review” to “in review” to “processing for AppStore” and finally “Ready for Sale”

It’s always nice to wakeup to an App approval

This time on the international market, so let’s see how those numbers stack up.

Note: Points is a registered trademark of Weight Watchers International.

Evi – update sent for review :)


A new version of Evi has been sent to Apple for review, it will be available as a free update for all existing users. I was amazed at how quickly people jumped on the band wagon, the feedback from our initial release was amazing.

So, what’s new ?

– added support for landscape viewing on all screens
– added ability to delete files directly from Evi File Browser
– added ability to stop the ‘Sample Job’ from being created automatically
– added support for full description to be shown (no more truncating)
– updated artwork
– full support for ‘new iPad’ (crisp retina artwork)
– added ‘Jump To’ function which allows quick access to all HEAD1 entries
– added Labour columns when viewing in portrait mode

Landscape support was the most widely requested feature:

Keep the emails coming, lets continue the momentum and make Evi a well used, practical tool for viewing those estimates.

Living in the Now


A little while ago I partnered with Brian Tracy, Tom Hopkins, Dr Wayne Dyer amongst others to produce a book published by Stephen E & Lee Beard. “Wake up.. Live the life you Love” – Living in the Now. (details on Amazon)

It was a great opportunity to become a published author, created an opportunity for public speaking and has opened some amazing doors.

This book is filled with some heart warming stories about people’s break into a realisation life is now, not dwelling on the past.

I have a limited number of books left, and so I decided to offer it to the online community. Retail price is $14.95, but I will offer it at $7.50 including postage.

To grab your copy just send a $7.50 PayPal payment to paul@usher.net.au

Stocks are limited so be quick….

Remember, the only difference between you today and you in 5 years time is the people you meet and the books you read !

Evi heads off for review


48 hours from start to finish. Evi Estimate Viewer is our new application that allows users of Buildsoft Estimating (Global and Offsider) to view their estimate on the iPad.

Support for Paradox databases is sparse so we needed a format that was more iOS friendly. This was achieved by writing a little utility (Evi Estimate Converter). Isn’t it funny when you start with a simple idea how it just keeps growing.

The estimate converter had to support local (or network) Buildsoft data, but then we decided that it should be usable by people without the estimating software available to them, so functionality was included to handle the.E0X file as well.

Next the UI for the Windows application, it has to be easy and clean.

It was noted that the file size of the data was starting to get a little on the large size (2-4mb per job), so a review of the methods used and some cool compression was put in place…. Now between 20kb-100kb (Yes KB)

Obfuscate the binary and build the setup program. Finally build in auto error reporting, I prefer the options provided by Red-Gate SmartAssembly

Off to the testing team for their tick of approval. ( SSW Do you conduct a “test please” )

Now, back to the iOS side of things. Support for the data file needs to be flexible, so iTunes File Sharing, Dropbox and in App support (email etc) had to be built. The most frustrating of these was the in App support. There is a quirk when using the iPad simulator where URL support just works, however, when tested on a real device it fails. It turns out that the simulator does some behinds the scenes magic and will match the case of a filename, yes, match the case! An afternoon of frustrations sealed with an early morning (3am) victory.

Finally, another round of testing, followed by a PASS, and it’s time to submit to Apple for approval and sale.

Here are some of the screen shots from the final products.

.
— UPDATE : 21, Feb

EVI Is Approved ! available in the AppStore