November 15, 2015

What's A Web Developer Gonna Do With A Gaming Notebook?

In my previous post, I shared how I came to the decision to stick with a PC versus joining the 15 inch MacBook Pro cult. Being a Jack-of-web-trades, there are areas of Web Development that interest me, that fall on the Ops side of DevOps. Areas where having a particular set of skills could set one apart from other web developers. Continous Delivery and everything that it consists of, is something I have always wanted to pursue, but have never had the opportunity, until now.

First order of business is my return to Linux. I have tried many times to enter the world of Linux, but have crashed and burned from frustration, or maybe impatience, that normally doesn't affect me. The myriad layers of barriers I run into with Linux cause a committment of a great amount of time, that usually burns me out after about 10 to 12 hours. Like when I loaded Ubuntu on a spare notebook, and I cannot for the life of me figure out how to get a basic necessity like Wifi working on it, it just blows my mind, and I end up punting. Shouldn't Wifi just work, right after an OS install? But no, there are countless different commands to try and not one of the first 10 fixed the issue. Insane. Just one example.

So this weekend I loaded Fedora Server into a VirtualBox VM 3 times. It took 3 times, because the first time, I installed Fedora Server 23 and it worked beautifully, I was really happy with it. Then I went to install Docker, and Fedora Server 23 isn't supported yet; only version 21 and 22. I said F-it, I am doing it anyway, and it didn't work. I couldn't go any further, and I didn't know if I wasn't doing something right, or if it was because it was version 23. I had no choice but to try it with Version 22.

I loaded another VM with Fedora Server 22. Now, when I installed version 23, some things worked really nicely, that didn't work so smoothly in version 22. I like to save some time, by choosing the install settings I'm really going to need, prior to installation, even though tutorials say to ignore them for now. I had to check disk encryption, it seemed like a good idea. It worked great in version 23, no issues. But version 22 put up some massive barriers in my way. I couldn't even connect to my server via the Windows Command Prompt. It said the SSH key had been changed. A man-in-the-middle attack might being happening. (This could also have not been related to disk encryption at all, but it felt like the disk encryption might possibly have been making it more difficult to connect from the Windows Command Prompt.) So I deleted all of the SSH Keys and made a new one. Nope, didn't work. Couldn't figure this one out, so I re-installed Fedora Server 22 without disk encryption. I am almost to the point where I need a Linux expert to sit with me, to act like a guide, to give me the back stories as to why I should or shouldn't do this or that. As with all new things, I am in very unfamiliar territory. Maybe a few more YouTube videos with get me through.

My goal is install and configure VirtualBox with Fedora Server on it. Once that is accomplished, and I can get Docker installed, then my deep dive into Docker begins. I want to get the Atlassian Dev Tools running with Docker ( Jira Software, Confluence, BitBucket Server, Bamboo, and HipChat ) in there own containers. Then ColdFusion/Lucee. Then Couchbase. Then I attempt to get some code both git pulled from BitBucket Server, and then deployed to the web server.

I should mention that Test-Driven Development (TDD) and having tests to run prior to deployment, are an important part of this exploration too. I will include some very basic tests at first, just to make sure they are running. After they are running, I can go back and add better tests, and I continue working on the code. I will use Tape with Javascript, and TestBox with my CFML code.

When I am up-to-my-neck in a project, I need to be able to work, a lot. Having the infrastruture parts already worked out will give me the ability to re-invent my workflow to be significantly more efficient. I spend way more time than I would like, installing and configuring servers and tools. So much time, that I get discouraged by it, and never get to write any code; which is the fun part.

My new Alienware 15 R2 will give me the mobility I am looking for, but will be able to handle anything I throw at it, be it virtualization, containerization, mobile development, video editing, or writing code. It will support my lifestyle of having six Chrome windows open-at-a-time with 50+ tabs in them. The 4k (Retina-like) screen will be easier on my aging eyeballs. It will give me the capability to demo results at a moments notice. And I have some video-related pursuits I would like to try, in addition to UX/UI layout and design (with Adobe Comet, not yet released).

Imagine if setting up a new server to run a test is as easy as one line at the command-prompt and in 10 to 30 seconds I am running the code. Some people have been doing that for years. It's all new to me, but soon I will be sharing this with my fellow CFers in Kansas City, among others. This is where I am headed, and I will blog about all of it, throughout my new journey. I might even find some time to play a game on it.

November 12, 2015

Bought A New Computer, Had Nothing To Do With Fruit

