Microsoft, Which I Hate and Which I Love

Ok, I’ll admit, I got issues with some of the past Microsoft ethical breaches of business dealings. Sure, but who doesn’t? Their technology that they develop ranges from complete crap (re: Bob, paperclip, sealed classes, The 1st X version of Entity Framework) all the way to the completely awesome amazing stuff, like the Node.js SDK & work with Windows Azure for Node.js, Visual Studio can be amazing sometimes too, and there are other things that are really solid pieces of software.

So here’s my happy list and shit list of Microsoft Software:

Happy List

  • Visual Studio – When it works, after it takes 20 seconds to launch and you finally get the bloody project open, it’s a great IDE.
  • Live Writer – For blogging, nothing holds a candle to this product. It is spectacular, I wish it ran on OS-X because then I’d still use it. Even with all its greatness, it’s not enough of a motivating factor to use Windows as my core native OS.
  • Web API – This should have been attempt #1. Instead of the catastrophic mistake they made in WCF. (see below for WCF comments)
  • C# – C# is actually a great language and I find that it is very similar, but in many ways knocks the socks off of Java. Especially in ease of use for a number of things. Which of course is in conjunction with Visual Studio, etc.
  • Sketchflow – This is a great post paper prototyping software package. I don’t know many that use it, but for creating a working prototype or mock up, this software is great.
  • Windows Phone 7 – This is actually not a bad OS for a phone. It is a drastic improvement over all the previous MS phone operating systems.
  • Metro – I actually like Metro. It is simple, I feel like I’m 5 years old when I use it and I think in the same vein of what Apple has perfected, it’s just enough for the average computer user to make the tablet leap. It could be truly big.
  • XBox – Nuff’ said. Xbox kicks ass on massive scale!  🙂
  • Windows Azure – Primarily around the node.js space. They’ve done a stellar job and have an absolutely amazing product there.
  • MSDN – This is one of the best developer spaces around. MS devs often complain about it, but really the alternatives are weak and few between.
  • ASP.NET MVC – Rails envy brought to focus in a good, solid, organized and nicely put together product.

Angry List

  • Vista – Nuff’ said.
  • Win ME – Nuff’ said.
  • Most of Windows – Nuff’ said.
  • Stability, speed, launching, and related software issues that Visual Studio, Windows, and almost every Microsoft package has compared to the responsiveness of OS-X and general *nix operating systems.
  • Metro on Windows 8 – As a power user, I already hate Metro. Microsoft is about 6 years behind in the phone and tablet wars and it shows. As a power user I’ll admit, iOS isn’t much better or worse, but the thing is it is relegated to the iPad and iPhone (iPod). Windows 8 is going to be on everything. On a tablet I don’t want a flaky desktop tainting my experience and when I’m trying to do development on a desktop I don’t want a wierdo start button replacement screen buggering up my desktop work. Generally, so far, I’m not really happy with it or seeing how it is going to speed up any of my work or help me be more productive except in surfing Facebook or Tweeting. Somehow, that doesn’t seem all that important.
  • Windows Azure – For infrastructure, and almost everything else besides node.js stuff, it’s still a catastrophic mess. It looks absolutely great, but I would still struggle to suggest someone use it for all but node.js deployment. No offense, it’s just not in a space yet that works for most of the companies I work for. It might get there, but at this point I still find a lot of frustrating points.
  • Biztalk – Nuff’ said. It’s absurd anyone pays for this.
  • Sharepoint – I get the usage, I still hate the package. There are vastly superior alternatives out there.
  • WCF, Entity Framework and every other piece of software Microsoft made almost impossible to write unit tests for. All while throwing up a middle finger and screwing over their actual developer community. Many of these offerings did not have good results in the end. Hopefully developers are able to generally ignore the versions that were horrible and just use things like code first EF or Web API now instead of the previous years version of WCF & EF.
  • Windows Server – I’m not sure this server even now, understand how to interact with the Internet, HTTP, TCP/IP or a number of other Internet related elements well. It does it, but at the core there are a lot of problems still.
  • Hyper-V – Not sure I should even get started. Microsoft ignores it for years, then builds a cloud on top of it and pretends it is Enterprise ready. Knowing full well that it is probably the worst virtualization solution on the market today. Machine management is bad, launch time is bad, setting up images is ridiculous and the list of problems only grows. Anyone using this product is extending 2-5x more resources than using a comparable OSS or VMware virtualization product.

Software I’m indifferent about…  i.e. software that is ‘aight’ and I could go either way on.

  • SQL Server

There isn’t that much I’m apathetic about. I’m usually either stoked by their product or horrified about it. Any other key software I’ve missed? How do you feel about this list of software? Got a happy list or shit list of your own? Post a blog entry on it and I’ll add a link back on my entry to yours – just leave a comment (or link back of your own).

