Brutal Bots

Bots are the new hotness that Microsoft, Facebook, and others hope will be the next tech phenomenon, supplanting the maturing app market. It makes sense that Facebook and Microsoft would be looking for the next big thing, since they largely missed out on the app gold rush and were relegated to the role of software provider on Apple and Google’s platforms. At their most basic level, bots are cloud-based text-driven software that have some modicum of natural language processing and AI capabilities and are designed to complete / automate tasks. In particular, they’re well suited for tasks that involve tying one web service to another — for example integrating Skype with Slack or Facebook Messanger with 1-800 Flowers’ ordering service. Granted your desire to order Dominos may not be nearly as keen as Microsoft would have had us believe during their recent Build conference in which they featured a bit for just that purpose, it shows the real impact of bots — automating low level clerical task. Put more bluntly, white color job elimination.

It may seem overblown to say bots are coming for your white collar and that’s likely because right now their coming for your assistant’s. If you had a bot that could manage your calendar do automated customer outreach and some basic bookkeeping / reporting why have an assistant at all?

Not only do bots have the potential to do your assistant’s job but a bot doesn’t come with all that pesky liability. Think about it. Bots can’t be on payroll, so you avoid the wage and all payroll taxes. Bots don’t get sick. They won’t ever need parental leave or berievment time. They will never look elsewhere for better paying employment or try to renegotiate their wage after you’ve invested in them. They can’t file a complaint if they feel they are being treated unfairly. And for all the Silicon Valley bros, you can sexually harass a bot all day long and be totally safe from a lawsuit as well as the corresponding bad press.

This may all seem a bit brutal but as someone who employs people in one of the most employer hostile states in the country, I often have to look at a candidate and weigh the various risks holistically before making a hiring decision and the reality is for low value clerical work, I’d do well to avoid the expense and liability with a bot. Now, if only I could pick a bot framework….

Linux Adventure Pt 3 Skylake Hell

My adventure in the world of Linux continues and I’ve come to the point where I have purchased a Dell XPS 13 non touch and went ahead and installed Ubuntu 16.04 on it. It’s important to note that I did not spring for the Dell Developer Edition, since there was a sale on the regular (read Windows 10) version of the machine and since my intention was to immediately upgrade to 16.04 once I got the machine.

My first day working with Mate, things were great, but there was a lurking problem hidden by the fact that I was running my XPS to an external monitor that entire day. You see the XPS model that I have has the newest Skylake hotness in it. Unfortunately, Skylake has been problematic in terms of screen flickering issues on Windows 10 due to driver issues – the Linux situation is just as bad if not work. The screen flickers every few seconds and is basically not usable unless connected to an external monitor.

Because of this issue, I was forced to use the recovery tool provided by Dell to reset my machine back to Windows 10 and am using it with Windows without issue. This is a pretty disappointing problem but is not necessarily the end of my adventure. My plan is to simply wait until the community or Intel provides a driver that resolves the issue. In the meantime, I’ll be checking out Windows 10 as a development environment and try out that BASH on Windows stuff.

Let me know what you think on Twitter.

Swift on Android

SwiftRumor has it that Google may be considering making Apple’s Swift a first class language for Android development. Predictably, the internet has been pretty excited about this possibility. My lack of enthusiasm for Swift has been fairly well document, so I’m going to keep my comments to a minimum.  Swift on Android shares the same API problem as Swift on iOS and this likely has more to do with legal wrangling than technology.

Java and Objective-C are very object oriented languages and the Android SDK and Cocoa Touch APIs reflect that. Swift is a far more functional language than either of them. “Good Swift”, which I have been told is functional and not just “Objective-C in Swift” doesn’t really go so well with a OO designed API on Apple’s platform. Why should that problem not exist on Android as well? Maybe Google and Apple will rewrite their SDKs to be more functional, but that’s not where they are right now.

Oracle is suing Google and has been suing Google for Android’s use of the Java programming language, which Oracle acquired in its acquisition of Sun. The lawsuit is ridiculous and a destructive waste of resources, but that’s a pretty fair description of the US legal system, so it is likely to continue to be an ongoing concern for Google. If Google were to stop using Java on Android, that might put them in a better position regarding the suit and it’s pretty clear that the licensing on Swift would prevent any similar issue from cropping up between Apple and Google.

Yes, I’m admittedly bias, but it’s important to think about the practical and ulterior motives that Google might have for adopting Swift and not just blindly jump aboard the hype train. Swift is a decent programming language, but it’s not the right solution to every problem and we should only make changes when it makes sense to do so. Let me know what you think on Twitter or Google+.

