Introduction to SaltStack

I had the opportunity to give an introduction to SaltStack at the OpenWest conference this week (Video on YouTube).

As I was setting up for the presentation, I realized I needed an HDMI cable, and there wasn’t one in the room. A conference helper found a cable at the last minute, and we started on time (thank you!).

From what the audience said, many people are interested in using SaltStack, but haven’t started yet. It’s a fantastic tool for remote execution and configuration management. The documentation is initially a bit intimidating, but it’s easier to get started than it appears — especially using one of he many online tutorials. And there are many examples available from saltstarters.org.

SaltStack releases for CentOS/RHEL have become more stable over the past 10 months, and I’m excited about it’s future. It has a vibrant development community, and they’re implementing cool new features to extend its capabilities, including:

– RAET, an optional new, secure UDP communications protocol, which will easily support more than 10,000 minions. https://github.com/saltstack/raet
– Proxy minions will eventually allow the configuration of load balancers and networking equipment.

And advanced features, already present, sound like they could be useful:

– The orchestration framework, based around the reactor, can allow configuration when certain events are triggered. For example, Jenkins, upon building successfully, could send an event from the Salt minion to the master, and the Salt Master could automatically deploy the build to a test environment.
– Custom module, state and proxy support. In /srv/salt, create a _modules directory, etc. They can either override the existing module, or add new ones.

Ubuntu Unity application launchers for IntelliJ IDEA and PyCharm

Here’s how I got Ubuntu Unity to show application launchers for >IntelliJ IDEA and PyCharm

In $HOME/.local/share/applications, add an IDEA.desktop file with these contents:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=13
Name=IntelliJ IDEA
GenericName=Text Editor
Exec=/home/YourHomeDirectory/idea-IC-135.480/bin/idea.sh
Terminal=false
Icon=/home/YourHomeDirectory/idea-IC-135.480/bin/idea.png
Type=Application
Categories=TextEditor;IDE;Development
X-Ayatana-Desktop-Shortcuts=NewWindow
Icon[en_US]=/home/YourHomeDirectory/idea-IC-135.480/bin/idea.png

And a PyCharm.desktop file:

#!/usr/bin/env xdg-open
[Desktop Entry]
Version=3
Name=PyCharm
Exec=/home/YourHomeDirectory/pycharm-3.0.1/bin/pycharm.sh
Terminal=false
Icon=/home/YourHomeDirectory/pycharm-3.0.1/bin/pycharm.png
Type=Application
Categories=TextEditor;IDE;Development
X-Ayatana-Desktop-Shortcuts=NewWindow
Icon[en_US]=/home/YourHomeDirectory/pycharm-3.0.1/bin/pycharm.png

I use the default keyboard shortcuts, and on Linux, CTRL-ALT left arrow doesn’t work with PyCharm or IDEA (jumps back to where I was before I followed a symbol with CTRL-B). I’ve found that CTRL-WINDOWS-ALT left arrow does work. Same thing for many other shortcuts that use CTRL-ALT.

Galago UltraPro laptop: the good and the bad

I’ve had a Galago UltraPro laptop from System76 since August of 2013, and I use it every day at work (thank you, Vivint). Overall, I love it — but would have looked for another option had I known about the bad parts.

The good:

  1. Ships with Ubuntu by default, including drivers for the hardware.
  2. Powerful: Intel Haswell processor with the Intel Iris Pro graphics chip, which means it’s fast, and it can drive a Dell 30″ monitor (using an Apple mini display port to dual-link DVI adapter), an HDMI monitor, and the laptop screen at the same time.
  3. Small and lightweight — easy to carry around.
  4. USB 3.0
  5. The keyboard layout and function keys are designed for Linux, and they work — no tweaking necessary.
  6. The touch pad works well (although it’s not as awesome as Apple’s touchpad and gestures)

The bad:

  1. The screen is too small to use at its high resolution unless it’s sitting on my lap. So I always use external monitors when I’m sitting at my desk.
  2. No backlit keyboard.
  3. No indicators/lights for the caps lock, scroll lock and num lock keys — so you don’t know what state your keyboard is in. I hate this — it’s a huge omission.
  4. The ethernet jack door flips down, and it breaks off easily. When that happens, the ethernet cable doesn’t stay plugged in very easily. Inexcusable. It’s possible to use a USB-to-Ethernet device, but who wants to do that?

