A $49 Handheld Linux Machine PocketChip

PCWorld has this story on a $49 Linux hand held machine for just $49 each. This is a Raspberry PI like kick starter project. The web site make this thing look pretty interesting. I ordered one, so we will see.

Warcraft Movie Quick Review


Warcraft is a movie based on the game World of Warcraft (WOW). The story follows the lore contained in early versions of the game. The peaceful world of Azeroth is invaded by large green humanoid creatures called Orcs. The orcs arrive via magical means and immediately begin attacking human communities. With that as the backdrop, the movie explores the main characters involved in these events.

The portrayal of the orcs is quite good. The actors are able to convey a lot of emotion through all that CGI. In addition, they have a lot of really good dialog throughout the movie. And if you play the game for the Horde side I think you will really like this part of the movie. My only complaint would be the Orcs seem a little too tall, large. They aren’t giants in the game, just more muscular.

My main complaint about the movie would be the geography of the fighting. It doesn’t really make much sense. The humans seems to just ride outside the castle and then suddenly they are fighting orcs. It would have been better if the writers had simply selected a town as the base for the orcs. Then you could clearly see where the humans were attacking and where the orcs were defending.

From a game players perspective I was a little disappointed there weren’t more WOW classes in the game. Basically, they just had the warrior class and a few mages. That was it. There is a lot more magical stuff in the game and I would have like to see that in the movie. Also, almost no dwarves or elves in the movie.

Overall a good movie worth seeing. I think most folks will be able to follow the story without playing the game. Hopefully there will be more movies because the back story for the game is really good.

Opera Browser gets some Cool Stuff

Remember the Opera Browser? It used to be that odd little browser that was really fast, but was kinda weird. Well, the company has made a lot of improvements recently that make the browser worth another look. The changes include:

  • Switched to the WebKit engine for rendering. This is the same engine that is in iOS and Mac Safari. So no more rending weirdness.
  • Ad blocker support at a standard similar to iOS. Turn this feature on and no more nasty ads. At all!
  • New mobile battery saving features. For example, the Chrome browser works great on a desktop, but when it comes to battery life, it is a pig. Safari on the Mac already has these features, but now you have a browser that can do the same on Windows or Linux.

Why install an extra browser? Here is my use case. When do you need ad blocking the most? When you search of course. Because you have no idea where you will be sent. And a lot of these no name sites have the most browser slowing crap. So when I research something, I fire up Opera and search.

I can configure Chrome or Safari to let a few ads through on my favorite sites.

Opera is free. You should check it out.

Blogging Again - Updates to Blog Software

Sorry for the 6 months off. The blog needed some work and I was busy with my real job. So I kind of fell out of practice.

Anyway, over the Memorial Day holiday, I took some time to start fixing things up. So here are the results. The main thing was to make fixes to the the CSS. The site didn’t work right on iOS or Android. So I had to really dig in to figure things out. This is what I learned.

  • Be careful what you include in a page. I was using a third party CSS feed reader to display links of interest. Turns out that was messing up my CSS.
  • Android and Chrome do not like wide <pre> tags. You have to set both white-space and word-wrap values to get things to work right.

Anyway, the site should look much better on phones now. Enjoy!

Cut, Copy, and Paste text from a Web Page to Clipboard

Want to make it easy to copy and paste some random piece of text to the clipboard? Well this can be accomplished using HTML with surprising ease. All you need to do is add a little JavaScript. Here are two examples, one with text box and one with a text area.

This trick can be used for any bit of text you want to copy to the clipboard a lot. Very useful for storing an e-mail address or user name that you need to copy and paste repeatedly.


These examples copy a command line for the Maven build tool.

Text Box Example


<input onclick="this.select();" type='text' size="40" value='mvn archetype:generate -DgroupId=com.example -DartifactId=app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false' />

Text Area Example


<textarea cols="50" rows="4" onclick="this.select();">mvn archetype:generate -DgroupId=com.example -DartifactId=app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false</textarea>

Windows 10 Start Button Stops Working

Problem: For no apparent reason, the Windows 10 start button has stopped working. Clicking on the button does nothing. In addition, the Cortana search box may also be frozen.

In my case, I could right click the button. But a single click did nothing.

Solution: I found my answer on the British Telecom (bt.com) site. Option 2 worked for me. Just reinstalling all my apps seemed to do the trick.

It does make one wonder what makes this sort of thing happen. At least there is a fix!

Expanse TV Show

I wanted to give a quick shout out for “The Expanse” tv show on the SyFy channel. Basically it is a somewhat realistic space adventure sometime in the not too distant future. The human race has colonized Mars and the asteroid belt.

The show consists of three story threads.

  1. Ice miners from the belt. Their routine mining run turns into quite an adventure. (Really like this thread.)
  2. A detective from the belt searching for missing girl. (Like this thread a lot too.)
  3. Political happenings on Earth as the other stories take place. (This thread confuses me a bit. I am not sure what it going on.)

Anyway, a very well done show. Check it out if you get a chance.

Java 8 Permanent Generation and Metaspace

