Chariot Training Classes

Training Courses

I run Chariot's training and mentoring services. We provide training in AngularJS, HTML5, Spring, Hibernate, Maven, Scala, and more.

Chariot Education Services


Chariot Emerging Tech

Learn about upcoming technologies and trends from my colleagues at Chariot Solutions.


Chariot Conferences



Surface Pro 3 - For anyone who asks

This is my review of a Surface Pro 3 I've been using as a travel-training machine for the past month. In short, I LoveHate it, but mostly love, as long as I put it in its place.

It's NOT a mac.  It's NOT unix.  It's limited. But not as much as an iPad or Android device - it's a fully-fledged machine.
I got the i5 256GB 8GB RAM model. Nice, wish I would have spent on the larger storage option but it's not too bad.


Typecover is OK, but notice the little LogitechOne nubbin on the end - works fantastically well with the USB radio and my various mice and keyboards.
The screen is gorgeous, touch is responsive.

About that OS

Windows 8.1 is meh (app store, well, sucks - maybe that will improve over time).
Cygwin is as horrible as I remember. When will Microsoft put bash in there? When?
Windows 10 is a great upgrade but it's nowhere near ready yet for consumer use as it's just a beta.  The pen acts up, the screen resolution management isn't there yet, but I really want it once it comes out. Biggest thing you lose? The pen top button (which launches OneNote when clicked) stops working, and all sorts of hacks don't do the right things.

Google, whereforout my Google? 

Big pet peeve - you can't sync Google email to it or calendar unless your company ponies up for the paid version of Google Apps - Google dropped support from Apps for calendars and folder sync etc., and you have to use Google Apps sync - this is too expensive for that one feature IMO.

What about Linux on that thing?

Ubuntu was FAN-TASTIC dual-booted. I spent hours tweaking it and getting the type cover working. Ultimately it was just easier to tote around some Logitech keyboards and mice. But then Windows 10 did a firmware update (just scroll down on my homepage to see the hate it fostered deep inside me) and blew away Grub. I couldn't recover from that, wanted back the drivers for Windows 8.1, and did a wipe. Sad, but needed. Maybe the open source movement in Microsoft we're hearing about will eventually soften their need to control the box, but I'm giving up for now. VMWare is sufficient for some development on Ubuntu in a pinch.

Office Software

I have Windows 365 on it, and that's a nice distribution. OneDrive is equally useful as Dropbox was. I now have OneDrive on my mac, as well as OneNote, so I can put files in a shared space and share my notes. OneNote blows Evernote out of the water in terms of note taking by hand with the stylus (and it is much better than S-Note on Samsung Galaxy devices) - but I don't like the way it does tags (tabs across the top of the UI). But it does have plugins, so I will look into options for easier navigation. There is an Evernote to Onenote importer if anyone else gets a cheaper i3 Surface or something, but it's one-way so keep that in mind.
Seriously, you should look at OneNote if you use Evernote - it is a click-and-type note taker that lets you embed free-form content where it makes sense, and search is pretty good. If you have good handwriting skills (or nunchuck skills, etc) it can search your handwritten notes too with background indexed OCR.
One other note. My use case is that I wanted a teeny laptop to take out when I teach that is a full computer, and for taking to meetings for notetaking with the pen. Travel with one device rather than two. For that purpose, it's perfect.

For Developers?

For a daily developer pad, maybe not so much (depends on the task)!  (I used it this AM to do correspondence and email, and a bit of development, but I'm on the macbook pro right now, after admitting this to myself this week. I'm back with my buddy Mac for some of my work). If you're a web designer, photoshop user, artist, musician, etc., it's really a perfect device. Multi-core deep learning or hadoop? Nope, move on for now, the heat management isn't yet there to keep the cores humming, and you won't get enough space... The MicroSD card helps there, but it's not very fast.  But, if you're comparing it to having two devices (a tablet and a laptop) yes, you can get a lot done with just this one.

Happiness Graph for Surface Pro 3 and me

This is my silly sketch take on whether I'm happy using this thing or not. Notice over time it has lots of bumps. inspired by this really silly blog post about productivity with Angular 1.x, but executed SOO MUCH POORLY on OneNote with the Surface pen.


Ubuntu on EFI-based Surface Pro 3 - My thoughts...

Let me first start with the blog equivalent of a huge curse storm:



I gave up on dual-boot. Mostly it was because I had nowhere safe to turn. I could boot Windows 10, a preview release, which doesn't work well with the Surface Pro 3, or I could TRY to boot Linux, which doesn't boot. Fail.

So, I decided to load Windows 8.1 back up again. But I couldn't easily. Why? Because I still had an existing Windows partition, and because of that, it would always load back Windows 10 with my downloaded restore image. I thought I was hosed, and found lots of people complaining about it. But it turns out I had to use diskpart.exe from my boot drive and clean the boot disk completely. This made it re-partition, and then I could install Windows 8.1. PHEW. It's VMWare for me for any Ubuntu-foolery.

Back to the story...

ok, with that out of my system....