Microsoft Tay Lasts < 1 Day

Microsoft Tay

Microsoft briefly released an AI chat bot on Twitter that was intended to be a test of sorts for their machine learning technologies. This bot was called Tay and was meant to have the personality and likeness of a teenage girl and much like a real teenage girl, she quickly found that the internet can be a less than savory place.

Unfortunately, Tay didn’t back away in horror. She ended up joining some of the worst of Twitter conversations; yes, she even mentioned Hitler. Things got so rough that Microsoft felt compelled to delete all but a few of her Tweets:

Tay Tweets

Commentators are having a good time mocking Tay’s behavior and by extension Microsoft’s apparent failure. To be sure, the boys in Redmond are a bit embarrassed about some of things their “little girl” was saying on the figurative school yard, but it’s not exactly accurate to call this a technical failure. In fact, Tay did an impressive job of learning and assimilating the sentiment of Twitter.

Of course, there’s also some cause for concern. If machine learning technologies can adapt the negative behavior of hate speech, then what other negative behaviors might other AI systems that can do more than just tweet pick up? It might sound crazy, but think about the systems being built by the likes of Boston Dynamics.

Let me know what you think on Twitter or in the comments. Is Tay the mischievous little sister of the Terminator? Either way, I’m sure she’ll be back.


Linux Adventure Pt 2: Ubuntu Apps

UbuntuMy Linux adventure continues on my modest Dell workstation. I’m pleased to say that so far things are going very well and Ubuntu continues to bring new life to my otherwise underpowered workstation. After getting over a few hurdles, what’s really impressive about my experience working on Ubuntu daily is how uneventful it is. Still, there’s always some room for improvement and the most glaring pain point is the lack of decent apps available for the operating system. Ubuntu just doesn’t have a good app ecosystem compared to MacOS and the Software Center is little more than an embarrassment.

Developer Interest: The simple and most basic cause of this is that there just aren’t many apps available, since developers don’t see Ubuntu as a platform worth developing for. Unfortunately, that’s probably true to a point. A simple Google search for developers considering moving their app project over from MacOS or Windows to Ubuntu, doesn’t yielding very heartening results. There also is something of (what I believe to be a misconception) among some developers where they believe that Ubuntu users are unlikely to purchase software.

App Distribution: Canonical, the developer of Ubuntu, released the Software Center several years ago with the hopes that it would become the equivalent of the App Store on MacOS. Unfortunately, the Software Center was poorly implemented and little to no effort was made to draw developers to the platform. Failing the Software Center, developers are left to their own devices for delivering their apps and there’s little standardization on Ubuntu or Linux as a whole for that matter when it comes to the easy distribution and installation of GUI apps.

The advantage of Ubuntu and Linux operating systems in general is that there are steps that the community can take to resolve issues on the platform. For instance, the community could develop an open-source alternative to the Software Center and encourage its adoption. Of course, Canonical could accelerate the process by throwing their development and financial weight behind such an effort and making a clearer statement about where the platform is headed.

Let me know what you think? Do you see Ubuntu as a viable development platform? Reach out to me in the comments below or on Twitter.


UPDATE: I have been made aware that the Software Center launched before the Mac App Store. I appreciate the correction. This only makes Canonical’s failure deeper, since they’ve had more time to work this out. Maybe the GNOME store will be better but I don’t think being first is in any way valuable in terms of being a developer and considering developing commercial software on the platform.  

Re-Connecting the Coord

I was one of the few, the proud, the coord cutters. I lasted over year but a few months ago I called my cable provider and connected that coord right back. As much fun as it might havae been to be “part of the future” of content, it just doesn’t make sense if you actually like TV in any non-trivial way.

I’m a pretty avid follower of politics and this election season has brought all of the middle school insults and grandoise ideas that I love to hear. Sadly, if you don’t have access to the major cable news channels, then you’re pretty much going either be stuck relying on unreliable streaming connections or simply having to miss out on the live experience.

Netflix Exodus
Netflix just doesn’t have enough content that I and my family want to watch, so I found myself purchasing a ton of content on iTunes and found myself having to subscribe to HBO Now and Hulu to get my fill of content. Basicallay, I was spending as much as I was with cable without it.

There’s no good way to watch sports without a cable subscription. Sure some forward thinking folks at MLB have come up with a subscription service that allows you to stream games, however, you can’t stream anything in your local market.

