Slacking Off

Slack

At Fingertip Tech, INC HQ collaboration is key, so we’ve been searching for tools to help us better work together as a team. We’ve worked with a few tools over the years but none has fit our work model as well as Slack.

Slack is very similar to HipChat, the tool it is replacing at the Fingertip HQ. The main advantage that makes Slack the winner for me is its better user experience and greater focus on design than HipChat and pretty much the rest of its competition.

We’ve found it easy to integrate Slack with all of our most important services – especially our self-hosted (on Digital Ocean) GitLab source control system.

Of course with any tool, there are downsides. For instance Slack doesn’t have an app on any desktop platform other than Mac OS X. Additionally, Slack’s Mac app does not feel very native; in fact it seems to be a wrapped HTML5 app – this is something that rubs me the wrong way but in practical terms rarely becomes an issue.

Being grounded in web technologies does make its Chrome app one of the most impressive Chrome apps I’ve used in some time.

A Swift Softening

enter image description here Listeners to last week’s Coder Radio know that during the live feed WWDC coverage, I was less than enthused with the announcement of Swift, Apple’s new programming language for iOS and OS X. My initial reaction was based on the somewhat unclear way they announced Swift; it was not very clear what they wanted us developers to use Swift for and that led me to the wrong conclusion that Swift is designed to be a near to medium term 100% replacement for Objective-C – this simply is not the case. So far, I’ve read through the Swift book on iBooks and the documentation publicly available twice and found something very surprising – Swift reminds of QML in QT.

This might sound a bit odd, given that in a lot of significant ways Swift and QML are very different languages, but they actually share a kindred spirit and will likely take the same place in my tool-chain – layouts. Yes, both Swift and QML are technically capable of so much more than layouts but really they are both well suited for that task in particular. Why do you think the WWDC demo was so UI / visuals heavy?

So the bottom line is no I don’t hate Swift and no I don’t think it will be the end of Apple development as we know it. And yes, I will be using it but, at least for the next year or so, in the same capacity as QML and its relationship with Objective-C will be same as QML’s with C++ in my QT code-bases.

Questions? Comments? Find me on Twitter.

WWDC 2014 Predictions

WWDC 2014

Well, it is that time of year again – when the tech space goes crazy with Apple fever and starts to have dancing iTVs and iWatches in their heads. From the Apple developer perspective, this is (like the WWDC of 2012) being preceded by increasing frustrations from the community regarding Apple’s tools but more their practices – these complaints have been grumbling under the surface and indeed I’ve been at the forefront of sounding the alarm, but some fights have already been lost and if history is any indicator the prominent Apple devs will be placated by pretty much whatever they get on Monday. Still, to be fair, if Apple could address a few core areas of developer pain, then there would be legitimate cause to celebrate.

Contracts / Intents: Windows Phone and Android both have viable solutions to interapp communication that work very well for the developer communities on those platforms, the platform vendors, and of course the end user. iOS, however, has no real solution to this problem; I don’t consider and a reasonable person would probably agree that the current URL schemes tricks are all just really sloppy hacks that should never be shipped and no sane developer would use them by choice if there were a better alternative. There is no technical reason that this can’t be done and at this point Apple’s stubbornness is doing a huge disservice to the developer community and the end user.

App Test Distribution: One of the most annoying aspects of being an Apple developer is that whenever a customer or even a teammate gets a new iOS device, we have to go through the whole rigmarole of getting the devices UUID, adding the UUID to our developer portal, regenerating a provisioning profile, and making making a whole new binary just to get that one new device into the testing pool. This is absurd. Apple for good reasons wants to limit how apps are distributed outside of the App Store but at this point, there system is too much of an inconvenience to developers (a group I strongly feel is important to their long-term success) to be tolerated one day longer. There is some hope – a few months ago Apple purchased Testflight and that suggests that they intend to streamline the test distribution system.

Mac Mini Refresh: I’ve been careful not to put oo many consumer / new product requests in these sort of posts but I am willing to make an exception for the Mac Mini. Though the mini is probably the least sexy device that Apple sells, it is extremely important for the developer community at large, as a ton of little shops are almost 100% Mac Mini shops. At this point, it is pretty hard to justify the purchase of a Mini given how old the tech in the device is and the somewhat poor value proposition – at least compared with the iMac or an equivalent Windows PC.

That’s it. I don’t think these items are too crazy but am not so sure that we are going see anything of significance in any of these areas. My guess is that we will see nothing the way of interapp communication, a half step toward an easier test distribution, and little more than a spec bump or price drop on the Mini.

