Getting to know my customers

JFDI…

Since I started out with GoVJ , there has been one thing I’ve been meaning to do but for one reason or another I’ve put off. That has been surveying, and obtaining some qualitative information on my potential market and customers.

There are a few reasons I haven’t done this. Time, unsureness about what questions to ask, fear of putting my head above the line and talking to people, I already knew my target market, I was a user myself… the list can go on, but it all boils down to not really wanting to experience a little potential discomfort.

So, to kick off 2017 I decided it was time to get into it.

GoVJ Survey January 2017
GoVJ Survey January 2017

Survey Monkey is free for up to 10 questions. It seems to be the go-to for anyone who wants something doing quick. I know it can make research professionals wince for various reasons. For me it was ideal though, it’s quick and easy and lowered my bar to just ****ing doing it.

I wrote out my 10 questions, and then got a good friend of mine, Liam, to sense check and validate what I had wrote.

A little help is an awesome thing

If you want to get anyone to click through to something online, a picture is pretty much mandatory.

Liam is a kick-ass motion graphics artist, and also a dab hand at design. He knocked together a call to action graphic for me that took my app’s icon design and turned it into a megaphone. Whilst I’m capable of making my own graphics, I am often in developer mode rather than designer mode. This helped me just get the survey out without procrastinating. I’d strongly advise developers without the skills or time, to outsource this sort of work.

GoVJ Survey Call To Action
GoVJ Survey Call To Action

Using this graphic, and a simple call for participants. So that I could give something back to people, I combined this with reminding people that they can get some free video content if they sign up to my mailing list.

GoVJ Facebook post and call to action
GoVJ Facebook post and call to action

This was sent to two groups on Facebook, reddit, and I also sent an email out to my mailing list (~150 people) that I had built previously when launching the app.

So what happened?

I was really heartened with the community response. I’ve received 70 responses within 3 days. Whilst it’s unlikely to ever get enough responses in a niche like this to reach a high level of statistical certainty with any insights or conclusions, this is enough to give me some good indications.

There are some early insights I can see from scanning Survey Monkey’s graphs and summarisations:

  • A future macOS product serving the same niche might be a valuable use of my time.
  • There is a narrative in terms of how people are using iOS along with Macs, and their use of PCs also.

I believe I shall need to keep an eye on the market, and having presence on windows UWP might be worth considering in future. Prior to this I had considered Android as being my next best step at diversifying and expanding what I serve.

I plan on exploring this data further later on this week and that may be the subject of another blog post.

Friday links – 02/09/2016

This week’s Friday links contains comic book industry rants, views on management, the future of apps, and trips to Mars…

Die Industry, Die! 

Jude Terror writes about pre-orders and the state of direct comic book industry publishing today. I remember when things changed in the 90s, but I had no idea how this change affected my local comic book shop.

After reading this rant, I wonder if there is a space for a kind of “bandcamp.com for comic books” for independent comic book publishing. I imagine a world where digital publishing is the default, and print-runs of trades or individual issues are closer to the vinyl-releases that bands do for their fans. In this way, maybe it could become possible for a creator to support their work on < 2000 “true fans”, purchasing their digital work for a monthly fee that’s much less than current physical comic book costs.

An open-letter to managers of women

Jason Shen writes a call to all managers to check themselves in their approach to appraising their staff. As a former manager, this rings a few bells. Despite agreeing wholeheartedly with the message, this has made me wonder whether I could have done things any better in the past.

6 scientists “return to earth” after a year in insolation

The crew of an experiment to simulate human interactions and living on Mars talk about the completion of their mission.

“A person can be totally cool one minute and severely annoying the next,” he said in an email. “The little things people do that you’d never notice in real life can make you think about tripping them on the stairs here.”

How to survive the future of apps

Kate Abrosimova writes about App Fatigue in users, chat bots and AI.

Server side Swift VS Everything else… 

Qutheory explore the speed of Swift on the server vs. Go, Python and several other languages. I’m interested to see how this looks in the future, especially with respect to Swift’s string handling speeds.

Friday Links

Friday’s here again. Here are some links, old and new but ones that have interested me this week.

These centre around coding, technology, development and gender:

This fantastic article interviews Genevieve Bell, an Australian anthropologist who works at Intel. She has some fantastic points of view on AI, it’s potential development and how that should include and involve much wider aspects of humanity. A wide level of inclusion across all types of people in this development feels vital to me, after reading this.