I almost did it. I almost caved and bought a MacBook Pro. But before I make big purchases like that, I always do my research first. And what I discovered, the more I read, was that Windows 10 is fixing many of the features that made OS X unique, like copy and paste into terminal and spaces (virtual desktops). In fact, after using Windows 10 now for a little more than a month, it is not only way better than any previous Windows OS, it is better than Mac OS X. Just like Android is years ahead of iOS, there isn't anything Apple does to OS X, that Microsoft can't improve on, and Windows 10 proves that.

I read a lot of user comments on Quora and Reddit, and what I related to the most, is that nothing Apple makes, software-wise, really clicks with me. To some people, it just doesn't click; it doesn't feel right. Using Mac OS X feels like I am fighting against the grain. My familiarity with Windows, and all of the improvements in Windows 10, it just feels right to stay with it. I am not a .NET programmer, and really have little use for PowerShell. I stay away from IIS as much as I can. But for CFML with ColdFusion/Lucee, Javascript, NodeJS, and all of the front-end work I do, I can do it all in Windows.

Now there's no debating the quality design of just about everything Apple makes, hardware-wise. But the specs are always just a little behind the curve. The PC market seems to always be slightly ahead of the curve, and because of this, it really makes paying the premium price for Apple hardware seem silly to me. But I was ready to pay that price anyway.

I decided months ago, when the delay of the quad-core Broadwell chips for the MacBook Pro was announced, that I would hold out until the quad-core Skylake chips were released instead. Intel uses a "Tick-Tock" model for their microarchitectural process changes. A "tick" represents a shrinking of the process technology of the previous microarchitecture, and a "tock" typically designates a new microarchitecture. Every 12 to 18 months, there is expected to be one tick or tock. And typically a tock means a significant increase in speed. So Big things were expected for Skylake, because an increase in speed hasn't happened since Sandy Bridge. While Haswell was the last tock, it didn't increase speeds very significantly; it was mostly efficiency gains contributing to longer notebook battery life. Broadwell was the tick, after Haswell. So Skylake is the tock.

Apple had great difficulty getting the Intel Broadwell chips to work in the MacBook Pro. They released dual-core (not quad-core) Skylake chips for the 13 inch MacBook Pro, but kept the quad-core Haswell chips in the 15 inch MacBook Pro. Now that Skylake is released officially, it seems that if Apple were smart, they'd just leap-frog over Broadwell and Skylake, and wait for the quad-core Cannonlake, the CPU planned after Skylake. But Cannonlake has been delayed to mid 2017, so long that Intel had to fill the gap by sneaking in a CPU release prior to Cannonlake, called Kaby Lake. With all the uncertainty with Intel, I can't imagine the MacBook Pro 15 inch will be upgraded in CPU anytime soon. What's more, even if they decided to use Skylake anyway - it has been a huge disappointment. Intel chose not to deliver the Skylake CPU everybody expected, with the huge increase in speed and performance. Instead we got a far more efficient CPU and a modest 5 to 10% performance increase. This CPU will improve notebook battery life signficantly, in some cases doubling it, but we won't see a quad-core Skylake or Broadwell in an Apple MacBook Pro for many months; maybe in 2016?

So considering the signficant improvements of Windows 10 and the uncertainty of Intel and the MacBook Pro, I researched a new PC notebook. I've only ever had 17 inch notebooks, but this time I decided on a 15 incher. Something more portable, but large enough my big hands can still type on it. With a 4k screen, to compete with Retina, I should get tiny text like before the 1920x1080 HD days. I want pretty good battery life (I've never had more than 2 hours), killer graphics (better than MacBook Pro), 256GB PCI-Express 3.0 SSD, and under $2500 which is slightly less than what a MacBook Pro 15 inch would cost.

Being a Veteran of the U.S. Navy and the Gulf War, I qualified for a 15% discount from Dell. And Dell had several of the top rated PC's with Skylake CPUs. The XPS line didn't have capacity for extra storage. The Precision line (mobile workstations) didn't accept my Veterans discount. So I turned to Alienware, the gaming division of Dell, and the new Alienware 15 R2 with Skylake.  I configured a beast of a machine, but had trouble applying my Veterans discount. So I hit the chat button, and chatted. I am glad I did, because I saved over $500. The machine I ordered:

  • Intel Core i7 6700HQ Skylake (this is second to the top of the line)
  • 16 GB DDR4 RAM (max)
  • 256 PCI-Express 3.0 SSD
  • 1 GB 7200RPM SATA, second hard drive
  • NVIDIA GeForce GTX 980M 8GB DDR5 (fastest mobile graphics card they offer)
  • 15.6 inch UHD (3840x2160) IGZO IPS Anti-Glare 300-nits Display
