[Highlight] User Returns

One of the things to handle when you have publicly available software out there is what the users’ response is like.

For Highlight 2, it was overall pretty warm and nice, except for 2 general things :

  • “I can’t scroll the window under Highlight” (1 star review) : Well… yes. A computer has windows on screen that take active user inputs, such as keyboard and mouse events. It’s really an either/or situation where there’s no way to determine if that particular time you wanted to click through or draw a point. Not to mention more modern OS feature some security features that specifically forbid and prevent your app to access another’s memory (and a window is part of the app’s memory). So… well, yea.
  • “It doesn’t work on top of Keynote” (2 stars review) : For reasons not dissimilar to the point above, this is currently not feasible. To get a little bit technical, it’s a matter of screen capture, kind of like in games. Basically, the app expressly states it wants the screen(s) for itself. Unless you have a way to insert yourself in the graphical pipe (through the graphics driver, for instance, which is how NVIDIA does it for its Shadowplay features, or through the graphical library like Steam), there’s nothing to be done. And as a small fry developer, I don’t think I will have any way to install a potentially harmful kext ( Kernel Extension) in the App Store.

Moving on to the things that made me laugh (and far more numerous than I thought):

  • “Why don’t you market it?!? I’ve never heard of it before today!” : Hmmmmm. I’m lazy, that’s all. I kind of want to see it have a life of its own. It’s not free, granted, but it’s clearly not geared towards massive profits… What should I do? post an ad? go talk about it on a show? Come on people, let’s be real :)

  • “Do you want to make tons of money with it? if so, please contact me” : See above, with more laughter.


[META] Activity Here

As you can see, I have started to update this blog more often than in the past… This is part of something I keep telling people who want to freelance/go indy, and I have had little time/motivation to carry on myself.

Being without boss means self-regulating every aspect of your life. When to work, when to relax and let inspiration come, when to immerse yourself in code despite all the distractions that are freely available to you.

Back when I started this blog, it was mostly a place to put some interesting tidbits about code I found during my projects that might benefit others, but over time, it became harder and harder to make snippets that would make sense outside any context. The various technologies I can credit myself for knowing intimately are not prone to simple 20 lines examples, and this led this place to have more and more empty time between posts.

Having gotten over the latest rush to have a product shipped, I decided to apply the discipline needed to work alone to this blog as well. I apologize in advance if some of the entries are bland – or completely uninteresting for that matter – but like with everything else, if you don’t practice something often and rigorously, you loose the aptitude and the momentum.

As a side note, getting motivated to do something is kind of a trick question in our line of work, as freelancers. It should be as simple as “I said I would do this” and do it. It might be hard sometimes, but put yourself a reminder that auto renews every so often days, and just do it. No boss means more freedom in terms of daily planning, but no one ever said it meant less work.


[MISC] Development Dance

Nothing new to developers but for some reason sometimes hard to grasp for the profane, the development dance is something that should be taught in schools.

In the mind of the non technical customer/boss, “development” is the process of going from nothing to a highlighted goal (specs, screens, that kind of things).

Most of the time, if you do a whole project with only developers attached to the process, for us code monkeys, it’s more like building something with Lego(s; bricks) : we build something that works, then iterate towards something like an ideal.

Cultural clash happens when the goal isn’t realistic from the point of view of the dev, but is non negotiable from the point of view of the non dev.

Which leads to the Dance : we take a few steps back on the goal, then a couple of steps sideways, then a few steps forward again.

Non technical people have to understand that’s the only way they can get close to what they want. Because the technical side is fraught with pitfalls, unwanted deadlines, miscomprehension, etc. Many a good feature started as a “what if?” coming from down below, only made possible because the foundations allowed them.

Going for a strict top-to-bottom approach gives you apps or websites riddled with bugs (because, as hard as you try, users will always use your work in a way it’s not supposed to support, or that you didn’t think of), and a strict bottom-to-top approach gives apps that are bland or ugly or without global vision.

Only a smart collaboration of the two can result in a decent product. Agree on key features, on a way the program should be handled in a way that’s considered normal, and fill the blanks as you go. That way, devs can geek out and build foundations that will handle anything and everything that they can think of, without having to fear you will change your mind once the hard work is done, and the non-techs can leverage the tech savvy to get something that will satisfy their itch of a beautiful, sensical product.

As with any relationship, concessions have to be made, and so far, the dominant culture has mostly been that developers don’t – and shouldn’t – have any input on the project, that developers are executants. What more companies get in return is a passive aggressive stance of “I’m going to do exactly what you asked, so that you can see it fail miserably”.


[HLT] Version 2.0 in the works

I have been so overwhelmed with work and system changes that it’s been hard to keep up with the Highlight maintenance.

But I’m pleased to announce this is officially over, I stopped slacking and a 2.0 is reaching the Release Candidate stage.

New features include on-the-fly screen changes detections, and text input (yes, you asked for it, you will have it)

Bug fixes include retina weirdness, and global shortcut fixes for Mavericks.

If you have some last minute requests or bugfixes to include, don’t hesitate to fill in a note in the bug/feature tracker


[Internet] The “Weird” Socio-dynamics Of Online Communities

I must admit, I’m a lazy dinosaur in this tech stuff. After one too many discussion about my relationships with people I don’t see very often (read less than once a year), I just feel like writing things down and pointing the next inquiry in that direction…


Yes, I used to hang out on IRC a lot. I still have friends I consider very close that I met online “back in the day”. I met people in my travel who I must say I am not keeping in touch with to the level I would like. But these are the most enduring relationships I have, to this day. Feeling closer to a random dude I’m having a conversation with on Twitter than to a random person I meet in a bar really is nothing new.

OK, so?