If you want to troll me when I inevitably proven wrong on Monday, then please follow me on Twitter.

Coder Radio 100% Employment

Help Wanted!Every week Chris Fisher and I hear from energetic developers and the like who are looking to break into the field but are just having a hard time getting that first gig. Well, Coder Radio’s sponsor Digital Ocean is hiring as is my own company Fingertip Tech, INC.

Both companies are great (OK I’m a little bias on the second one…) and would be a great fit for any of the Jupiter Broadcasting listener-base.

At Digital Ocean, you’d be working at one of the hottest Linux based companies. As a very happy Digital Ocean customer, I can tell you that it is one of the hottest forms in its space and would be a great resume-builder for a Jr Developer or IT worker.

Fingertip Tech, INC is equally awesome! At Fingertip, you’d get to work in a fast-paced environment with the latest in mobile and web technologies with a tight-knit group of folks who not only work technology but live and breathe it. I should warn you, however, if you are a Linux user, then you’ll need to be ready to defend your distro and window manager choice not only on your interview but on your first day; XP users need not apply. Currently, we are only interested in candidates that can travel to our Eatontown NJ offices, however, full and part-time opportunities are available.

I hope this helps someone and let’s get that Coder Radio community employment number up to 100%! Digital Ocean and Fingertip Tech, INC can both be found on Twitter.

If you have enjoyed this post, please consider following me and my company on Twitter and on Facebook.

Programming Pitfalls: Circular Imports in Objective-C

PitfallI spend a lot of time in XCode working in Objective-C for iOS and Mac OS X projects. In many ways, Objective-C has become my “native language” in terms of programming languages. Still, that doesn’t mean that I can’t make really silly mistakes when working in that language. In fact, through the magic of GitHub you can see the mistake in real-time in my open-source Cocoa / Cocoa Touch networking library, MDNetworking.

The mistake is, like the best dumb mistakes, small and simple but can take more time than I’d like to admit to notice and resolve. Take a look at this pseudo-code sample for what went wrong:

#import "Foo.h"
#import "Bar.h"

@implementation Foo
 // CODE
@end

 

#import "Bar.h"
#import "Foo.h"

@implementation Bar
// CODE
@end

That’s it. That’s all you need to do to reproduce this programming pitfall. As always, I hope this has been illuminating and entertaining for you and please do follow me on Twitter.

Customer Service and Tech

Our industry is a little odd to say the least No I am mot going to dribble on about haw tech, or perhaps more accurately the software industry, has made the world a much better place. What really means me proud to be in this field Is the amount of personal accountability our C level executives take. Even Google the most anti-people company in tech, has brought on customer service reps for their enterprise and hardware products.

For instance, Apple’s Tim Cook wrote an open letter in which he took the hit for issues that Apple users had with Apple is mapping solution. He even took things a step further by getting rid of Scott Forestall the executive who refused to take responsibility for the issue.

Microsoft took things a step further by making long-time CEO and figurehead of the company resign due to the much overblown Windows 8 situation; more on this at another time. If this isn’t personal accountability then nothing is.

Time and again I’ve had to deal with companies outside of our industry and been sorely disappointing. My two favorite recent examples are 1-800 Flowers and UPS. Both these firm take pains to avoid any sort of customer service responsibly. For instance, the flower company has an automated message is your call them on a high volume day that simply hangs up on callers. UPS is a bit better -they will take your call but claim that their distribution Centers do not have phones. That statement is, if true, an obvious safety issue for their employees. The reality is that they “don’t have phones” really mean “we don’t want you calling us”.

The time has Come for these businesses to start being a little more customer focused.

Testing TDD: First Look

TDD (Test Driven Development) seems to be gearing up to the new “best practice” for 2014 and you know there is nothing I like more than being told that there is a new (though TDD’s newness is debatable) shininess that will solve all of my problems and make me poop rainbows. To be clear, I don’t think that TDD is a bad idea. In fact, we are actively discussing how we might implement TDD where it makes sense at Fingertip Tech, INC – they key phrase there is “where it makes sense.” To be brutally honest, one of the reasons I’m writing these posts is to try to counter the “up and coming” TDD consultant trend. Oh yes, the process consultants are moving on from Agile and are trying to make TDD a fertile ground for their inflated consulting fees. It is my hope that sharing some knowledge at this point with you my dear reader will help you to not get suckered in by a smooth talking process consultant; as far as I’ve seen these people are nothing but charlatans, preying on organizations that have failed to keep their staff engaged.