In Java 8, the JVM’s Permanent Generation has been replaced. But with what? Turns out it is called the Metaspace. It serves the same purpose as the Permanent Generation, but it is not a fixed sized. It is stored in the native heap, so you are only limited by the amount of memory on your system. This should eliminate any of those nasty out of memory errors generated by the Perm gen.

Here are a few good links to read up further on the subject.

Ruby Bundler Throws an Encoding::CompatibilityError

When you run bundle install to store the ruby gems for your application bundler throws the following error message:

bundle install Encoding::CompatibilityError: incompatible encodings: UTF-8 and ASCII-8BIT

This is a really weird error and seemed to come out of nowhere for me.

Solution: Delete your Gemfile and retype it. Apparently an illegal character got pasted into my Gemfile. After creating a new file, the error message disappeared.

Install Cygwin Packages from the Command Line Using Setup

Cygwin is program that lets you run Linux/Unix utilties on windows. One problem with Cygwin is you always forget to install something. What are you options? There are a couple of package managers for Cygwin with confusing names: apt-cyg and cyg-apt. One of this works well, but I can never remember which one.

Turns out there is an easier option. Do the following:

  1. Copy the Cygwin setup program to your Cygwin directory.
    • For 32 bit, copy setup-x86.exe to C:\cygwin.
    • For 64 bit, copy setup-x86_64.exe to C:\cygwin64.
  2. Use the setup program to install new packages from the command line. Just navigate to your cygwin directory and type (use 32 bit or 64 bit command depending on your Windows version):

     setup-x86.exe -q -P Package1,Package2,Package3

This launches the setup program which downloads the package and any required dependencies. No packaging software required.

You can get a complete list of available Cygwin packages at: https://cygwin.com/packages/package_list.html

Links added to the Right Column

I updated the home page so that my recommended list of links appears at the top of the page. They were at the bottom before, but I guess most folks were not able to see them. This list is updated more often than the main blog.

Upgrading to Windows 10 Facts

Over the last couple of weeks I have tried to upgrade a few systems to Windows 10. In the process I learned a few things that are worth sharing.

  1. If you request an update through the normal process, it take about 2 days to for the download and upgrade to start. Not bad, but I don’t like to wait.
  2. You can download the Windows 10 ISO from Microsoft and upgrade that way. No waiting at all. Just put the image on a thumb drive and start the upgrade from the mounted image.

Note: If you need to make a bootable ISO, you can do that using the Rufus ISO utility for Windows.

What about a Clean Install?

I use a number of virtual machines for testing and I wanted a couple to be Windows 10. It seems like I read or heard from multiple places that you could do a clean install from the ISO as long as you had a Windows 7 or Windows 8 license key. Wrong!!!!

You cannot do a clean install with just a license key from Windows 7 or 8. In fact, here is the word direct from Microsoft.

Can I perform a clean install using the Free upgrade?
No, it will require that you are running a previous qualifying version and start the upgrade from within the qualifying version. You can initiate a clean install after completing the Upgrade.
Source: Windows 10 FAQ

Translation, if you are using a VM, you have to install the old version first. Then upgrade it. I can confirm the upgrade works if you use this method. Just install the old version. Patch it. Then run the install from the Windows 10 ISO. Windows 10 installs just fine.

I have not tested if I can do a clean install after upgrading from a license key. In other words, after I have upgraded a version of Windows with a particular license key, can I do a clean install of Windows 10 with that license key? I don’t know yet. I will give this a try this week and let you know.

Suppressing Output from a Linux Command

After executing a Linux command have you ever wanted to suppress all of the output? I have and I finally found the answer. Turns out the answer is pretty straightforward.

Here is a typical example. I execute gedit and send the output to the bit bucket.

gedit > /dev/null

The command sends standard output to the null device. However, any output that would be sent to standard error still appears in the terminal window.

To turn off standard error, you can pass a modifier to the expression. Here is the list of options.

  • > /dev/null redirects stout to the null device
  • 1> /dev/null same result as the previous command
  • 2> /dev/null redirects sterr to the null device
  • &> /dev/null redirects sterr and stout to the null device

So to prevent any output in the terminal window the following command would be used:

gedit &> /dev/null

So to start the command as a background process would be:

gedit &> /dev/null &

And finally, to execute a command in the background without making it a child process of the terminal use this.

(gedit &> /dev/null &)

This command will launch gedit in its own process and prevent any output from appearing in the terminal.

Resizing Windows on Xubuntu 14.04

Resizing Windows on Xubuntu Linux 14.04 can be really difficult as the default theme sets the window border to 1px. This is very difficult to grab with a mouse. So how to fix this? There are two easy solutions.

  1. Go to Settings –> Windows Manager and select Daloa. This theme looks good and has thicker borders.
  2. When grabbing a border hold down the Alt key and right click the corner. This should make it easy to grab.

Creating a Basic REST Web Service using Grizzly, Jersey, and Maven

My latest Java tutorial is now up on Oracle.com. This tutorial covers how to make a basic REST application using Grizzly, Jersey, and Maven. If you are new to any if these tools, this tutorial is a great way to try them out. You can launch the tutorial from here:

Java SE 8: Creating a Basic REST Web Service using Grizzly, Jersey, and Maven

In the tutorial you create an application using the open source Grizzly web server and the Apache Jersey library to create a RESTful web service. The Jersey library is the reference implementation of the JAX-RS Java REST web service API. Jersey makes creating RESTful web services really easy and the tutorial takes you through the process step by step.

Finally, Apache Maven is a Java build tool that makes it really easy to create and manage projects. It also allows you to create new projects using well known tools and templates and automates the process of downloading required libraries. Finally, you use Maven to create create an uber jar file which stores all the required libraries for an application in a single file.

Windows 10 Update in 2 days

My Windows 10 upgrades have shown up 2 days after I requested them. Yay! That is not too bad, but I still thing there must be some way Microsoft could be more definitive on when your update will show up.

Also, I need to point out you can download a Windows 10 ISO from here. You just need a valid Windows license key to install. The only caveat is the image only does clean installs. So if you are ok with wiping your disk, you can install right away. So I hope you saved your old boxes or wrote down the numbers someplace, because now they become very useful.

Windows 10 is Available Today! But its not...

Microsoft has released Windows 10 today! All users rejoice!

But is it released? I got out my windows laptops and started the regular Windows patching process. On my Lenovo, I finally figured out how you request an update (it is a Windows icon on the right side of your start menu). Well, when you click on the little app and fill out the form Windows starts updating right? Wrong! lol.

All you do when you “request” an update is put your machine in a queue for Windows 10 updates. There is no ETA of when you might get your update. Could be hours, days, weeks, heck who knows. This is, of course, a feature to ensure you have a “good” upgrade experience.

What? lol. If I have can’t update today, I am already having a “bad upgrade experience”. Somehow I think giving the folks an indeterminate upgrade date is probably not going to go over well.

Anyway, I will update you again when I finally win the Windows lottery. :)

Java 8 Lambda MOOC is Live

Are you interested in learning more about Java 8 lambda expressions and streams? If so, our free 3 week MOOC is live. Taught by Java Evangelist Simon Ritter, this course is just what you need to learn how to use lambda expressions and streams.

To sign up, go to this URL and enroll.

Getting RSS Feed Dates with Ruby

How do you get a rfc 3339 or rfc822 date in Ruby? Why do you want either one? lol. Well, you need these specially formatted dates for Atom or RSS2 syndication feeds. To get the properly formatted dates for current time, use:


Or if you have a date object named dateVar you can use:


Chaining/Multiplexing an SSH Connection

Ever want to run multiple SSH scripts but get annoyed by having to authenticate for each one? Well it turns out you can configure SSH to accept multiple commands over a period of time. The name I found on the net for this is SSH multiplexing. Command chaining would be a better name in my opinion. Anyway, this technique allows you to call several commands that use SSH but you only authenticate once! That’s right, authentication happens on the first command, no long waits for each step.

For example, I need to execute 2 rsync commmands to copy files to different parts of my web site. Here are the two commands.

rsync -vaz --rsh="ssh -l username"  --exclude=bin/  --exclude=*.DS_Store /Users/username/www/blog/ example.com:~/blog
rsync -vaz --rsh="ssh -l username" /Users/username/www/index.html example.com:~/index.html

For each command I would need to authenticate with SSH and each step would have to wait a few seconds for that to happen. So now I can replace this with a series of commands, but before I do that, a little configuration and explanation.

To get this to work, you need to create two things in your .ssh directory.

  1. An empty file named config
  2. An empty directory named sockets

For you config file, enter the following:

host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600

The first line tells SSH that any host can use this command chaining feature. If you want to limit it to certain hosts it can be changed to just example.com: *.example.com

The second line enables the multi command feature. It tells SSH that if an SSH socket alread exists for a host, it is ok to reuse it.

The third line tells SSH where to store the socket information. This is why we created a sockets directory. The string %r@%h-%p tells SSH to name the socket file username@hostname-port. If the username you log in with is different then your login username, then you will need to change the name so it matches the remote host. For example: remote-username@host-port

Finally, the fourth line tells SSH how long to leave the socket open if the open socket is not closed. In this case a value of 600 seconds (10m) is specified. You can also use minutes: 60m as a unit of measure for this option.

With everything setup, let’s take a look at our rsync commands. This time, we will wrap them in special SSH commands.

ssh -l remote-username -Nf example.com
rsync -vaz --rsh="ssh -l username"  --exclude=bin/  --exclude=*.DS_Store /Users/username/www/blog/ example.com:~/blog
rsync -vaz --rsh="ssh -l username" /Users/username/www/index.html example.com:~/index.html
ssh -O exit example.com

The first command sets up the shared socket. The -l option specifies the login name. The -N option tells SSH not execute a remote command. The -f option tell SSH to wait in the background.

The last command closes the open socket for that host. The -O option passes a command for SSH to execute on the open socket. In this case, exit tells SSH to close the connection.

Well that is the short version, though not very short. If you need more information on this topic please take a look at the resources linked below from which this post was built.


Rackspace Developer Blog - Speeding up SSH Creation
Stack Exchange: Executing Multiple Rsync Commands