This article, published earlier this year, relays some research that looks into github activity and gender. Researchers found that code written by women was approved at a higher rate than code written by men, but only if gender was not known.

  • Sex, shoplifting and scares

    Becca Caddy writes for wareable on her experiences wearing a Mio Alpha 2 heart rate monitor. It makes for some interesting reading, particularly how long her heart rate stayed high after the shoplifting experiment.

  • Making a case for letter case

    John Saito writes an interesting article about how capitalisation can really affect the tone, look and feel of an application. For me I think this has relayed the fact that thinking through these things is important. Especially for applying a consistent ‘house style’ across a whole app and it’s website.

  • Hansel Minutes Podcast, interviewing Stephanie Hurlburt of Binomial

    This podcast has been the best listen I’ve had all week out of all the podcasts I follow. Stephanie and Binomial are up to very interesting work within GPU texture compression. I can see myriad ways that a better compressor, better translation formats, could help support the next wave of VR and AR applications.

Additionally I’m excited about the potential for cross-pollination with video formats and encoding themselves. This could lead to lower latency video for live applications, such as VJing. Obviously, having an app like GoVJ means I have quite an active interest in that.

I loved hearing Stephanie’s approach to development overall; just get stuck in, don’t be afraid of complicated things. I’d recommend this for a listen even if you’re not a GPU/real time graphics enthusiast!

A bit of a start …

Right now

I’m nearly two months into this ‘going indie’ / quitting-my-full-time-job-business and I feel the need to explain myself a little.

Right now, I am not fully ‘independent’ in the strictest sense of the word. My apps are selling, but that is not providing enough for an income. I’m working some freelance work, but some days of the week are committed to developing my own products and applications under roboheadz.

I think it’s fair to say that a lot of ‘indies’ are in this kind of position in one form or another. I don’t believe it is a bad place to be, either. Right now I am working on things that excite and interest me. Some of which pays me now, and some of which I’m hoping will pay me later on.

Back-Story

How did I get here? Over the last three years I have been building up to this point.

From the age of nineteen, I was successfully employed with the same company. A very big corporate. I had progressed from an entry-level position inputting data all the way through to a Customer Insight manager. My successes were in being able to analyse and work with data quickly and efficiently, build and design data warehouses for analytics, and communicate key insights to senior management. I had a lot of good years there and made some lasting friendships. It was not, however, where I had expected to land forever. The industry that the company was in was not one I felt fully enthusiastic for.

Late-2012, I turned thirty.  Ten years service had been and gone. Reaching the end of my twenties made me realise if I was going to do something else then I needed to get on with it.

I had a burning desire to create iPhone applications. In particular I wanted to create an app that would enable me to mix video in real-time on my phone. I used to perform as a VJ and I don’t think it has ever fully left my interests.

At this point in my life, I am married to a beautiful woman and we have two brilliant children. Time is scarce. I had also had two unsuccessful attempts to teach myself iPhone programming before, never managing to fully ‘get’ the concepts very well. The last non-database or scripting orientated programming I had done was hacking the doom engine source code in C back in 1998-1999.

So I applied a strategy. Every morning at 5 am, I would get up and put in between one and two hours teaching myself. I picked out the Big Nerd Ranch Guide and started at the beginning.

Six weeks later, things were clicking into place quite well. I started prototyping my own apps.

The road to shipping is long and winding

I came through the initial barriers in understanding and now I was capable of building applications. It was time to start building that real-time video mixing application!

… Wait. That’s kind of hard as a first app. There’s still a massive gap between knowing the basics and being able to build something that works well enough.

I’d like to chronicle the development of what became GoVJ in another post but things went kind of like this for over a year:

Build some prototype apps with some of the required functionality ->
Life gets in the way ->
Build some more prototypes that progress a little further ->
Hit some blocks in understanding/code/functionality ->
Loop Repeat ... 

My goals and hopes were feeling out of sight, despite the iterative learning  / R&D that I had been doing.

Easter 2015 I went back to early mornings again, I organised myself on what the app’s requirement for shipping needed to be (applying a ‘minimum viable product’ perspective ). A task-list was worked through, I brought friends and people from the wider VJ community in to beta-test. Things got that little bit more serious.

In September 2015 I released GoVJ.

As a niche app, and a first app, I feel it has been a pretty good success. I was never under any illusion it would make me loads of cash, but I wanted it to exist. I was just happy that it had sold to actual customers and it continued selling.

One app is never enough

Enthused by some basic success, I started work on HoloVid. HoloVid allows people to project any video or photo as ‘holograms’ on their phone, using a four-sided projector. There have been many viral videos on making these projectors out of thick clear plastic or cutting up CD cases. There are not many decent apps that enable you to use your own videos though, and most people end up just using demo videos from Youtube.

In February 2016, HoloVid was launched.

Whereas GoVJ had a scheduled launch date with a whole marketing campaign and activities to engage the online VJ community, HoloVid was a soft-launch. It has been an interesting learning curve with each.

Deciding to go indie

We had made concerted efforts to eliminate our debts over several years before, and to start saving money as a family. We had reached a stage where I could work full-time on my own products for 6 months without income if necessary. I had known for a while that a leap into the unknown might be likely and had been trying to align things towards that.

Meanwhile, my full-time job had been under threat of redundancy for several months. In the end my job was safe, but that disruption had cemented my desire to try to move into app development full time.

