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.
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+.
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.
Windows 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.
Santa was good to me this last Christmas. Not only did I get a Asus Vivo Tab RT but I also got an HTC 8X. I am currently replacing my Galaxy Nexus with the 8X and have been living in the device for a little under a month now.
HTC has done a pretty good job with the hardware. The phone feels not only light but also sturdy — something I have found lacking in many of their other products and my Galaxy Nexus. The screen is certainly not “retina” but is more than adequate. The speakers are again more than adequate.
With good hardware the discussion turns to the device’s software. To start, I like Windows Phone 8 as an operating system — despite its less than impressive name. As a developer, I even like the API (more on that another day) but as a user who knows something about technology, I can’t approve of the app selection or of the quality of the majority of the apps that I’ve tried. To be fair to Microsoft, there is nothing wrong with their software and a lot of the issues I am seeing are the fault of Windows Phone’s third party developer community or, perhaps more accurately, lack thereof.
Since I’ve been using the 8X as my day to day phone, I’ve been able to do most of what I did with my Galaxy Nexus but unfortunately the workflow has not been ideal. The biggest issue is that I have a large dependency on Google Apps, including Gmail, and Windows Phone 8 is not nearly as integrated with Google’s services as Android; to be far that’s to be expected, but the fact that my email has to manually sync every twenty minutes is less than ideal and I feel a bit out of touch with the Windows Phone. Unlike the lack of third party apps, these Google issues are unlikely to be fixed by time due to the fierce competition between Google and Microsoft; yes, I could just switch off of Google Apps and onto Office 365 but that seems like a lot to ask for the sake of a smartphone.
Overall, I like the device and if I weren’t so invested in the Google Apps ecosystem for my work the transition would be easier. Questions? Comments? Find me on Twitter and Google+. This post was brought to you by Code Journal and Fingertip Tech, INC.
Coder 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.
If you’ve been listening to recent Coder Radio episodes or following this blog, then you probably know that I have been working on a side project (that I am no longer pursuing due to intense competition in the space and a general lack of interest on my part) in Microsoft’s ASP.NET MVC 4 and Windows Azure. Overall, I really liked the developement experience of the stack and Visual Studio is still the best IDE (if you like that sort of thing) on the market today and of course C# was a delight to work in. Unfortunately, the downsides are just not acceptable for the type of projects I work on or first party products I plan to develop; those downsides being the cost of Azure, the cost of SQL Server, and Windows Server.
Azure is awesome. In a lot of ways it is very similar to Heroku: it has easy to configure Git deployment and is easy to configure and deploy. Unfortunately, it also shares Heroku’s penchant for premium pricing. To be clear, both services are great for prototyping or event the 1.0 versions of a project, but if your project hits any sort of scale, you are going to be looking at some pretty hefty hosting costs.
SQL Server is interesting. I don’t know too much about it as it compares to databases I use on a regular basis (ie PostgreSQL). When I started looking into it, I was quickly derailed by cost. That’s right SQL server is one of those things that if you have to ask how much it cost you can’t afford it and that certainly turned out to be true for me. Though Azure does support MySQL, the default (and presumably prefered) implementation of MVC 4 is best used with SQL Server. Due to the aforementioned Azure hosting costs, I would likely want to migrate any successful projects onto dedicated servers or VPSs and that would mean having to pay for SQL Server licensing fees.
Speaking of licensing fees, let’s not forget Windows Server. To be fair, the cost of Windows Server is a lot less than SQL Server and seems to rolled into a lot of monthly VPS plans. Still, I really don’t like a lot of the decisions Windows Server makes, though Microsoft has made some effort to address this issues in Windows Server 2012. In a lot of ways I just prefer working with a Linux (Ubuntu if at all possible) server over Windows.
The natural question you may have is: “since you are scrubbing the project and don’t plan to use anything you may have learned about the stack, didn’t you just waste a lot of time?” I don’t think so. For one, I always feel that it is a good idea to broaden your horizons technically. More importantly, it was good to see how things are done in the more Windows centric world and it was a joy to interact with the .Net community. Comments? Questions? Share them with me on Google+ or Twitter. This post was made possible by Code Journal and Fingertip Tech, INC. If you are Github user please check out Code Journal and if you are interested in having an Android, iOS, or web app developed please contact me.
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.
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.
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.
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.
Earlier today I hosted Coder Radio with Chris Fisher of Jupiter Broadcasting and in the episode we discussed my reactions as a developer to the WWDC keynote this year (2012). First things first. I did not attend WWDC nor have I installed the iOS 6.0 developer release, so some of my information may be incomplete; I have to do this in this way due to Apple’s developer NDA. You can listen to the show to hear what I didn’t like, but I’d rather go through a few things that I would like to have seen that to my knowledge aren’t coming.
This is by far my largest pet peeve with iOS development and using iOS. Why isn’t there are robust way for apps to work together and share data; within reason of course. Android has a version this in the form of “intents” and Windows Phone 7 has a incredibly powerful system called “contracts”. This really gets to me when I consider that iOS is a BSD system yet does not adhere to the UNIX philosophy of allowing many small applications to work together to do big things; yes, I know that iOS apps tend to be smaller in scope than their desktop counterparts but to date there is no real way for them to work together. There is so much functionality that cannot easily be done on iOS due to this restriction.
On my Android and Windows phone I can glance at the screen and get the latest tweets, view other data (such as a stock ticker), and play a song, or begin or pause listening to an audiobook. On iOS, almost all of those things require me to launch separate apps. That’s silly not to mention a bad user experience. I know there are definitely battery life concerns if you have too many widgets open, but there is no reason that Apple can’t add some sort of restricted mode for simple widgets to run in.
Ever since I got my hands on my 4S I have been waiting for a full Siri API. Apple has been working on it, but to date there is no fully functional Siri API for third party developers. This is understandable given how often Siri simply does not work but it is still a shame.
That’s all for now. Now I can finally take a look at the dev preview! For feedback please find me on Google+ or Twitter.