Archive for Windows

Bashing Bash

Ubuntu on Windows
Coder Radio listeners who already caught Monday’s show will know that I have been playing around with Bash on Windows. To be specific I was using the Ubuntu “app” available on the Windows Store and made not modifications to it or my system.

The experience of just getting it installed is pretty terrible. You have to join the Windows Insider program and after you’ve done that restart your computer a number of times until Windows Update notices that you’re in the program and picks up the required update. There’s no direct command line script you can for this you just restart, restart, and restart… until… eventually… it works. Having spent a lot of time in UNIX-like environments, I’ve gotten used to things be a little more precise than “restart and pray.”

Once it got the Windows Insider issue sorted out and installed the Ubuntu “app” from the Windows Store, I started messing around with the BASH interface. On the whole, it functions like a real BASH interface and the commands you’ve been using on Linux / macOS will work just fine. However, that was pretty much the end of my enjoying the experience. Like many things in technology my primary issue is one of expectations. I expected to simply be able to open a BASH window that would start in my home directory and be able to interoperate easily with the local Windows file system. This is not how BASH on Windows works. The Linux file system is separated into an obscure section of the hard disk, making even the simplest tasks of working between the Linux systems and Windows needlessly challenging. From a practical perspective what I wanted to be able to do was edit some code using Visual Studio Code somewhere in my ‘Documents’ directory and run BASH commands against that code easily.

Because I am doing a lot of work that crosses into the legacy Windows world, I really wanted this to work and find it particularly disappointing because other Microsoft tools (Azure, VS Code, and Typescript) have proven to be surprisingly useful for my latest efforts. It would have saved me a ton of headaches. However, it’s just not ready for prime time yet. Ultimately, if you’re working in a Windows environment you’re still better off with just learning Powershell or using something like Cygwin. Let me know what you think on Twitter or in the comments. Also, heard of Docker Compose but not sure what it’s all about? Checkout my quick explainer here.

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.

Book Review: Showstoppers

51F42ko-gyL._SY346_PJlook-inside-v2,TopRight,1,0_SH20_Showstopper by G. Pascal is a look from the front lines at the development of Windows NT. Anyone who knows the history of Microsoft or the even just the wider history of the personal computing market, knows that Windows NT was an important step for Microsoft. However, you might not know how bloody and frankly how much of a slog the development cycle for NT was.

As any experienced developer knows, no large project goes off without a hitch; I’m rather fond of describing software development to green interns as being very similar to a sausage factory rather than a bistro. NT was not exception and the honesty that the author shows how messy the process was.

Showstopper is a must for anyone going into software development, especially those who find themselves working on large or complex projects.


My Win8 Dev Tools

Coder Radio listeners will know that I recently purchased a Dell XPS 8500 from my local Microsoft Store. Unlike a lot of Cocoa developer, I am not just buying a PC as a glorified Xbox; in fact, I have an Xbox and am very happy with it. This PC is, like my MacBook Air, a working machine. Its mission in life is to develop software or rather be a tool to help me develop software. To that point, a lot of listeners from CR have been interested in what my tool chain on Mac was and I have already received some emails from Windows users asking what I use on the Windows side of life. Before we jump into specific tools, let’s lay some ground work: cross platform support is important to me for most utilities I use; I am very committed to continuing to use Git as my scm of choice; it sounds silly but I like tools that are simple to use and native to the platform; I have no interest in running Cygwin on my Windows machine. Also, I am not going to bother listing the tools that don’t directly influence my dev work or are not Windows specific – for instance I will not be listing Dropbox or Evernote even though I do use them daily.

SourceTree: Though I generally use the command line on Mac for Git, on Windows I prefer to user a GUI and there really isn’t one out there that performs better or is as simple to use as SourceTree. To put it simply, it is the best looking Git client on Windows and is totally free of cost like its Mac counterpart.

Visual Studio: I’ve said it before and I’ll say it again: Visual Studio is a great IDE. Currently, one of my projects is focused on Windows Azure, so Visual Studio was the way to go. So far it rocks.

PowerShell: I have to admit that before Windows PowerShell hit the scene, I always felt that Windows was just a little too GUI focused. After all, on my Mac I can write a little Ruby script or Bash script to solve whatever lame problem I am problem I am having – these problems usually have something to do with improperly named assets from clients (as an aside, please follow the naming conventions I prescribe) that I have loop over and mass rename. Admittedly, I am a PowerShell novice, but so far it rocks I can do just about everything I used to do with a Bash script with roughly the same amount of lines in PowerShell.

That’s it so far. Obviously, I could use a few more tools on the Windows side and if you have any suggestions, please send them my way. Questions? Comments? Dogmatic rage? Please feel free to contact me on Google+ or Twitter. This post was brought to you by Code Journal for Mac.

I Like Windows RT

azure-logoWindows RT is good.There is said it.Sure it doesn’t have a lot of apps and has some serious branding issues, but it’s a good system and a worthy competitor to iOS and Android… or at least it would be if the market would give it a chance. There are reasons that the market is less than enthusiastic for the platform: some of them valid others not so much. Let’s go through them.

Platform Lock-in aka Apps: It’s tough to convince someone to move platforms when they have made a (potentially) sizeable financial investment in another platform and its apps. Also, developers (myself included) have been dragging their feet when it comes to developing for the platform, so there is a pretty good chance that there will be an app that you really love from another platform but can’t get on Windows RT. Data lock-in can be another major lock-in factor, since migrating data between platforms can be challenging if at all possible — try moving app data out of iCloud.