UPDATED:  Here’s another entry of some MAJOR issues that found in Windows 8. They’re some pretty dangerous gotchas!

A Tour of My Workspace & Dev Tools – Virtual & Physical

First off, here’s a tour of my physical space where I do the bulk of my coding when I’m not travelling.

Right Side Monitors (and iPad3)
Right Side Monitors (and iPad3) Click for full size image

The second bit, a good many months ago I published my developer tools list, which is still available in my blog entry “My Current Windows Developer Machine“. That entry however is very outdated. I’ve since dropped the Windows OS as my primary developer platform operating system for a deluge of reasons. In it’s place is OS-X, Ubuntu, and VMs for Windows and other operating systems. Even though I’ve changed my OS of choice, and boy has life been much simpler ever since, I still do a ton of .NET & C# Development. My toolset however has been minimized for Windows. It now includes the following.

Music Generation
Music Generation (Click for full size image)

Virtualized Windows Development Machine

  • Windows 7
  • Visual Studio 2010 w/ SP1 + other downloads available at http://www.asp.net
  • ReSharper ( I keep this updated, even if I buy it out of pocket because it saves THAT much time w/ .NET Dev )

Yup, my Windows machine is now THAT simplified. Dev on it is just as easy or easier before. With an SSD drive in my MacBook Air and the iMac I have w/ 16GB of RAM, it’s easy to have the VM perform BETTER than a natively installed version of Windows 7. I know it is hard to believe, but it is true. But I digress, I won’t try to sell you on that. Give it a try, research it, you’ll need to know for sure yourself to make that leap.

My main development OS these days however is OS-X, and here’s my stack of tools for it.

  • Ruby on Rails (It comes w/ the default install, but in case hit the site to check out the latest bits)
  • Gems so I can get any of those shiny bits I need.
  • Node.js w/ Express.js generally.
  • WebStorm for PHP/JavaScript/Ndoe.js hacking w/ an IDE => Check out JetBrains
  • IntelliJ for Java Dev => Check out JetBrains
  • Objective-C with XCode (easy, just grab it via the app store)
  • TextMate
  • Sublime 2

For office things, I sometimes use Microsoft Office, but generally Google Docs works just fine.

For video editing and creation, such as the video above I use ScreenFlow. Again, something you can easily get via the App Store.

I use MOU for editing README.md files on github, cuz it makes life simpler.  🙂

…and that about wraps it up. Enjoy. If you have any suggestions, thoughts, or rants, please let me know in the comments!  Cheers!

Huboard, Github Issues ala Kanban, Implemented…

Recently I discovered Huboard. Thanks to those that helped me find it! Huboard is really simple and helps keep that kanban visibility when everyone can’t be in the same environment all the time. I setup a board for one of the pending OSS Projects that will be coming live. These are the steps I took. 1. Go to http://www.huboard.comand login with your Github identifiy. This will use your existing github account and you’ll then have access to all your projects to setup and use as you see fit with Huboard.

Allow Github to Provide Identify Access
Allow Github to Provide Identify Access

2. Huboard will now list all of your projects you have github.

Huboard Repository List (Click for full size image)
Huboard Repository List (Click for full size image)

3. Get your list items all labeled appropriately. (All explained below image)

Issues listed with appropriate Labels (Click for full size image)
Issues listed with appropriate Labels (Click for full size image)

The key to Huboard is the simple tagging. Each issue in the project will display as an open issue on the repository/project list in Huboard, however to get them to show up on the kanban there is a special label pattern to use. Simply add a number, dash, and the title of the issue for it to be listed in the kanban. Then apply the label(s) to the issue. For example, in the screenshot above you can see that item #3, which has a titled of “#3 – Initiate Project & Setup” also has a label of “2 – Ready”. This label will list the item in the column “Ready” on the kanban board. The same goes for each of the items that are listed as backlog. The kanban board in Huboard uses the number to order the columns by the labels and the following title as the column header. The respective kanban board for the issue listing above looks like this.

Huboard kanban (Click for full size image)
Huboard kanban (Click for full size image)

For now I’ve primarily been just adding the issues and maintaining them via the Github web interface. However the items can be moved via commit messages. Here are some examples;

  • push GH-#
  • pushed GH-#
  • move GH-#
  • moves GH-#

With that you get maximum Github Awesome + Kanban Communication.

Macbook Air Multiple Monitor Support

The Macbook Air is indeed an “insanely great” device. I have slammed this thing around, physically and virtually, from the bicycle messenger bag situation described in my buying decision post, all the way to running multiple virtual machines and multiple monitors! This machine, of course if you’re using lean, clean, powerful, and intelligent built software, is top of the game for light weight machines.

The “how did you get multiple monitors?” question has come up several times since I bought the Air. So I’ve put together this blog entry on multiple monitor support, with instructions, and what can expect to run once the monitors are hooked up.

