Archive for Tools

Lemur Review

Coder Radio listeners will know that I have been agonizing over replacing my three-old MacBook Pro and with the recent Apple announcement of their new MacBook, I ended up ordering a System 76 Lemur laptop with Ubuntu 16.10 Linux pre-installed. If you’re interested in the specific specs of the system, you can see them here. My thoughts in the future of computing (or the next “big thing” if you prefer) being AI powered by Linux on the cloud. My crazy predictions about the future of AI and the stages it will go in are a post for another day – for today, let’s go over the Lemur itself as it compares to the MacBook Pro it’s replacing.

The general hardware is good but a little more plastic feeling than I am familiar with. I like the inclusion of a USB-C port but do wonder who is still using VGA and if that space on the body would not have been better used for another USB port. I was pleased that my high-res Dell monitor and peripherals all worked out of the box with the Lemur – that’s a big win for System 76, as device compatibility concerns (real or imagined) tends to be a main thing that keeps would-be-switchers from going Linux. The general “just works” quality of the Lemur with Ubuntu 16.10 is by far the most impressive aspect of my experience with it.

On average, I am getting about 4-5 hours of battery life with the screen just about all the way turned up and playing / streaming music or podcasts basically constantly. That’s less than ideal, but I am confident, I could bleed an hour so more out of it if I did less streaming and dimmed the screen some.

The matte screen on the device is surprisingly good and has helped to bring me around on matte screens in general. I might have liked a more “retina” screen but the 1080 resolution is more than fine for my needs.

The keyboard is a bit of step down from the MacBook Pro keyboard that I am used to. There is far less key travel and at times it feels a bit too insubstantial to type on, however, it’s about on par with most non-Apple keyboards on windows laptops with the possible exception of the current Dell XPS 13 and is by no means the worst laptop keyboard that I’ve used.

The track-pad is just bad. Even compared to other non-Apple laptops, the track-pad doesn’t cut the mustard. It at times feels “jumpy” and at other times feels slow and unresponsive. It’s also awkward feeling on my fingers but that’s probably a bit too subjective to worry about for most. I’ve taken to keeping a USB mouse in my bag with the Lemur.

The sound from the on-board speakers is adequate but leaves a bit to be desired when compared to the MacBook Pro speakers. Neither is very good, so there’s not a lot to worry about here – in general, if you care about audio like I do you’re probably always disappointed with laptop speakers. The most glaring issue here is that at high volumes the sound becomes tinny.

All in all, I think the Lemur is a good choice for someone looking for a Linux laptop that could be great if just a little more care was taken with the track-pad and keyboard, as the other minor points I’ve made here are probably specific to my tastes / expectations.

Comments? Questions? Forest burning FOSS rage? Hit me up on Twitter.

TarDisk Review

My dev machine is a “Late 2013” 13 inch Macbook Pro. The machine has more or less been serving me well, despite the occasional kernel panic — these crashes tend to happen when I need to have Android Studio and an Xcode project with a substantial storyboard open at the same time. If you’re interested in more detailed specs, take a look below:

My one major problem since about three months after I got the Macbook has been the insuficient amount of storage that I speced it with at the time purchase. After finding out that Apple will no longer perform a harddisk upgrade as a service at the Genius bar and I didn’t feel particularly confident in opening up my machine myself, so I started looking for alternate solution. After hearing about TarDisk on Twitter, I decided to order one of their 128GB kits and give upgrading my Mac a shot.

Right off the bat, I got a less than great feeling about the product. It came in pretty cheap looking packaging and the instructions looked like they were printed out on a home class inkjet printer. The device itself is a non-descript silver wedge, meant to go in the SD slot of the computer. To be honest, after unpacking the device I sat at my desk with it and the packing out for a few minutes and considered just sending it back. After my few minutes of doubt, I decided to go for it.

After following the instructions that basically amount to closing all applications nad restarting my Mac, I attempted to inster the device into my Macbook — it got stuck. I had to power down and get a thumbtack to wedge the device out. Again, I considered just bailing out on this process but ultimately decided to give it another go, because I’m crazy apparently. After finally getting the TarDisk into the mac and waiting about forty-five seconds and again remove it, since the device was not recognized by MacOS which is what the instructions state should happen automatically on insertion.