The Galago UltraPro is a fantastic Linux workstation, but it’s a poor laptop compared to most other laptops (with the exception of being lightweight) because the screen is too small, the keyboard isn’t backlit, and the lock keys lack indicator lights. A MacBook Pro Retina is a better laptop in almost every way. The screen is oh-so-beautiful, the keys are backlit, and the caps lock key tells you when it’s on (but the function key is in the wrong place — the control key should go there — what was Apple thinking?).

Why can’t Apple ship Ubuntu as an option on the MacBook Pro? It would be awesome, because they’d support the hardware with Linux drivers.

I can dream.

Article: Facebook tracks self-censorship and more

Ars writer Casey Johnston reports:

Facebook released a study (PDF) last week indicating that the company is moving into a new type of data collection in earnest: the things we do not say

Facebook’s users are its product — without the content we post and the interactions we have, Facebook wouldn’t be able to sell ads, gaming, data sets, etc. It’s not just Facebook — it’s also true of Google, Microsoft, Yahoo and Apple. Every large company has computers analyzing what we do and don’t do, using that information to its economic advantage.

HDMI audio output and the power of a community

Tonight, I wanted to show a KSL.com news story to my children, and when I plugged the HDMI cable into our Windows 8.1 laptop, we saw video, but there was no accompanying audio. :(

Fortunately, a google search for “Windows 8 HDMI audio” yielded a solution from ‘wasala18′, who posted a link to an Intel driver:

https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23323&lang=eng

that link takes u to an update from Intel for they’re hd graphics and audio drivers.. I found the solution for my laptop NO THANKS TO HP OR MICROSOFT!! and these updated drivers aren’t even available through windows update.. just plain sad.. I still stand by everything i said before..

I’m grateful for the power of community to help solve problems, for Google searches, and for Intel’s drivers.

Now we can enjoy HDMI audio piped through the stereo.

vCloud Director CentOS Guest OS Customization Script

I needed to customize a custom Linux VM image with a static IP address in vCloud Director. Here’s the script I came up with. It doesn’t work unless VMWare tools is installed and running in the VM (kernel upgrades tend to break it). The VM should be stopped, then paste the script into the “Guest OS Customization” script area. Boot the VM with the “Power On and Force Recustomization” option.

 

#!/bin/bash
HOSTNAME=YourHostNameHere
IPADDR=StaticIpAddressGoesHere
NETMASK=255.255.255.0
(
echo "------------------------------------------------------------------------------"
date
if [ x$1 == x"precustomization" ]; then
  set -e
  echo "Running Pre-Customization tasks..."
  if [ x$HOSTNAME != x ]; then
    echo "Configuring hostname as $HOSTNAME"
    sed -i "/HOSTNAME/d" /etc/sysconfig/network
    echo "HOSTNAME=$HOSTNAME" >> /etc/sysconfig/network 
    hostname $HOSTNAME
    hostname
  else
    # Set it so it can be used below
    HOSTNAME=`hostname`
  fi
  if [ x$IPADDR != x ]; then
    echo "Configuring network IP=$IPADDR NETMASK=$NETMASK"
    rm /etc/udev/rule.d/70-persistent-net.rules
    sed -i "/IPADDR/d" /etc/sysconfig/network-scripts/ifcfg-eth0
    sed -i "/NETMASK/d" /etc/sysconfig/network-scripts/ifcfg-eth0
    sed -i "/HWADDR/d" /etc/sysconfig/network-scripts/ifcfg-eth0
    sed -i "/BOOTPROTO/d" /etc/sysconfig/network-scripts/ifcfg-eth0
    sed -i "/DHCPHOSTNAME/d" /etc/sysconfig/network-scripts/ifcfg-eth0
    cat >> /etc/sysconfig/network-scripts/ifcfg-eth0 <<ENDCFG
BOOTPROTO=static
IPADDR=$IPADDR
NETMASK=$NETMASK
DHCPHOSTNAME=$HOSTNAME
ENDCFG
  fi
  echo "Done with Pre-Customization"
elif [ x$1 == x"postcustomization" ]; then
  echo "Running Post-Customization tasks..."
fi
) | tee -a /root/customize.log

 

Update: It turns out that having VMWare Tools functioning properly is enough for vCloud Director to configure the network settings all by itself, without the help of a script.

Is Android open?

Ars Technica has an interesting article about how “Android is open—except for all the good parts”, which they’ve been making proprietary.

It’s a warning to developers who integrate with proprietary Google APIs — maps APIs, cloud messaging, location APIs, in-app purchasing, “Play Games” API. When they embrace Google’s great APIs, it makes it more difficult to port to Kindle Fire and other Android derivatives.

My overall feeling is that Google gives users more freedom with Android than Apple gives users with iPhone/iOS. (Sidenote: In spite of that, I like iOS slightly better).

Closing the good parts doesn’t mean there’s no competition — there’s still iPhone and Windows Phone.

Fidelity App: Not responsible for accuracy of financial information

Do you ever read the fine print when you install an application, and it presents you with an end-user-license-agreement?

I do.

Recently, I installed the Fidelity iPhone app, and here’s a few surprising parts of their service agreement:

By using the Services, I consent to the transmission by electronic means…. I acknowledge that Fidelity cannot assure the security or privacy of electronic transmission of such information. Any transmission may also be subject to other agreements that you have with your mobile service or access device provider. Accordingly, I must assess whether my use of the Services is adequately secure to meet my particular needs.

While all information accessible through the Services has been obtained from sources believed to be reliable, I understand that Fidelity will not be responsible whatsoever for the accuracy, timeliness, completeness, or use of any information received by it or received by me from Fidelity or any Provider through the Services and that Fidelity does not make any warranty concerning such information.

I don’t think most of us are capable of assessing whether our use of a third-party service is adequately secure — it’s difficult for security professionals to decide such things.

Tools and trade-offs

Ten or more years ago, I purchased a Gerber multi-tool. It was less expensive than a Leatherman, and it was painted in my favorite color. Since then, I saw my brother’s Leatherman Wave, and wanted one. For Father’s Day this year, Janice gave me a Wave. I like it — it’s a sleek piece of engineering in every way. The screwdriver fits more of the screws that I encounter compared to the bulky phillips head on the Gerber. The saw works far better. It’s easier to access the Leatherman’s knives, saw and file.

Leatherman Wave vs Gerber multi-tools

However, I’ve found that when I’m out and about in the yard, the Gerber is easier to work with. It’s belt-holster is secured with velcro — easy not only to open, but to close. And opening the pliers is an easy one-handed flick-of-the wrist, which means I don’t have to put the tool in my left hand down in order to open the pliers like I do with the Leatherman.

The Gerber’s pliers can be used to pry things apart. The Leatherman folds up when I try the same thing. The Leatherman is a more dangerous tool to open and use — more likely to pinch or draw blood (as it has done on a few occasions).

The tools definitely have trade-offs. I admire the Leatherman most, but for regular use, the Gerber wins.

The same thing is true of operating systems. I’ve used Linux and Windows for years, and have wanted to try out Mac OS X and a MacBook Pro.

My wish came true. For the past two months, I’ve been using a MacBook Pro 17″ with Retina display. Not only is the engineering and design gorgeous, the screen is eye-poppingly clear and crisp. The battery lasts and lasts, and the laptop doesn’t get too warm. The track-pad is the best I’ve ever used, and I love the gesture support to go forward and back in the web browser, and the gestures to switch desktop workspaces, activate Mission Control and Launch Pad.

Yet the keyboard shortcuts have taken some getting used to compared to the ones I know from both Gnome (Linux) and Windows 7. I find that it’s easy to accidentally hit Command-Q when I meant to hit Command-W. Control-Left and Control-Right don’t work — it’s Option-Left and Option-Right to jump forward and backward by a word. Home and End go to the beginning and end of a document instead of the beginning and end of a line. There’s no built-in window-snapping like Windows 7 or Gnome-Shell.

When I switch back and forth between Mac, Linux, and Windows, I hit the wrong keyboard shortcuts. Is it Command-C or Control-C for copy? On-and-on it goes — sharp edges. But I’m getting used to context switching. I love the MacBook Pro.

Last week, a Gallego UltraPro arrived from System76. It’s a compact powerhouse, and best of all, the keyboard shortcuts work like I expect, and I can get work done faster because I’m used to the underlying OS and tools. When programs break, I know where to look and what utilities to use to solve the problems (I love having /proc available). But the UltraPro with Ubuntu has sharp edges as well. The screen is a bit small, and it’s not as beautiful as the Retina display. It doesn’t have a backlit keyboard, and so far, I haven’t been able to get Evolution to talk to our Exchange server (which isn’t a problem on Mac because it has Outlook).

I admire the refinement, the visual beauty of OS X and the design of the MacBook Pro. For regular use in getting my work done, the UltraPro and Ubuntu currently win.

Book: Mac OS X and iOS Internals

I’ve been reading Mac OS X and iOS Internals by Jonathan Levin. For me, who’s daily bread and butter has been working with Linux, it’s a fascinating and an excellent read that plunges into how OS X and iOS function, from Mach-O binaries to DTrace to bundles and file systems and so much more.

I highly recommend the book.