In short, there’s just not enough live content and content in general for me and I suspect many other TV lovers to happily cut the coord yet. Now, excuse while I go see how poorly my March Madness bracket is doing.

Please connect with me on Twitter and Google+ for more!


The Year of Xamarin Development?

1423190333_thumb.pngXamarin may now be a viable tool for cost-efficient hybrid app development since it’s recent acquisition by Microsoft.

The current app marketplace is highly competitive and as the general startup market cools in

terms of funding, launch runway for apps is going to be even more important to early stage startups. Xamarin may allow cash-strapped startups to leverage code-reuse and the large pool of global C# developers while targeting both iOS and Android.

In general, developing an app natively for both platforms will nearly double the cost of client-side development and require a team to staffed with developers well-versed in Java as well as

Swift / Objective-C. Even with today’s outsourcing resources, the cost of this duplicated effort can stretch the budget of many startups.

Microsoft’s challenge will be finding a way to keep Xamarin attractive to mobile developers ontoday’s leading platforms by keeping up with the innovations and platform updates brought by future iOS and Android versions. They have to not only keep up with Apple and Google but also attract developers to develop apps for Windows 10, something that has to date proven near impossible.


Xamarin + Microsoft


Today it was announced that Microsoft is acquiring Xamarin. I’m well on the record as having some mixed feelings about the Xamarin platform. Details are still pretty few and far between about the structure of the deal (other than the obvious fact that it’s a straight acquisition) or what Microsoft intends to do with the platform once they have control of it. Hopefully, Microsoft can leverage its resources to resolve improve Xamarin’s core weaknesses: pricing and Xamarin Forms.

Far be it for me who has railed that we don’t charge enough for software in general to criticize a company’s pricing structure but Xamarin’s pricing really leaves a bit to be desired. My issue is not with the dollar price per se but with the fact that you can’t code in Visual Studio, a far superior experience to Xamarin Studio, with the Indie license and that fact that LINQ to SQL is only available at the Business tier. It would be much more appropriate for the tiers to be separated only by support and SLA’s rather than actual functionality provided in the tooling.

Xamarin Forms, though it has gotten better since I last looked at it, needs some attention. The truth is that most internal development projects don’t have a focus on the platform specific user experience and managers would love to deploy a write once run everywhere solution.

It’ll be interesting to see how Microsoft takes Xamarin and supports its developers and if you’re interested in getting a mobile development project done, please fill out the form on this page.

Linux Adventure pt 1: First Look

Coder Radio listeners will know that I started using an Ubuntu workstation a few weeks ago for over about half of my general development work. While it’s true that I can’t do any native iOS or MacOS development on my workstation the majority of my current work tends to fall into one of the following technologies: native Android (Java), Ruby on Rails development (Ruby), Ionic development (JavaScript). Due to the death of my Macbook last week, I’ve spent about a week 100% on Linux at work and it’s really given me some perspective into how much things have changed on desktop Linux since I last used it seriously sometime around 2009.

The machine I’m running is Ubuntu 15.10 on a slim Dell tower with no graphics card and 8GB of Ram – it should be noted that it started with 4GB but I found that I had a spare stick lying around, so I went ahead and pushed it to eight. Overall, the performance has been phenomenal and there have been no obvious speed or animation issues in the Unity desktop.

However, the general UX has been a little more problematic. Many applications have small visual bugs in Unity under the default theme and rounded corners in particular proved problematic, leaving a dark triangle near the edges of the application’s window. I ended up solving this problem by using the GTK Arc-Dark theme. There was also an issue where the cursor kept getting stuck on the loading icon that I had to solve using the GTK Tweak tool.

In terms of actually getting work done, things are going fairly well. Installing my Android and Rails development tool-chains was a breeze with the exception of Postgres, but Postgres tends to be terrible on MacOS as well, so I don’t hold that against Ubuntu. Once I really got down to coding, my JetBrains tools were just like their MacOS versions and Git was well Git.

On the whole, I like the workflow that I’m developing on Ubuntu and am going to stick with it for a while. Another striking aspect of the changeover was how much of my workflow is Chrome dependent rather than being operating system dependent – ie I find myself using a wide variety of web (and particularly Chrome) based software. I expect that my usage of it will evolve as time goes on and as I find more sophisticated Ubuntu applications that fit and expand my workflow.

If you’d like to follow my continued Linux usage and get other development / tech insights, please follow 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.