I got a beast of a machine with specs far superior to the newest MacBook Pro 15 inch, for less than the cost of a comparable MacBook Pro. Because of the Skylake processor, I will get from 4 to 7 hours of battery life, which is better than I've ever had, despite not being on par with the MacBook Pro. I'll give up some battery life, for better CPU, Graphics, Storage, and a 4k screen.

So that's how I ended Veterans Day 2015. I bought an Alienware 15 R2 Skylake.

January 26, 2013

Relocating User Profile in Windows 8

It only took two tries to get it right. I installed a 128GB SSD in my Dell L702X 17-inch notebook, and moved the main drive to the secondary slot; so I have two hard drives in my notebook. After installing Windows 8 Pro on the SSD, a lot of my software and data, well I ran out of space. So I wanted to relocate my User Profile to the secondary data drive, to open up space on the SSD.

The first try which involved robocopy basically hosed my system, and I had to reload Windows 8. The robocopy worked fine, no errors. But Windows 8 couldn't find the profile after I attempted a symbolic link.  I tried everything I could think of to restore, but to no avail.

The second try led me to this site - - and it worked very well. Just follow the instructions as you install Windows 8, and your User Profile will live on your data drive.

January 14, 2013

Back In The Saddle, Again

Nearly two years has passed since I last blogged. Apparently the bug didn't bite after all. Being the father of five daughters, "free time" doesn't get spent like it used to. There's homework, kitchen to clean, gluten-free bread to bake(twice per week), laundry to do; you know, family stuff. Being a good dad is an important job, and it isn't easy. In fact, it is exhausting; oh the drama. The only thing tougher is being a mom.

I wouldn't be where I am today without my wife. Her love and support over the years has been a godsend, and she's put up with my exiling myself in front of the computer quite a bit over the years. But it was a project I worked on at the Fed that really burned me out; around 13 - 70 to 80 hour weeks, working through Memorial Day weekend, and Father's Day at the Lake, that changed my level of commitment from "the job" back to what was more important, "the family." I wasn't the same after that project and it took a year and a half for me to get my inspiration for coding back. I was in more of a support mode, where you code here and there, fix stuff, maybe write up a proof-of-concept. I wasn't without a mission, as I immersed myself in workflow, studying agile methodologies, learning how to install, configure, and wield the Atlassian tools (Jira, Confluence, etc.)

I take it on faith when I read the stories of the well known web companies like Facebook, Twitter, Foursquare, etc. when they explain how they utilize agile automated workflows - it sounds really nice. I'm a nut about efficiency, and not wasting other people's time; I strive to be Lean. Only recently have I learned, however, that actually applying Lean Kanban across an organization requires a cultural shift that can only happen if it comes from the CEO or highest ranking officer of the division/department as a directive for change. Anything less than that, and people will return to the habits, and the comfort of the familiar; which isn't typically close to being agile. Still we used Scrum at the Fed, on a very small scale - a team of 3 - and it made a difference that was inspirational to us. It was better than anything I'd ever used before, including project tracking via Excel or MS Project. And the planning poker worked very well, producing estimates that were among the most accurate I'd ever seen. But with that said, Lean Kanban had even more appeal to me, and is without question the way to do software development now.

Today, I started a new journey with the Coldbox ColdFusion framework and development platform. I am super excited, inspired, to be able to code again; being able to apply all of the OO principles I've learned about over the past nine years. No more having to mold the approach to the legacy design. As I learn to use Coldbox I will be blogging, if for no other reason to remind myself. 2013 promises to be a pivotal year for me as a programmer, the list of topics to learn this year is long and ambitious: from Coldbox to ExtJS, MongoDB (via Marc Esher's  CFMongoDB wrapper), Hibernate/CF ORM, HTML5/CSS UX, and the LESS CSS Framework. Plenty to blog about while I explore those topics, so stay tuned if you're interested in these topics too.

April 23, 2011

Gonna Give It A Try

Ok, so this my new blog. I'm going to give Blogger a try. My wife has been using this service for awhile and has learned how to do some pretty nifty things. I'm tired of managing my own data, frankly. MySQL is frustrating to use, it used to be really easy. And the time I would use to blog, has been replaced with keeping hardware and software configured and operational, so I never have time to blog. So we'll move the blog software and data management over to Google (they do a pretty good job); and we'll see if I can get back into the blogging spirit.