The first things you’ll need to get up and running are the appropriate gear. I purchased a Newer Technology USB to VDI, HDMI, and VGA  Adapter.

New Technology Monitor Adapter (Click for Larger Image)
New Technology Monitor Adapter (Click for Larger Image)

This adapter comes with an adapter to connect to the adapter for HDMI and VGA in addition to the already built in DVI connection on the device. Once you receive the adapter unpack it and get it installed. The driver will probably need retrieved from the company’s site, I wouldn’t use the included CD as the driver is a little dated. The latest OS-X driver supports Lion & all the other versions.

Adapters (Click for larger image)
Adapters (Click for larger image)

The other thing you’ll need is an appropriate Apple Adapter for the actual Thunderbolt Port as shown in the forefront of the image above. With all these parts you’re set for some wicked dual monitor or even three way monitor support.

Multiple Monitors Hooked Up (Click for larger image)
Multiple Monitors Hooked Up (Click for larger image)

The monitors fully activated.

Macbook Air + 26" Left Monitor + 26" Right Monitor (Click for larger image)
Macbook Air + 26″ Left Monitor + 26″ Right Monitor (Click for larger image)

I wanted to point out a few more things before wrapping this up. A follow up question to how I have these setup is usually “isn’t their lag or slowness?” Well, here’s a short review of what I was running while writing up this review.

Webstorm, Node.js App Running, w/ OS-X Bar (Click for full size image)
Webstorm, Node.js App Running, w/ OS-X Bar (Click for full size image)

Screen #1:  Macbook Air 1440×900 Resolution

  • Webstorm 3.0
  • Node.js (application running)
  • OS-X Bar, etc.
Screen #2 (Click for full size image)
Screen #2 (Click for full size image)

Screen #2: 26″ at 1920×1200 Resolution

  • Viewing in Chrome: http://compositecode.com
  • File Copying & Management of Drives connected via USB Hub with Finder
  • Ubuntu Linux Load Booting up in VMware Fusion
  • CloudFoundry Instance running (Linux) in VMware Fusion
Screen #3 (Click for full size image)
Screen #3 (Click for full size image) 

Screen #3: 26″ at 1920×1200 Resolution

  • Pandora providing some Children of Bodom to code to.
  • VMware Fusion machine library.
  • Chrome executing the Node.js example code.
  • iCal displaying upcoming delivery dates and meetings via Google Calender Feed.

Summary

The Macbook Air isn’t going to run Modern Combat 3 in two windows or anything crazy like that. It will however provide a powerful and capable system to code, develop, run virtual machines, web services, and other things that you would need to work with as a software developer. It may only have 4GB of RAM, but between the clean architecture, execution, and design of OS-X to use that i5 (or i7), the 4 GB of RAM, and extremely fast 256 GB SSD, this machine can handle its own.

STATUS UPDATE:  June 28th, 2013

I now use two Mac Book Air Laptops. I have the original which I wrote this article using and a newer 10″ MBA with 8 GB RAM and related improvements. In addition to these laptops however I now use an iMac 27″ that is connected to my other 27″ Cinema Display. This is dramatically more performant and easier to use than trying to run two monitors on either of the MBAs that I have. In that light, I no longer use the connector nor know if it works with the latest Apple products. I’ve since given it to a friend who does however use it, and the friend tends to stay up to date with the latest Apple OS releases. Thus one could assume that the device works with the latest OS-X but you’d have to do your own research.

Thanks for reading my blog, cheers!

-Adron

Small, Powerful, Elegant, Sexy, and Hard Core

Ok, it’s that time of the year and I’m at the phase of the cycle when it is computer purchasing time.  What do I want, what do I need, who has the best options available? In order of priority here’s my wish list for the ideal machine.

  1. It must be able to run Windows & Linux. Even better would be the ability to run OS-X, Windows, and Linux. Preferably with Linux or OS-X as the core operating system and Windows either virtualized or dual booted.
  2. Another high priority is I want elegant, sexy, and strong design. But not just in appearance but in functionality too. I want the device to be strong. I want the material to be fabricated well, I want the quality and durability to be built into the device. This comes down to the device being a single mold, probably of a high quality material like aluminum.
  3. I want as much oomph as I can get out of the hardware. Demanding elegant and sexy usually dictates it won’t be powerful. Demanding tough is usually another strike against that.
  4. Another thing which is super important, but I may be flexible on, is the resolution. I simply want as much resolution as possible.
  5. The last thing, which isn’t as important, is I don’t really want to pay more than about $1500. I’d be all the happier if I can find something for even less.

Narrowing Down the Machines

The first thing I did was check out what information was available on what I would choose as my ideal computing device. I had found, through research and talking to others, that my options where either one of the new Ultrabooks coming out from different manufacturers or an Apple Macbook Air.