Inserting it a second time got MacOS to recognize the TarDisk and I was able to run the tool as described in the instructions. After a few minutes, the process was complete:

As you can see, I do indeed have the additional hard disk storage. Despite the rough installation, the TarDisk does seem to work as advertised and, though it will take some months to tell for sure, seems to not have had any adverse effect on the general stability of the system.

While I won’t go as far as to recommend TarDisk just yet, I can say that it’s an affordable option worth taking a look at if you don’t mind taking a bit of risk. Obviously, there’s plenty of room for the team at TarDisk to improve the installation process and it might be interesting to see a revised version of this product with some of the rough edges smooted out a bit.

Update: For those concerned about benchmarks, there’s been no noticeable degredation in performance on regular use but my needs are not particulary high-end. However, if you’re doing video encoding or something like this, you probably want a different solution. Take a look at this review from Digital Trends where they benchmark it but again if you care at all about disk IO performance beyond your system drive, I’d still contend you’re better off just doing the full SSD upgrade.

AppCode Review

As is well documented on Twitter, I’ve had my share of frustrating system locking beachball of death experiences with Xcode, so it should come as no surprise that I’ve been keeping a keen eye on JetBrains’ AppCode IDE for iOS and MacOS development.

Being a user of two of JetBrains’ other IDEs, Android Studio and RubyMine, I found the on-boarding experience for AppCode to be pretty familar and was able to get up and running in just a few minutes. Overall, the keyboard shortcuts are very similar to their other IDEs and there’s a lot of value in having a similar setup on multiple IDEs.

AppCode also includes many of the refactoring tools that you’ll be familar with if you use any of JetBrains’ other IDEs and has impressilvely just about been able to keep up with Swift 2.0. However, it’s pretty clear that the AppCode team’s fighting an uphill battle to keep up with the development of Swift and is still refining how the refactoring tools deal with the langauge — the AppCode team will likely have to devote continued effort to keeping up with Swift for the forseable future.

Unfortunately, keeping up with Apple’s development of Swift seems ot have come at a cost, the integrated UI designer. As explained here, the Designer has been made a plugin that can be added after you install the main AppCode package. It’s also worth noting that the plugin doesn’t work on all interface file types and was not useable at all for three out of the four test iOS projects that I used to evaluate the Designer. On the one project that it did work with, it was pretty disappointing and not at all an acceptable replacement for the tooling provided in Xcode for user interface design.

What I and I imagine the vast majority of iOS and MacOS developers want out of AppCode is for it to be what it originally was planned to be — a full Xcode replacement, but there’s a lot of ground to cover before it can qualify there. If JetBrains is serious about AppCode, then they’re going to need to improve the user interface designer to the point where 100% of an iOS or MacOS development project can be done in AppCode. Let me know what you think on Twitter.

Xamarin Review

http://xamarin.comRecently, we at Fingertip Tech, INC have been doing a lot of work in Xamarin and Xamarin.Forms. All in all, things have been going fairly well and the tooling seems to get better everyday! Still, nothing is perfect and at the end of the day working with the Xamarin toolchain is a decsion that has to made on a per project basis and will greatly depend on the overall budget for the project and its maintenance. We are still evaluating Xamarin.Forms but the following are my findings and observations of working with Xamarin classic.

The Good: C# is an absolutely amazing language and every .Net developer ought to apologize to every Java for not spreading the word on just how phenominal the langauge really is. I know that will be a controlversial statment and the Java VS C# debate is a post for another day, but if you haven’t ever done any work in a modern version of C#, then I urge you to give it a shot and try to have an open mind.

Xamarin Studio is a pretty good IDE on Mac OS X and XCode developers will be familar with the IDE’s layout and overall setup – additionally, if you have ever used a modern version of MonoDevelop, you’ll be in pretty good shape. Additionally, the setup process on Mac OS X was pretty straightforward and I was impressed the Xamarin was able to tie into my iOS development tool-chain, pulling up my simulators and my code-signing credentials. On the iOS side, Xamarin does a great job of supporting storyboard and nib files for user-interface design and is no too shabby on the Android side also; however, Android UIs are still best done in the XML layout files directly.