Bad Marketing: Fine, so I teased this one in the intro, but it is a really big issue. I still  can’t successfully explain Windows RT to my non-techie relatives. Sadly, Microsoft insists on using that Windows brand for a product that, though it shares a software core with true Windows, is different in a number of significant ways — chief among them is the fact that Windows RT cannot run traditional Windows applications. Also,  what exactly does a group of dancing university students and other random folk have to do with consumer electronics?

Lack of Devices: Other than the Microsoft Surface RT and (my Windows RT device of choice) the Asus Vivo Tab RT, there really aren’t a lot of good Windows RT devices widely available on the market.

Microsoft: For whatever silly reason there is a vocal group of technorati that write off anything from Microsoft. I know there have been some issues in the past and Microsoft’s current campaign to compel Android manufacturers to pay royalties for patents that Android supposedly violate — I agree this is a scummy business practice but has nothing to do with Windows RT itself.

Yes, I like Windows RT and yes, there are legitimate issues with the platform, but, still, if you give it a fair shake, you might find that there is a bit more there than you initially thought.


Review: Asus Vivo Tab RT

AsusCoder Radio listeners will know that I recently got a new tablet to add to my growing collection of devices: Asus’ Vivo Tab RT. Android fans will take a look at this and be reminded of the Transformer Prime and for good reason — the Vivo Tab and Prime share some common components, most notably the case and they are both designed to be used with their (depending on your retailer) bundled keyboard dock. Overall, my experience has been pretty good.

The Good: Like its Android cousin the Vivo RT holds a charge for a little over a day under normal usage, so power management isn’t something you are going to need to worry about much. The keyboard dock is phenomenal and I find myself replying to fast e-mails, coding small scripts, taking notes,  and editing blog posts on the Vivo all of the time. In almost every case, it has become the device I grab to do some quick typing. The app selection is weak — there is simply no debating that point. However, the Windows RT ecosystem is still new and there are some standout apps on the platform: Tweetro+ and Notepad RT have become two of my most commonly used RT apps. On the games side there is, as on iOS and Android, a lot of junk, but the good games are simply incredible. The killer feature for game developers targeting the Vivo and Windows RT as a whole? Xbox Live achievements. Rocket Riot 3D is a great example of one such game and has fast become a favorite of mine.

The Bad: Despite the hours I have put into Rocket Riot and a few other games, the Vivo is in many ways a work device at its heart. Reading any sort of longform content is awkward due to the width of the device. Additionally, though the screen is adequate, it does leave something to be desired for long form reading when compared to the “retina” iPad. The app ecosystem, though it has its gem, is weak and is likely to stay that way for a while. The trend seems to be that developers who are interested in the platform are just re-releasing titles from other platforms (iOS mostly). I did run into one hardware issue during my usage of the device; if I detach the keyboard while apps are in the foreground the device seems to kernel panic (for lack of a more accurate term) and I have to manually restart it via the power button. Finally, Office works well but feels a bit awkward as does the entire desktop side of the device. I find myself wishing that the Office team had done a scaled down port to “Modern UI” (the UI formerly known as “Metro”) and kept the user experience pure.

Overall, Asus has done an admirable job and most of the issues I’ve experienced are with Windows RT and caused by how new the platform is not by any defect in the device.  If you are interested in a Windows RT tablet, I recommend you look at this one before blindly purchasing a Surface. Questions? Comments? Find me on Twitter and Google+. This post was brought to you by Code Journal and Fingertip Tech, INC.

A Look at Azure and MVC 4

ASP.Net MVC 4 is amazing. There I said it! I know I’m supposed to be the ‘Mac guy’ or ‘Linux guy’ or possibly even the ‘Ruby / Rails guy’ depending on where you know me from but the truth is that I love all technology and often find myself trying out new platforms or playing with some shiny tech toy. For the last month or so ASP.Net MVC 4 has been that new toy along with Windows Azure.

The Good

Azure provides easy to use web-based GUI’s for basically everything you’d want to do to configure, administer, and monitor your app. If you’re not a fan of GUI’s, there are also commandline tools for Windows and Mac.

For you Heroku lovers out there, the MVC / Azure development and deployment experience is very similar to the Rails / Heroku experience. In fact, Microsoft has gone so far as to build in Git deployment to Azure and has even provided an easy to use web-based GUI tool for setting it up. Overall, I was really impressed with what I saw.

Visual Studio still rocks. I’ve been working with Visual Studio 2012 and have been loving the code generation and debugging tools it includes. It simply is one of the most advanced IDE’s on the market today.

Microsoft has come along way since the days of IE 6. .Net’s Razor View Engine provides full support for HTML5. Not only was I happy to see this, but I was also a little surprised to see how far they’ve come in the area of web standards.

The Bad

MVC 4 has one achilles heel: price. Azure itself, like Heroku is expensive, but with Heroku you can, though with a bit of effort, migrate to a generic Linux server. The issue with Azure is that you’d have to pay for a Windows server license and other licensing fees if and when you want to migrate off of Azure. However, the costs can really start to pile on when you factor in Microsoft SQL Server.

The Ugly

There’s not much ugly in the Microsoft web development stack these days.

The Bottom Line

Overall I am very impressed with what I saw and will be keeping a close eye on ASP.Net and Azure. If you’ve been a Rails or Django developer and have never taken a look at the Microsoft stack, Azure and MVC 4 are definitely the place to start.