Apps Business programming

BabyGroup Tech Journey

So here’s a little behind-the-scenes on one of SA’s newest e-commerce shops, BabyGroup. This has been a really great project to be involved with so it’s nice to be able to share a little on the journey. It’s also one of the few that are not “top-secret” so I can actually share some detail on it. Ha!

The journey:

BabyGroup started with the usual preliminary pre-project engagements and project proposals during August/September 2012. In that time, over a series of high-level discussions, the vision was explained with a view to understanding the technical requirements, all leading to the ultimate appointment of yours truly to head up the technical side of the project commencing October 2012.

We opened doors 1 May 2013, 8 months later (we did some soft launching before) with full ecommerce and online creditcard payments with 3D Secure (yes, there was some small delays, both real-world and technical with regards 3D Secure).

So what happened in that 8 months:

We designed the aesthetics of the site and put together the 60+ page template designs required for launch

We iterated through the site’s workflow, with a focus on the basket checkout process and making sales (ie, UX)

We picked out an ecommerce/cms platform to serve the base of our needs

We architected integration points and highlighted custom code requirements to meet some of BabyGroup’s unique requirements

We implemented all of the above

Outside of that, in the real world, offices need to be setup, with warehousing, and stock needed to be bought. Photos needed to happen, marketing needed to kick in, basically- a LOT needed to go down. I, however, focused on the site architecture, implementation and roll-out.

And to do that, I had 1 resource, me. But this is an area I thrive in. Full-stack development, with a handle on the full life-cycle.

I chose Kentico CMS as the base platform because:

it’s an ASP.NET solution and I prefer the predictability of strongly-typed systems where the complexity is expected to explode. There’s a lot that can be said about that, and it would stir up a debate, no doubt, but in the end, I needed to move on a platform I could do gymnastics on. And the trusty Windows Server, SQL, C#, ASP.NET is hard to beat in that regard.

But I didn’t have any Kentico experience at all. In fact, I had far more Magento experience at this point. Well, it was probably my experience with Magento (and PHP specifically) that motivated my decision to go Kentico/C#. Read what you will between the lines *wink*.

If you would like more information on Kentico CMS as a platform option, I would strongly encourage you to visit their site.

I also chose Azure as the hosting provider. Not because I had experience with it, in fact, my experience with Azure at the start was very limited, but I could see (and not from reading the headlines of pseudo-tech-journals) the promise it held along with some of the successes others were having.

Both were very steep learning curves. Again, something I love tackling.

Looking back, this was a perfect project for me really: I had 2 brand new technologies to master, I needed to code fluently in C#, integrate with several unknown APIs, do some HTML/CSS wizardry based on a PSD file, add in some funky Javascript in places (I even sliced some images in Photoshop.. oooo *hahaha*) and do all that asap, based on a Word document (with a lot of Visio diagrams). Love it!

We changed strategies en-route (several times) and stuck to the plan of planning to change when we need to. Again, something I absolutely love about programming and software. The environment is very fluid, the ideas are flowing thick and fast but budgets need to be honoured. A lot of this really was due to the sheer hard work and brilliance of Henri and James, the Jedi masters behind it all, who have taught me heaps about real-world business.

This is also something I love about programming in startup environments. The mind-share with and interaction with the business side adds a very real dynamic and pressure to the software side and keeps it real. Yes, you can get all fluffy about a lot things inside coding with design patterns and performance and unit testing and strict iterations and planned releases… but there’s a point where the bone meets flesh and the only thing that matters is what’s happening on the site, live, right now.

And this takes discipline. It doesn’t mean you throw out good practices and take shortcuts. If anything, you specifically avoid those oh-so-tempting shortcuts and don’t make decisions that’ll bite you in the ass later. It just means that at times, you put your foot down, drink a double espresso and make it happen. Even at 3am if you have to.

Yes, we have full unit testing on all custom code (and still running green). Yes, we have a development environment, a fully hosted quality-assurance environment, a pre-production environment and a live production environment running on the cloud. Oh yes, we do. Excuse me while I high-5 myself here quickly.

Since launch, we’ve had some great sales, the site has been acting nicely, the custom integration points ticking over neatly, all paying rent and everything, for the most part, sweet. Yes, we’ve hit some hurdles and had one or two oopsies, but nothing that can’t be fixed quickly and nothing that’s derailed us.