Despite being in C# rather than Objective-C or Java, Xamarin is a faithful port of just about all of the native iOS and Android APIs. In fact, if you know how to do something with say UITableView in Objective-C, then you pretty much are good to go in Xamarin.

The Bad: Working in Xamarin Studio is great! Well, that’s as long as you are working on Mac OS X. The Windows version of Xamarin Studio is nowhere near as polished or as reliable as its Mac sister. For example, on my Windows 8.1 machine, there is an issue in Xamarin Studio that incorrectly highlights correct code as erroneous. Additionally, the intellisense and related features just aren’t as reliable on Windows. AlthoughIt is likely that a good number of developers using Xamarin on Windows would prefer to work in Visual Studio, there is little excuse for the way Xamarin Studio runs on that platform and frankly it makes it seem like Windows users who have not paid for access to the Visual Studio integration are not as much of a priority as those using Visual Studio or Mac.

The Ugly: Once upon a time, developers the world over were used to paying for by the seat licences for software development tools and even progreamming languages. Xamarin is trying pretty hard to bring that back but I’m not sure it works. Something about the per seat pricing model rubs me the wrong way. Additionally, up until just the other week, no form of mothly subscription billing was available and even to date there is no monthly pricing for anything beyond the ‘Indie’ plan. As the owner of a small but still bigger than five person software development company, I find their drawing the line between ‘Indie’ and ‘Business’ at the seemingly arbitrary number of five just a bit too well… arbitrary for my tastes. Additionally, there are plenty of companies like mine that would probably prefer to not be billed seperately for iOS and Android. All of this creates a sort of complexity that just doesn’t jive with what is otherwise a clean and very customer friendly offering.

Overall, I am pretty happy with how well Xamarin is working out for us and plant to continue working in it. Follow me on Twitter or Google+. Interested in getting your app project off the ground? Then, contact Fingertip Tech, INC and forget to follow us on Twitter!

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.

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.

2014 Predictions

I hope that you have all had an awesome New Year’s Eve! I’ve decided that I’ll start off 2014 by making a fool of myself by trying to make some predictions for the tech industry for the new year. This is not a what you will see list, but nor is it a what you won’t see one; in reality, I am trying to focus more on trends than anything else. Overall, 2014 is looking to be a transition year rather than a real game-changer. This is in no way a bad thing and makes sense for where we are in what is usually a twenty year tech cycle; it is important to remember that the mobile revolution is not even half way done and there are still a lot of incremental advancements that need to be made in that area before it can be considered complete. Still, this article will not focus on mobile exclusively but will rather jump around with no other aim than what I find interesting.

Docker: Docker is the darling of the developer community right now and for good reason — it solves a problem that (outside of the BSD community) hasn’t really been properly addressed. There is however a risk of certain segments of the community drinking a little too much of the Koop-Aide and using Docker in ways that it wasn’t intended to be used; just think about what we saw with Rails a few years ago and the hype surrounding that and you will have a good idea of what I am concerned with. Still, at the end of the day Dockery is going to be a major tool in a lot developers’ (including this one’s) toolboxes for 2014 and probably beyond.

Windows 8: In the consumer market, Windows 8’s RT offering is in a lot of trouble — that is undeniable at this point. Windows Phone suffers much the same fate as Windows RT, though Windows Phone does enjoy a good holding in South America and some other parts of the world. Microsoft has already hinted strongly that they plan to merge WinRT and Windows Phone into one mobile operating system alla iOS. This is a great Idea but is several years too late. It also undermines the “one Windows” pitch that Microsoft has been making for Windows 8 over the last few years. In 2014, Microsoft will still be dealing with the fallout of their bumbling launch and marketing of Windows 8.