EFI - Eww, For[insert-your-diety]sake, I [don't understand who architected this]

Ok, I'm a geezer. The kind of guy whose teenage sons think "what a fat old slob."  But in that slobbiness is a geek who doesn't give up lightly on his projects. 

I'm about to give up on my project.

But somewhere along the line, Microsoft decided to screw us up. Royally. It seems that the screwup is the EFI bios.

EFI is a new, lockable booting system. You can disable boot security, and then you should be able to load your favorite OS or dual boot.  But, when Microsoft comes along with a firmware update, they decide to kill your boot sector. Screw you, Microsoft. What the hell are you thinking?

So, you can have a nice, working Linux instance, until your Windows updates come along and trash it. WTF. Who the hell thinks up this stuff, mad scientists?

I had such a nice system set up:

1. Boot into Windows 10, read my kindle, play music, work on Photoshop

2. Boot into Ubuntu native with Grub2, get all dirty with tech, yo.

3. Run VMWare Workstation on my Windows 10 instance, attach to the SD card and run my software almost as fast as native (yeah, but not completely as we've only got 8GB of ram on this thing)

So, somewhere after I reached #3 nirvana, a Firmware update went and trashed Grub, and now I'm back to no-matter-what-I'll-ignore-you-while-you-try-to-recover-your-grub-config-world. I've even tried re-installing Ubuntu completely on the partition, and now I can't figure out where the hell to put the Grub boot loader - is it /dev/sda, /dev/sda2 (the EFI partition), /dev/sda4 (the Windows partition), what?

Seriously, someone should take the person who decided to overwrite the boot sector out and [scene missing].

Making the tablet safe for democracy, one boot at a time

#$@^@#$%#$% (again I start cursing).

So, what gives Microsoft the feeling that they can just come along and lock us down? I've been a mac user for a decade, but only because it has a) better apps, b) UNIX, and c) better hardware. The surface is an awesome piece of kit physically, but what a waste it is if you can't use it as "god" intended - and since I'm agnostic, "god" is the developer. Me. The guy who purchased it.

Make it stop, please!

Hey, software companies. Stop your 'let's control the horizontal and the vertical' crap. It's really not necessary. Or at least give us a switch that turns off the stupid training wheels.

Why is EFI so damn hard to work with? Why can't we have the option to hack on our own machines? Somebody better start thinking about innovation before we all just have to sheeple ourselves into Windum 11, which will use a big crayon and give you a free binkie. Because I'm just not having this "trash your other crap" party anymore.


And boot-repair doesn't help

So, you use Boot Repair. It runs all the way through, then fails miserably. It even warns you about EFI - like telling you that you just passed the gates of hell and are headed to the abyss. Anything you check there? Ignored.

I've turned off the malware checks on startup, I've turned off secure boot, I've tried sprays and powders. Nothing works. Sigh. Yay me.

If I find the answer, I'll post it. Up top. And do a mea culpa.

Happy hunting, folks.


Get your Karma back with NVM

Have you noticed that the command-line Karma runner suddenly isn't being put in the NodeJS bin directory? Yeah, me too. For people with a static NodeJS directory, installed via a package manager or hard install, you can just add this to the path:


But what if you use NVM? Especially on Linux and Mac, you have a pretty cool option, especially if you use a 'default' alias for your current node installation. Put this in your .bashrc script, after your source of the script:

   export KARMA_DIR=~/.nvm/v`cat \

Then you're good to go!


Coming up May 22-23 - AngularJS Training at Chariot Solutions

If you were looking to take an AngularJS course, now is the time. We're offering a two-day fundamentals course on May 22-23 that covers:

  • A primer on modern Javascript
  • Modules
  • Views and Routing
  • The Controller
  • Services
  • Directives

Register Today!

All of this and testing, focusing on Jasmine and the Karma test runner. You'll learn a lot in a short period of time. I hope to see some of you there.

If you are interested in a private training course offering, drop us a line at our website and we can discuss.


Eclipse (or STS), Javascript, SPA and me... An open rant

Ok, I just sent out a tweet I'll probably regret. But let me state my case: there is only one traditional editing company that 'gets' Javascript IDEs right now in the world of Single Page WebApps - and that's JetBrains. The other option is VIM for me... Or Brackets (AWESOME tool). But I want my CTRL-SPACE code fill-in.

I've been running a training course that involves a JavaScript Single Page Web Application (SPA) in AngularJS. Like many of these platforms, it involves mounting a number of other JavaScript libraries, and they are generally mounted in a minified way unless you need to debug into them (long debate I'm side-stepping here).

My tweet about 30 minutes ago seems to have gotten legs, and I'm about to duck under an earthen barrier to avoid the flack:

Whomever has power over STS and Javascript tooling, can you play nice or integrate with JSHint and ignore my minified SPA libs?

Here is my challenge:

Given a Javascript-fronted single page Web Application, I want:

  • Ability to run my SPA in a simple HTTP server quickly
  • Instant editing of my application scripts with JSHint right there in the problems panel, without redeploying or caching issues
  • Strongly integrated maven-based tools for hinting with JSHint
  • Strong integration with GruntJS - it's the Javascript ANT tool now
  • Integration with Bower to index the source of repositories that we've downloaded
  • Integration with NodeJS's dependencies to install tools, etc...
  • Native integration of Jasmine and Karma (if I have NodeJS integration) to run the tests, or maybe a test generator plugin to generate the test runner on the fly

Is anyone in Eclipse-land working on this? The closest I've gotten to Javascript happiness is using WebStorm. But it doesn't support these tools directly (I have to execute them from a command prompt panel). I love WebStorm for its strong tooling, but even that one is missing Grunt as a plugin.

For clients who need to stay on Java-based build tools (because they're not switching their backend to Node/Express) but who are moving into SPA + RESTful Spring/Java EE apps, I think we'd see good adoption of a forward-leaning Eclipse (since it is kind of the enterprise developer's lingua franca).

Am I off the mark here? Tell me so in the comments...