There’s still plenty new things happening behind the scenes and lots more coding happening. And the journey is, in true geekdom, tres cool. Here’s to making it happen even more and, oh, if you looking for some neat (but not just your everyday type stuff mind you) baby-related products, BabyGroup is where you should be looking.

P.S. And if I sound a little like I’m gloating, well, maybe I am. I’m just proud of the work I have done and try to do. I love what I do and hardly work a single day. I’m not ashamed of that. Why would I be? Yes, I’m not perfect and make mistakes from time to time, just part and parcel of being human. But I do try my best to make right. And this project, like a lot of others (even those I can’t talk about) have been such a blessing to be a part of, it’s hard not to sing and dance about. So, here I am, singing and dancing….


Get Out Jail Free

Every once in a while, you get a randomly odd idea (thanks, @brentone80– like this one: DeadGranny. It might seem shallow, but not so actually. It was also relatively quick to code and more fun to play with. It actually solved a real-world problem too; which is a bonus. And soo…

Ever get stuck in a awkward situation where you need an escape- and you need it fast- but you need a catalyst to spark off your rescue? Maybe you’re stuck in public transport, listening to some random citizen with bad teeth and equally attractive halitosis chew your ear off about a personal drama of theirs from 1979; or the conversation is just plain inappropriate and you’re the odd one out; or you’re in a meeting that doesn’t know how to end? Trickiness abounds. That’s when you need “DeadGranny”.

All of a sudden, your phone starts ringing. You casually glance down to see who it is. (It’s not outright anti-social just to keep a tab on your phone.) Cue your drama skills. Look worried. Interject with a “Sorry, I’ve been expecting this call”. Answer the phone. Look even more worried. “What?! When?! Ok, I’m coming now” Put down the phone and excuse yourself. If you’re asked what’s up… well, the rest is up to you.

So how does DeadGranny work?
First, you need to activate DeadGranny mode. You can do this by clicking the “End Call” button when your home screen is showing. You will notice the wheelchair icon appear. You are now in DeadGranny mode. To set your phone back to normal, just click the “end call” button again. The wheelchair icon will disappear. Simple.

Now to activate -and control- the ringing on your phone. Click the “back” button 3 times (while in DeadGranny mode) to activate a call. You will hear an anonymous tone played 5 times. If you want to repeat the tone, press the “back” button 3 times again. Repeat as often as you need to.

Simple. There are no configuration screens, icons or settings. It operates discreetly and with a bit of practice, you could even get this going without looking down at your phone. If you use a BlackBerry you are probably more than capable of using it blindfold.

It’s as simple as it needs to be and no simpler. How effective it will be is largely up to your convincing display of drama 😉

Available on AppWorld


zaFinApp Update

zaFinApp got some love this evening with an added feature to the loan calculations: residuals. As a result of the residual calculations, a simplified Future Value calculator was also added.

Enjoy the updates and thank for all the suggestions over email. More coming when I get a chance!

zaFinApp is available here. You can also download a version for your desktop (requires Adobe AIR).


EPIRB, A Personal Emergency Beacon

GPS utilities for your phone are becoming pretty useful (and popular) so I’ve added my app into the mix- I hope you find it useful too. More than that, my wish is that it one day saves a life. Other than that, my hope is that it gives you peace of mind in a not-so-safe scenario.

I’m putting this here because even though it may be obvious, it’s not. EPIRB (your phone) can quite possibly fail you in your hour of need. Don’t think that this ONE single application (or your phone) is all the safety and security you need. It’s not. Even when you climb mountains with brand new equipment, you never just use ONE rope. That’s just asking for trouble. ALWAYS have a PlanB and ALWAYS let somebody know in the real world where you are, what you up to and where you going.

If you know all about EPIRB already and just looking to download it, you can go straight here.
The basic idea is this:
Before you set out on a journey, make sure you have some emergency contact numbers listed in the application. You can also optionally set an Estimated Time of Arrival (ETA).

And then off you go.

Now the part comes in your journey when you get into trouble. There’s roughly three kinds of trouble you can get into:

1. A bad situation but you are still able to self-rescue.
2. A pressing situation where you still have the ability to call for help (make a call, send an SMS, push a panic button) but your interaction is quite limited.
3. And then there’s the really bad situation where you’re completely incapacitated (or separated) from any form of help whatsoever. This is also why you need a real-world-contract in place and tell people around you what, where and how you doing your journey.

Given those situations, how do you get help?
1. In the case where you self-resuce, it’s all good. No need to panic. You usually contact people AFTER the event to let them know what’s going on. You might want to alert them that you’re in potential trouble and to be on standby.
2. You’re limited in your ability to call for help, but you can at least press a button. With EPIRB, all you need do is press MAYDAY. This will immediately start sending off an SMS to each emergency numbers listed with your last known GPS location. Once you’ve pressed MAYDAY, you could try phoning (if you are able to) or just focus on getting yourself out of the situation. Keep in mind, your emergency folk will usually try to phone you to find out what’s going on!
3. You’re completely unable to call for help. This is usually quite bad. However, if you fail to inform the application that you’re OK (i.e. you have exceeded your ETA) it will start sending out WARNING SMS to each of your emergency contacts. EPIRB will call for help when you can’t.

Of course, this does not cover 100% of all situations, or 100% of one. It should hopefully cover what you need and assist. It’s just a tool to cover a gap that can be covered.

Of course, after a MAYDAY situation, it is also important to let everyone know that you’re OK. This is easily achieved by deactivating the MAYDAY and all your emergency contacts are notified by a once-off SMS that you are OK. And then another feature of EPIRB is not accidentally pushing the panic button (how many times have you done that before?). EPIRB has a simple safety pin designed to avoid accidentally setting off your emergency peeps into a high state of alert and panic.

So, with a simple and effective application like EPIRB, and a little planning, you could make sure someone’s got your back **just in case**.

1. Does EPIRB use any data? No. Not this version.

2. Will EPIRB cost anything to download? No. I’m making this available for free for a lot of personal reasons.

3. Will EPIRB cost anything to run? Only in emergencies will it start sending out SMSs. You control just how many though (number and frequency). Considering your life’s at risk, the last thing you need to worry about is a couple extra bucks in SMS.

4. But what if EPIRB never switches off after being set in an emergency (lost/stolen phone)? Tricky. At the moment, it will just keep sending SMSs until you run out of battery life. Not ideal. If you have some suggestions, let me know.

4.1 Does this integrate with my BBM? Not yet. Working on some memory issues and ensuring some robustness around the BBM integration for OS6+.

5. Why does the UI look so .. erm.. plain? I prefer simpler UIs because they draw less resources, have fewer code (read: “latent bugs”) and they’re less likely to “date”. In addition, for EPIRB in particular, the light-yellow/orange contrast has been used so you can easily spot the difference in glaring sunlight when you only have but the wink of the eye to make sure your MAYDAY is ON.

6. Is there an online-tracking version? You bet. That version is, I’m happy to say, very stable and just about ready to hit the wide wide world. Watch this space…

7. I like what you’re doing- how can I get involved? Easy. Just contact me.

8. EPIRB rescued me- how can I repay you? Pay it forward. Do good and help a stranger. If you don’t know where to start, get in your car right now and go buy somebody who really needs some food, a nice meal.

9. I used EPIRB wrongly and now it cost me a couple bucks in SMSs- how are you going to reimburse me? I’m not. Sorry. The app has been given to you for free in good faith. If it didn’t work for you, it didn’t work for you. It works just sweetly for me (and mine) is all I can add.

Yeah… eye candy; although, not a lot of candy! 🙂
When starting EPIRB, this is what you’re going to see:

Once you have a GPS signal and we’ve managed to get a fix on where you are, the screen will continuously update with that information. It might look geeky, but it’s amazing what your mind will remember in a heightened state of anxiety- and what you can do with that information so there’s no hiding that from you:

With the settings, you can set a pseudonym (or your real name- or a race number if you’re racing) which is used when an SMS is sent out. You can choose numbers from your phone book or just type in numbers to add (like a race organizer’s number, your local community police station, traveling buddy…). You can also set how frequently you want the MAYDAY flare to be sent out.

Then of course, the main screen- MAYDAY. Once you’ve clicked MAYDAY (and released the safety pin to prevent false alarms) you can let your phone get on with updating emergency folk about where you are and get on with rescuing yourself (if you can).

You can explore the other features, ETA and a little “Where am I?” menu option which will open BlackBerry Maps with your last known location. From there, you can send it by email, BBM, MMS and so on… So EPIRB is more than just a simple panic button- but it does try to be as simple as possible. Oh, and to download, point your BlackBerry here