Azure: Azure has grown far beyond Windows in the cloud and at the close of 2013 is a rival to Amazon Web Services and pretty much every other cloud offering. I’ve used Azure several times myself over the year and am pretty impressed on the whole; there were some bumps in the beginning and middle of the year, but these have largely been addressed and it looks like Microsoft has some ambitious plans for Azure in 2014. Over the last month or so something called Midori has been leaking out of Microsoft and, though the pundits seem to think it is something to do with Windows on the client-side, my bet is that this is some sort of evolution of Microsoft’s cloud offerings. Either way, 2014 is going to be a good year for Microsoft in the cloud and for Azure.

Mac OS X: Twelve months ago it looked like OS X was veering dangerously toward an iOSification that would have proven intolerable for professional users. With Mavericks however Apple has found a good balance between their desire for control and the reality that the pro-market has been driven to OS X due to its being a UNIX system that has a late vendor for support and an attractive user interface. Despite the apparent back peddling, it is important to note that Apple has gotten one major change in the OS and managed to implement it in a way that is both useful to the average consumer and acceptable to the pro users — this feature is called Gatekeeper. In Mavericks, Gatekeeper does not allowed unsigned applications (to sign an application one needs to be an approved Apple developer) to be installed on the system by default. The key is that this is a default that any sophisticated user can change. However, I must admit that I have kept this default. Going forward, Apple’s belief in signed applications (or perhaps some slightly watered-down version of it) makes a lot for sense for the future of computing and I actively support refusing to install unsigned applications from untrusted sources. If the current path holds, Apple will be balancing making OS X simpler for average users and new users who came over due to the halo effect of iOS while balancing the needs of the professional user market.

Ubuntu / Linux: Canonical has done an amazing job of sullying the Ubuntu name over the 2013 and has done little more than make a fool of themselves with their naïve attempt at breaking into the mobile space. Ubuntu will still be a very popular desktop Linux operating system among new Linux users and will continue to be a major player on the server-side. Canonical the company however will fail to monetize their offerings in any significant way. The only ray of hope would be some sort of re-focusing of the company to be an enterprise focused organization much like Red Hat. Even in that case, Canonical will not be able to be a true challenger to Red Hat in 2014 and it is unlikely that they will even decide to try. The continued flailing of Canonical will contribute to a “brain drain” of passionate and talented Linux enthusiasts out of the Ubuntu community and into other Linux communities. Another side of effect this is that desktop Linux will continue to be the proverbial tempest in a teapot that it has always been. This internal discord will guarantee that 2014 will not be the year of the Linux desktop in any significant way.

That’s it! Those are my foolish predictions for 2014 — foolish as they may be, I am pretty confident that most of them will be, if not correct, then on the right track. I know they are not earth shattering and basically boil down to 2014 will more or less maintain the status quo. In a way, that’s a good thing. If we are constantly reinventing new technologies and never refining the technologies we are already have, then we will always be using unstable and half baked first generation technology. Have a happy new year and feel free to comment on Twitter.

Programming Pitfalls: Windows 8 & VS 13

PitfallIt will come as no surprise to anyone who has been following this site for a while that I’ve been doing a bit of Windows 8 development. Like many developers moving over from another platform, I have some concerns about XAML and the development philosophy that it seems to promote, but that’s not the pitfall I hit this time. No, the trap I fell into is far more sinister….

You see I had opened Visual Studio 12 and got a notification that there was a new version of Visual Studio coming out and if I wanted to take advantage of all of the new goodness in Windows 8.1, I’d need to download it via MSDN. Like a good little code monkey, I did just that and made a fussy coffee while I waited for download and install to finish.

Once the install had finished I opened Visual Studio 13 and created a C# / XAML metro app. So far so good. No errors or warnings of any kind where displayed. On the whole, I am pretty happy with the workflow in 13 and got the app done in just about a week — it was just a proof of concept.

Now comes the tricky part: deployment. After going through the ridiculous proces of explaining to a non-tech person that they have to run a PowerShell script to run the archive Visual Studio produces, all seemed to go well — the first stakeholder was happy and passed it on to someone else. Then came the issues. For some reason the app would run on some devices and not others.