There are two main facets to the online relationship you might form with somebody. Most people who have little to no experience with that will focus on the negative side : it can be completely anonymous and the “person” you’re talking with may have little overlap with the human behind the keyboard. Extremes include complete impersonation (sex change, age change, skills change) for fun or profit. But the more positive thing is you can also often see the “real” side of someone, who’s hiding it most of the time because of his/her real life constraints. That includes the kid who’s so shy he wouldn’t even come to a bar, but can be Ragnarok-The-Viking-667 online and be really funny, knowledgeable and socially inclusive online. Depending on the kind of activity you are having, the drive to be a predator, either literally or not, can be made irrelevant. Some services and some games reward competition and jackass-ery online, giving an edge to the “evil” side of the coin over the benign one, but it’s far from being the norm everywhere.

Do you have data that supports this? numbers? because I had the totally opposite experience!

Not really. I guess I’m lucky or something. But I found that even in online games, within the confines of a group acting together, the tendency to appear bigger and stronger than everyone else fades after a while… Or maybe I avoid being in activities that encourage being solo, the top dog, or whatever. The thing is, in my experience, I tend to bond easily with people I’ve only ever seen type, or heard the voice of, some of which even became good friends and had or still have “real life” interactions with me.

When you think about it, “anonymity” or a partial one is key to a good therapy. You are not supposed to know your therapist beforehand so that you can talk freely to them. The kind of relationship that develops after that is up to the participants, but the initial point of entry is no assumption. And that can be very liberating to people who might feel left out for reasons of their own. Online, you can be whoever you want. Most people will settle down to be “themselves” after a while, which is not the social mask we have to wear in some real life circumstances. So why not give these relationships the shot they deserve? It’s not any weirder than forming a bond with someone you just met at work, in a bar, or a friend of a friend.

PS: that’s what “being lazy” means to me : you do it once, and then you don’t have to do it again ;)


2013 Update (So Far)

It’s been a busy summer. For all of you 5 readers that I still have and who check periodically for the end of the Ice Age on this blog, I’m sorry.

Of course, the main thing that happened is the release of iOS 7 and the imminent arrival of Mavericks, which kept us all very busy indeed. I’ll elaborate on that later.

But beyond this upgrade madness, there were the job-as-usual type of thing. Astrolab isn’t dead, it’s on hiatus while the 2 other cohosts and me finished writing our 2 development books. I’ll link them afterwards if any of you is interested.

Writing a book is a very different experience for me. I’ve written manuals (back in the osxserver Puma days), a lot of programs, and quite a few articles, but nothing quite prepares you for the involvment of writing a book, especially with 3 other people. There’s the actual writing, the fact-checking, the code, the language and “message” tweaking, and the interaction with the editor. All in all, it went rather well, and I’m not ashamed of putting my name on the cover, which is a first, for me. We’ll see how that goes.

Speaking of podcasting, I have been experimenting with a different concept, with an excellent friend of mine from the Apple days, now doing stuff that blows my mind each time he speaks about it. So, we are trying to find a way to blow your minds, too, with his knowledge. It will be in French for various reasons, so all of you non french speakers out there have to get on board with the language.

And to carry on with the experiments, with a wild bunch of awesome people, we did an app that’s definitely not little : Pas a Pas. It is a combination of tourism guide, helping you discover some towns, and a litterary app, reading to you a text written by a French theatre writer named Christophe Huysman. It features some pretty cool tricks with regards to geolocalization and guiding, while keeping you fully immersed in both the view and the text. It was a little hard to birth, but the end-result is promising, if not outright genius ;)

As usual, there are a few other projects in the queue that I can’t talk about, but suffise to say I don’t remember last time I had a full night sleep.

And then, there is the dual combo IOS 7 and Mavericks. I’ll reserve my judgement on these releases for later (or never as the case may be), but the upgrade was a little traumatic for freelancers like me. Beyond the wild variations between betas (to be expected during a normal development cycle), the changes and half-fixed transitional problems are still costing me a few hours of sleep each night. Forget the appearance debate, it’s not up to us developers to say whether or not it’s good and/or better than before, the users will decide. But some low-level things (I’m looking at you autolayout) and mechanisms (some tricks we had to implement to take into account the height of the status bar, for instance) actually cause problems now. And of course the crashes/hangs when using CoreData in a way that will actually work on iOS 5 and 6…

I have no doubt we’ll ride the wave and come out with solutions, but right now it’s so frustrating to support both the old world and the new that I totally understand my colleagues who are working on an iOS7 only product. And I’m tempted to do the same thing with some of the projects, most definitely. However fast the user base goes from 6 to 7, though, there is still quite a large number of people using apps that I have written that will remain on a system/app that just works, rather than making the switch and going through the choppy waters of both upgrades.

If I had a complaint, it wouldn’t be that Apple boldly goes where it hasn’t gone before, it’s more that we developers should count for something in such a big transition. Unstable betas, we understand, being developers too and all that. Back and forth on including this or that function, as well… But giving us a week to finalize our products on a version of the OS that is clearly not ready for public consumption (the 7.0.2 version came a couple of weeks afterwards and fixed a lot of things), while completely ignoring our frantic alarms is detrimental to everybody: the early adopters, once the shine has worn off will be disappointed, the journalists covering the launch will be merciless, and the developers will be downcast. We need to be better included in this cycle: being able to submit betas for betas would be a good help for everybody: developers could showcase what they intend to do, while Apple engineers could see how the APIs are (mis)used and communicate on or fix what they think is wrong, etc.

It’s still vital that Apple applications work perfectly from the get go, but it’s also increasingly important to have the users’ apps running up to spec as well. There is money in the hardware and the software.

Alright, got to go back to work, it’s been a pleasure to see you all, and I’ll see you again soon(ish)