With the narrowing of the playing field and knowing a few things about the Macbook Air already, I decided to look into the Ultrabooks more thoroughly. Several, such as the Lenovo option got dropped immediately. The were huge by comparison to the Air and other Ultrabooks. If several options existed around the half an inch thick size, that was what I was going to aim for. After looking through many of the options it looked like the Acer & Asus were the real viable Ultrabook options.

Touch, Feel, and Fabrication Quality

The next step, was I needed to feel and touch these machines. I wanted to be sure that their marketing hype wasn’t going to land me with a laptop that was flimsy or the fabrication was poorly completed. No machine would be in the running unless the fabrication and manufacturer was of equal or greater quality than the Apple Product.

My first trip took me to Fry’s out in Renton, Washington. Fry’s was an embarrassment, they barely had any products whatsoever. So I plotted my next trip, which a few days later took me to the airport Best Buy in Portland, Oregon. They had everything! I was euphoric. I tried out more than what I was just looking at, and must say some of the tablet options are creeping into replacing laptop options real soon! But I then refocused and aimed back at my main goal, finding out the build quality of the Acer and Asus. This ended up being instant. I touched the Acer and it was, as Steve Jobs would say, “shit”.

Honestly I was shocked by Acer. Maybe they’re just aiming for a low price point, but after touching the device and feeling the horrid quality I immediately dropped it from the running, regardless of how much lower the price might be. As with my priorities above, price is the last concern at #5, I’m not going to settle for a crappy build quality because I’d pay dearly for it later. Why?

The reason why I want something strong & sturdy is because of several things.

  1. I ride a bike on a regular basis and whatever laptop I have needs to survive the bump and grind of the bike commute, the bike runs & errands, and other outings around urban areas. The laptop will be bumped and flung around in my messenger bag, I don’t want to pull out a dead laptop.
  2. I walk, take transit, and generally will up and climb to a lofty rock overlooking a shoreline to have a better area to work and think. Sometimes, I might stumble, trip, or otherwise impact the device. Thus, see above reason on not removing a dead device from my pack.
  3. While working in coffee shops, bars, conferences, or other activities the laptop will be pulled from my pack on a regular basis. While in my pack it’ll probably end up getting kicked, nudged, dropped, or otherwise inadvertently abused. Again, I don’t want a dead device in my pack.

Narrowed to Two

Alright now the battle truly begins. The Asus on one hand and the Macbook Air on the other.

The second thing I decided on was that I’d go with only the 13.3″ devices. They have greater options around storage and processor speed, so it seemed like a good path.

I pulled up the spec sheets on both of these machines. After a thorough review the two biggest glaring differences amounted to these features:

Resolution

Macbook Air: 1440×900 versus Zenbook UX31: 1600×900

USB Connections

Macbook Air:  USB 2.0 versus Zenbook UX31: USB 3.0

Battery “Reputation”

This is a bit of a weird one. All I can say, is that those that have tested the thing have said the Zenbook doesn’t measure up battery wise.

Macbook Air:  7+ hours versus Zenbook UX31: probably not 7+ hours

Operating Systems

This is actually a big problem for me, as the Zenbook actually runs Win7 and Linux support for all devices is a little questionable. I know for a fact that OS-X runs flawlessly on the Air and outperforms Windows 7 in about every aspect of performance. So I really want to be confident that I can run OS-X or Linux as the core operating system and then either virtualize or dual boot into Win7.

Macbook Air:  OS-X == Win! versus Zenbook UX31:  Win7 == Fail

So with all those factors taken into account I finally chose…

…drum roll please…

…the Macbook Air.

Summary

These devices are really close, but in almost every measurement the Air comes out slightly ahead in some way or manner. In addition I have the odd requirement of not wanting Windows 7 as my primary operating system. After researching “Zenbook+Linux” and “Zenbook+Ubuntu” it sounds like getting Windows 7 off of the Zenbook and getting Linux running on it is problematic at this point. I’m sure that in 3-6 months Linux will probably outperform and outlast Windows 7 on the device, however now that isn’t the situation.

In other little ways the Macbook Air still has a slightly higher quality also. The power adapter and magnetic connector are less troublesome than most other laptop style power adapter connections. Basically every single thing, once you use it for a while, seems to have a purpose or intent behind the design.

However I will add, that the Asus is of extremely high quality, the absolute highest for a dedicated Windows 7 Laptop. If all somebody wants is a Windows 7 machine with no concern for OS-X or Linux than the Asus is your only real option. The higher resolution almost sent me to get a Asus and is absolutely a big advantage for Win7 on the device. But if you’re still wanting the absolute top tier quality, features, and capabilities for a device that is this elegant and sexy, the Macbook Air is still the prize.

With that, I’m off to determine my purchase options.