After a few frantic hours of search-fu, Stack Overflow browsing, and digging through the chaos that is the MSDN developer forums, I had a theory. Was it possible that all the devices that the app ran on had been updated to 8.1 and the ones it didn’t work on were still on 8? If so, there surely would be a menu or XML attribute in the App Manifest that I could change the minimum version to 8.

I was right on the first point and kind of right on the second. It turns out that the app could not be run on 8.0 devices as built and there is an option in the manifest to change the version. Unfortunately, in VS 13, you can’t change the version number. My suspicion was confirmed — Visual Studio 13 did not support building for Windows 8.0. Well, that’s not exactly right either. It turns out that Visual Studio 13 will build a Windows 8.0 app but will not create one — that means that you’d need to create the project in VS 12 but could move over to VS 13 later. I ended up having to create a new project in VS 12 and copying the code over into that new project. The bottom line is that this feels like a ham-fisted attempt on Microsoft’s part to force adoption of the 8.1 APIs and left me with a bad taste in my mouth. At this point, I am sticking with VS 12 until all of my projects no longer require 8.0 support but, frankly, this problem just shouldn’t exist.

Questions? Comments? Find me on Twitter.

Happy Thanksgiving 2013 Open-Source!

turkey_in_circleHappy Thanksgiving! I hope you are all having a wonderful holiday weekend. Last year, I posted an article in which I listed and discussed the open-source projects that I found particularly meaningful over the year. Why do this? Well, the idea here is to basically say “thank you” to the open-source projects that I use and to also track year over year how the projects I use frequently change.

Last Year’s picks were ASIHTTP, JQuery, and Rails. There has been a lot of change from 2012. To start, I don’t use ASIHTTP at all anymore and have finally moved on to my own home grown solution that I hope to finally release under an open-source license before the end of 2014; basically, this is because it is no longer supported by the original author and my branch was getting a little more duct-tapped than I was comfortable with. JQuery is pretty much totally out of my toolbox these days; like a lot of developers, I’m feeling that JQuery is a little too hefty for most tasks and have moved to purer JavaScript / CSS tasks that might have been done using JQuery in the past. In a lot of ways, the only project that was listed last year that I’m still actively using is Rails; a lot of that has to do with maintaining existing Rails installs and it should be noted that I’ve cut my Rails usage significantly.

Still, let’s not dwell on the past too much. I have three new projects that have basically taken over my development tool-chain this year: Docker, Java Play, and ASP.Net MVC.

Docker: My infatuation with Dockery has been well documented on Coder Radio, so there is not a lot of need to go into too much detail on why I like it. However, it is worth mentioning that Dockery has become my go to tool for deployment to Linux-based servers. Given the relative newness of the project, it is likely that it will remain one of my “go to” open-source tools into 2014.

Java Play: Java Play Is one of the frameworks that I was evaluating when I decided I wanted to lessen my dependency on Rails. Given that Java has stood the test of time and is one of those technologies that clients don’t need to be convinced of to deploy, I can’t imagine Play not making it into 2014.

ASP.Net MVC: Thanks to Microsoft’s liberal treatment of Azure credits, there had need good amount of demand for MVC from cost conscience clients. MVC was a pretty big part of about half of my year, but as the free Azure credits have dwindled, so has demand. There has been a lot to like in MVC, though I’ve seen a lot of issues with migrations not working the way I would expect them to; still, those migration issues probably have more to do with me expecting it work like migrations in other platforms.

There has certainly been a lot of change from last year’s list and, if I was pressed to find a theme, I’d say that this year I’ve focused on more mature tools, though Dockery is of course very new — still, from a coding perspective I’ve gone a lot closer to “enterprise” (Java / C#) than 2012. Hope you all have an awesome holiday weekend and please leave any comments on Twitter.

Code Journal 1.3.3 Released

I’m happy to share that Code Journal for Mac version 1.3.3 is now available on the Mac App Store. This build includes a few small tweaks including splitting off from the iOS Github tokens and now has a friendly message for users who have no incoming activity in the Github feed.

Hope you like it!