Proponents of TDD claim that it will reduce time spent on QA / bug fixing and generally increase the quality of our code across the board. Unfortunately, they’ve so far failed to provide any conclusive evidence that supports those claims across the board – to be fair, there are plenty of folks offering guestimated anecdotes but those are as dubious as they sound. What I want is something like the average project has X hours of bug fixing under normal circumstances, we spent Y hours doing TDD, spent Z hours bug fixing anyway, Z + Y is either greater than or less than X. From a practical point of view, I see no reason to bother with TDD unless Y + Z constantly come out to be less than X. It is for this reason, that I am currently tracking this simple formula in our TDD projects.

I’m also tracking a few other factors: platform, client-side, server-side, testing library, and the nature of the bugs that we still end up having to manually test. Though I’ve been doing this personally for a few months, I am still not prepared to release my full results.

I will, however, say that TDD (at least in my experience) is looking to be like Agile in that a little bit of a good thing is good but a lot can be terrible. I’ll also share a few more points. The first being that TDD for me has so far been a sunk cost in terms of time on the client-side – it is near impossible to really “test” visual elements without manually testing them. The server-side, however, has been a different story and far more positive. This makes sense, since the TDD folks tend to focus on its effectiveness for server-side platforms such as ASP.Net or Rails.

If you want to follow this series, please follow me on Twitter and add this site your RSS reader of choice.

Code Journal 1.4.0 Update

Code Journal LogoI am Happy to announce that Code Journal 1.4 has just been released on the Mac App Store. We took special care to respond to your feedback both in terms of performance and of course new features.

I am particulary fond of the new less wordy way we are naming and dealing with repositires in the title bar and also we’ve added the match requested manual refresh button. For a more complete list of changes, please see the release notes on the App Store.

Going Mobile: Byword

This is the first entry into Going Mobile my series of reviews on mobile productivity software – I am defining productivity software as any software I use to get work done. For this first entry we have Byword for iPad, a great markdown editor for iPad (and actually iPhone too). It’s fitting that the first pick be a markdown editor, since the majority of this website has been written in markdown for some time; in fact, this post post has been drafted in the app on my iPad Mini.

Byword doesn’t strain itself to be the best looking iOS app on the market; in fact, it focuses more on function than form, however, it is still a pretty good looking app and leans very heavily toward the iOS 7 design paradigm.

What puts Byword ahead of the pack of mobile markdown editors is its integrated posting to Word Press and a number of other blogging platforms. This might seems like an unnecessary convenience but the fact is that effective blogging from a mobile device requires that the process be as frictionless as possible. A close second for my favorite feature in the app, is dark mode. Given iOS 7’s relative hostility toward nighttime use around a sleeping partner or spouse, it is refreshing to see third party developers taking the time to add dark modes and other quality of life features.

The app costs $4.99 currently and to unlock some of the advanced publishing capabilities, you have to purchase a $4.99 “premium” in app purchase. This is my only issue with the app – the app feels pretty incomplete without the in app purchase. That’s not to suggest that the app isn’t well worth it’s true cost of $10, but rather that this pricing scheme feels a little deceptive and in my mind brings down the (for lack of a better term) “class” of what is otherwise a very high-end experience. I’d gladly pay $10 for the app outright but understand that I’m in a fast shrinking minority; the reality is that thine pricing scheme probably was decided upon due to the unfortunate economics of the app economy.

If you’re in the market for a mobile markdown editor and are an iOS user, then I strongly recommend that you check Byword out. If you have any comments or app suggestions, please share them with me on Twitter.

Time to Go Mobile

If you read my 2014 Predictions, then you know that I don’t believe that we are going to see a lot of huge leaps in mobile hardware or OS technology in the next year. Software from third party developers however will be a different story. Indeed, it is my belief that 2014 is the year that large numbers of normal users are going to begin using their mobile devices as the power personal computers they really are – in many ways, a mobile device is a far more personal computer than an actual PC at this point.

I’m going to be one of these brave few and will therefore start featuring and reviewing applications that I use on a variety of devices. However, I am not going to artificially promise to review an app per week. Nor am I going to worry about making sure all platforms get the same amount of coverage. My goal is to honestly review and recommend apps that I use regularly on whatever platform.

Since these are apps that I actually use, there will be no negative reviews – in fact, there’ll be no scoring at all, as I find the star or X out ten scoring systems to be arbitrary at best. Think of these apps as my picks and treat them that way. If you like what I like and you find something that you start to use often from these posts, then please let me know on Twitter or Google+.