I started putting plans into motion, and set about quitting my job. It was nerve-wracking, scary even with a ‘safety net’, but ultimately a step I felt I needed to make.

Since then

After fourteen years at the same company, with no more than a block of two weeks or so leave in that time, I needed to decompress.

We have spent quality time as a family, taken a trip away, and I’ve attended to various DIY tasks around the house. I’ve been getting things in order.

I managed around three weeks of “no-work” before I started to get twitchy. So during July I have come back to working ‘normal’ weeks but working on my own projects for roboheadz.

This has been a learning curve in a short space of time. Already I feel like I have experienced some of the highs and lows that can come with a more flexible way of working. There have been moments where I have been unable to switch off, and blocks or problems in my coding work have invaded my home life in the evenings. I suspect that will be a negative I shall need to keep a close eye on.

On the positive end of the scales there have a couple of days where being flexible enough to say “it’s a beautiful day, lets go out as a family and code this evening” has worked out really well.

What next?

It will take some time before my own solo efforts produce an income that we can solely survive on as a family. I know I have a lot to learn still in terms of what it means to serve a broad customer base and to build a fully functioning business. This is still a learning period, and I suspect each month, each quarter an each year will be.

I have been fortunate enough to find good part-time work, that will help support our income whilst still providing me solid blocks of time to focus on my own thing.

There is still a burning need to get things off the ground sooner rather than later. If by 2017 things are not looking viable or successful in some way there are other decisions I may need to make such as contracting full-time, or returning back to the corporate world.

I plan on documenting this journey here as things progress.

AVAssetImageGeneratorCompletionHandler and Swift

Posting this here for my own probable future reference.

I’m picking up Swift in small bursts. Usually where I have a small screen that doesn’t rely on any of the Objective C based library I have within GoVJ.

I had a UITableViewController that I wanted to load thumbnails into from a collection of videos held as an array of AVAssets.

// Configure the cell

let assetUrl = demoContent.objectAtIndex(indexPath.row) as! NSURL
let asset: AVAsset = AVAsset(URL:assetUrl) as AVAsset
let imageGenerator = AVAssetImageGenerator(asset: asset);
imageGenerator.maximumSize = CGSize(width: 640,height: 480)
imageGenerator.apertureMode = AVAssetImageGeneratorApertureModeProductionAperture;

imageGenerator.appliesPreferredTrackTransform = true;

imageGenerator.requestedTimeToleranceAfter = kCMTimeZero

imageGenerator.requestedTimeToleranceBefore = kCMTimeZero

So far so good, everything is basically the same as Objective C.

I then create a CMTime value, that refers to the middle of the video file;

// Create thumbNail at middle of loop

let tVal = NSValue(CMTime: CMTimeMultiplyByFloat64(asset.duration, 0.5))

I then call generateCGImagesAsynchronouslyForTimes. I want to be able to chuck my thumbNail setting code into it’s block handler. This is fairly straight forwards in objective C, and I understand what I’m doing there in creating the block.

However Swift’s block formation eluded me, in particular the way ‘in’ follows the parameters and then you type the code you want to execute.

This is what I have now to set my thumbNails:

imageGenerator.generateCGImagesAsynchronouslyForTimes([tVal], completionHandler: {(_, im:CGImage?, _, _, e:NSError?) in 

if let img = im {
dispatch_async(dispatch_get_main_queue()) {
cell.demoContentThumbNail.image = UIImage(CGImage: img)
}
} else {
print("failed in generating thumbnail")
}
})

return cell

Through the eyes of a child

This weekend we upgraded my wife’s iPad. This meant that my older iPad 3 and her original iPad mini 1 were available for our kids.

They had been using 2012 nexus tablets. Arguably these were from a similar era to the iPads but they lag so much when doing certain tasks now. The iPads do too at times but nowhere near as much. It’s a statement on how well iOS9 can run on older devices perhaps but that’s besides the point of this post.

What was really awesome was setting up both children iCloud accounts, putting them on family sharing and being able to let them just explore their new devices and play.

My eldest was really pleased to be able to iMessage. Both kids spent a good while sending silly photos and picture messages to each other and me and my wife.

I started typing messages back from my Mac. When I told my eldest that was how I was chating he was amazed and had to check it out. We had a chat about how messages are routed through the net, and how it all syncs up on whatever device I’m on.

Log of chat
Log of chat

We played with FaceTime too, which he thinks is awesome.

The thing that really struck me, was seeing all this anew from a child’s point of view. The discovery process they went through with the UI and the capabilities of the device were all found easily through play.

The power of these devices to them is very much in the sharing and communication available to them straight away.

There’s a lot to be said for that.

Hello world !

Hello and welcome.

After much deliberation, I decided I would finally start keeping a blog. This will chronicle my thoughts on development, tech, business and anything else I choose to.

Thank you for reading,

Dave