2015-09-24
Like many kids their age, Charles and Zachary are growing up as digital natives. They are also growing up with a geek dad, who has worked with and played with digital technologies as they evolved. The first indication I have of the boys using computers is from April 2006, when they were using TuxPaint and discovered they could spew pages of their creations out the printer. The reference mentions both Windows and Linux, noting I was more comfortable letting them loose on Linux because they couldn't cause any trouble with it (well, filling the print queue was an exception). So they were going on 4 years old at this point. I had started playing with Linux and became a convert in the late 90's. By the time they were ready to start playing on and learning about computers, I was sure Linux would be a more durable, reliable, and safer environment than Windows. So their exposure to computers has been a bit different than most. At various points in time, I have been a little concerned that this choice might put them at a disadvantage at school, but so far it has not. In fact it may be an advantage that they have been exposed to Linux at home and adapted to Windows at school and camp. We've had discussions about which is "better" that have lead to some depth in thinking about the differences. We acquired some surplus machines from Lynn's or Barry's employers and I put an early version of Edubuntu on them for the boys. This distro is a variant of Ubuntu which includes the GCompris suite of educational entertainment software for kids aged 2 to 10. (If you have young kids, you should check out GCompris - it runs on Android, Windows, MacOSX, and Linux). There were a bunch of cool creative exploratory applications and the boys enjoyed finding their way around them.
When they got a bit older, they got into playing a few games, most notably TuxKart. Charles got pretty good at it and was the house champ. You can build your own track layouts and your own Karts for TuxKart. We didn't build a track, but we did build a few Karts. These are done with Blender, a fantastic free software 3D computer graphics product. Building 3D images with software like Blender is a deep skill set. I managed to learn just enough to build a few Karts. It was way beyond the boys at this point, but they enjoyed their unique Karts.
At some point, the boys discovered Plants vs Zombies, a popcap game for Windows and wanted to play it. Enter Wine. Wine is a Windows library for Linux which enables running of Windows Binaries. The game worked quite well under Wine. One spring we took the boys to Great Wolf Lodge for spring break. It's geared entirely for kids, with 'cabins' in the hotel rooms, an indoor water park, and an adventure game called MagiQuest set throughout the building. The gift shop sold a Windows game called Wizard 101. Given the success with Plants vs Zombies, we decided to give it a try and it worked with Wine as well. Another step of their computer adventure was web games. They used Firefox and started playing stick wars games and tower defense games. I also picked up World of Goo for them - one of the first commercial games that worked on Linux.
Eventually they started playing Minecraft. They were big time into Minecraft and still play some. Minecraft is written in Java so will run on any of the current computer operating systems. They got into installing mods, which was initially a pain because all the instructions were written for Windows and the procedures were different for Linux and required me to figure out and translate. Additionally, to keep multiple versions around, I used a feature of Linux called symbolic links and that also required dad's intervention for a while. Eventually changes to the official installer solved both of these problems, so they could install and run different versions and different mods with ease. Mojang recommends using Oracle Java, but we have always used OpenJDK and never had any issues with it. Like most else in Linux, it's available in the distribution repositories, which makes it easy to install.
One of the issues that Minecraft experience exposes is the difference in how an operating system colors your trust of the Internet, software, and downloading files to your computer. A major difference between Windows and Linux is the way applications are distributed. A Linux distribution is a combination of the operating system, utilities, and applications. Included in the installation process are all of the typical applications a normal user is likely to need. Beyond that, the distribution contains many more specialized packages of applications that go well beyond the normal scope of needs. These application packages are simple to install using tools that are part of the distribution as well. It is rare that an application you need will not be found in the packages of a chosen distribution. So if you are using Linux, you will typically find all your software needs met from a single trusted source, and installed via a package manager which is also part of that distribution. System updates become available on a daily basis. These updates include improvements to the all of the installed applications, as well as the operating system.
A Windows user typically buys a computer with Windows already installed and some software may be included. Beyond that, software is purchased online or in stores. Each application will come with it's own installation instructions and installer. System updates will update the operating system only. Applications will not be updated.
Installing mods for Minecraft is basically inserting some random programmer's code into the Java code that implements Minecraft on your machine. This is a questionable thing to do. You have little to no knowledge of whether or not that code can be trusted. This is independent of operating system. In addition, when following links for Minecraft mods, you often end up on some pretty sleazy looking sites with ads and "Down loader" software links, with the links to the mods you are looking for hidden, so you are likely to click on the wrong link. You can end up downloading this junk in Linux as easily as in Windows, but it's not going to be functional in Linux. The practice of loading mods from these random sites, downloading drivers from non-obvious sites, downloading "free" and "freemium" software from other sites is something that you tend to get used to if you run Windows. It's not a practice that you are likely to follow using Open Source or Free (Libre) software. Since I was no longer using Windows, I was no longer accustomed to finding software or drivers this way and it felt very unsafe. And if you are used to it and don't feel that way, I think you have been done a great disservice. It's not a good thing to teach your kids.When the boys started playing Minecraft, it became clear that they needed better video hardware than they had on the cast-off machines. I've been a fan of the Mini-ITX boards that provide reasonable CPU power in a small and energy efficient board. I suggested that they could build their own computers. So in early 2013, I ordered all the parts for a Mini-ITX system based on a board manufactured by Zotac. The kit had a mother board with an integrated, passively cooled CPU, and included a discreet NVidea video card. An 80GB disk, 4GB memory, a rewritable CD/DVD drive, and a fresh install of Ubuntu Linux topped it off. A modest machine, but one that could play Minecraft reasonably well and still only consume 80Watts. Zachary was quite enthusiastic and really dug into the process of building his machine and wanted to do everything himself. So I gave him some guidance and a little help with the tricky parts, but he really constructed the whole thing, and gained some idea of what the general architecture was. He also used Darik's Boot and Nuke to wipe the inherited hard drive and installed Ubuntu Linux on it. Eventually, Charles decided he wanted to build a new machine too, so we built a similar machine for him, but with a different case that was easier to work in and had a clear window on one side. He was not so enthusiastic about the process, but we eventually got it done, up, and running. These machines did them well for about 2 years, fulfilling all their homework and gaming needs for about $300 each.
Over time, Charles and Zachary occasionally came across a game they wanted to play which we could not get to run under Wine on Linux. This was a disappointment to them and they occasionally asked to run Windows, but soon forgot. I knew there was a world of games that only ran on Windows or OS X and I wondered if this would become a real problem. But there were occasional glimmers of hope for gaming on Linux, including the initial Humble Indie Bundle releases and then Valve corporations support of Steam and Steam games on Linux and eventually SteamOS based on Ubuntu Linux.
On the school homework front, things went pretty well right from the start. Homework assignments that required a computer generally fell into two classes: browser based, and document based. Ninety percent of the browser based assignments were Javascript driven and could be done on any modern browser. The boys mostly used Firefox without issues. On rare occasion, a browser based assignment would only run under IE, which does not run on Linux. But these were optional. A few assignments required Java and we actually had more success with these than some of their classmates using Windows. The document based assignments could all be done with LibreOffice Suite. This is a suite of applications much like Microsoft Office, including integrated applications for drawing, composing documents, building spreadsheets, and building presentation slides. There as a fair amount of compatibility with MS Office built in. Zachary became quite adept at using these. We even occasionally used the Gnu Image Manipulation Program - an application that takes the place of Adobe Photoshop in Linux - to munge images. One homework assignment the boys had in 5th grade science was to build a 3D model of a cell or draw a cell in 2D. We found a way to actually draw a 3D model with an application called OpenSCAD. OpenSCAD is a Solid 3D CAD Modeler for programmers. It has it's own modeling language which uses a C programming language like syntax. Zachary learned enough of this language and how to use the OpenSCAD application to build his cell model. I had tried several times in the past to introduce the boys to programming, with some small success, but this experience gave Zachary more of a taste of programming than the little bit of Python code we had played with.
Over the last few years Valve Corp, a leading developer and distributor of video games, has moved towards developing and distributing it's games on Linux. They built a Linux version of their Steam distribution platform and produced a significant number of games to run on Linux. They also began development of SteamOS, a Linux based gaming platform intended to be run on a new hardware platform for gaming called Steam Machine. Although Steam Machines have been very late in arriving, this direction change has given significant boost to gaming on Linux. We installed Steam on Charles and Zachary's computers and found that it worked. There were some drawbacks. First, it's a pretty large platform and needs significant resources, so it was a bit slow to install and keep updated on their machines. More importantly, there were still many games that could only be played on Windows. Additionally, some of the games did not perform well on their machines, others required a 64 bit OS which they were not running, and some required more storage space than they had to spare. The game Spore was Windows only. The game XCom needed a 64 bit OS to run. So more disappointment, and we began to think about a new platform to be able to run this level of game.
I began thinking about the path to Windows and this really depressed me. We had gotten so far without relying on proprietary software, even through school work. The last thing in the house that depended on Windows was TurboTax, but we have given up doing our own taxes, so that is no longer an issue. The kids didn't need Windows for anything until these games became important to them.
So Windows? OS X? Dual Boot? OS X was attractive it is BSD Unix based, secure, and elegant. But it has a downside, being expensive and proprietary, and it still does not run all of games that can be run on Windows. Also, I know little about it's hardware (particularly video), so it's a bit harder to judge what level of machine we would need. And I don't think there is as much room to configure or modify Apple machines. Eventually, I decided on dual boot Windows/Linux. I was still afraid they would just install everything in Windows and never use Linux again. But I figured maybe they would keep using it for schoolwork, since they were used to it and I didn't plan on buying MS Office.
To buy or build was the next decision. We looked at the specs for the games they wanted to play and I looked at components to match. The requirements for Spore were not very high compared to common current components. But some of the games need a 64 bit processor and a 64 bit OS, and some of them use a huge amount of disk space. Their Mini ITX machines only had 4GB of main memory, so it made the most sense to run a 32 bit version of Linux on them. But 64 bit machines are common these days, so that part would be no problem for a new machine. Clearly we could build a decent machine, probably cheaper than we could buy, but it was pretty clear it would take a big investment of my time to go the build route, so I decided to buy - for the first time in many years.
What to buy. The obvious first choice was to buy a Windows machine and then install Linux on it. If you go the other direction, it's a bit trickier. The Linux install process finds existing Windows partitions and chains the boot code. So if you allow space for both systems, you can install Linux and keep Windows in place and you will always have a choice of operating systems at boot time. But Windows doesn't return the favor if you install it after Linux. So buying a windows machine and installing Linux is easier. The Alienware machines, being aimed at gaming and having cool designs seemed like a good choice, but the high end machines were quite expensive and the lower/middle end wasn't configurable. My second approach was to go to a Linux machine provider - Zareason. I have purchased from them before and been happy with their hardware and service. They had a machine aimed at gaming and it was completely configurable, so I was able to tweak it to get the specs I wanted. This included a 2TB hybrid disk drive and 8GB memory, Nvidia GTX 960 video, as well as a cool light to show the internals through the clear side panel. Zareason will install your favorite Linux distro, and their machines are designed to run Linux, so there are no driver or other issues. They have no mention of Windows on their site, so I reluctantly asked if they could install Windows and Linux in a dual boot configuration. They don't deal with Windows, but did understand my needs and offered to create partitions for both OS's and pointed me to instructions to reinstall and update the GRUB boot loader after Windows install trashed it. So we ordered two Zeto gaming machines from Zareason and two Windows 8 kits from Amazon.
When everything arrived, Charles and Zachary got them up and running and added their user id's, then installed Steam and some of their favorite games. They worked quite well. After a while, Charles wanted to play Spore and had conveniently forgotten it was Windows only even though I had reminded him we needed to install Windows on the machine. Eventually, he relinquished the machine long enough to let me install Windows. The experience was pretty good, similar to installing Linux and so far I haven't gone in to explicitly install any drivers. I think the install procedure located and installed them automatically. Of course after Windows was installed, the Linux system was no longer in evidence and I had to follow the procedure to re-install and configure the GRUB boot loader. This is not too complicated, but it uses some of the deeper Linux magic, including manually mounting file systems and using the chroot command to dynamically switch from the Live DVD version of Linux to the version installed on the hard drive. It worked without any hitches. Charles then installed FireFox and Chrome and Steam and got Spore up.
Installing Windows on Zachary's machine had one small issue. The partition for Windows was setup differently on Zachary's hard drive. It was set up with what is referred to as an extended partition and the Windows install program would not deal with this at all. I had to use the gparted disk utility on the Linux DVD to remove that partition and then the Windows install program was able to build a new partition and install Windows on it.
Spore and Xcom and other Steam games held their interest for a while. Then, while Lynn and I were away for a long weekend, I got a call from Zachary. He was installing Minecraft and wanted to know how to install Java. I talked him through running the Ubuntu Software Center, finding OpenJDK, and installing. He already had Minecraft installed and he figured out/remembered to mark it as executable, so after installing OpenJDK, it just worked. He then helped Charles go through the same exercise, so they were both back on Minecraft when we got back. A while later, I discovered Zachary running Wizard 101. He had installed Wine on Linux and then installed Wizard 101 under it. Instead of installing it under Windows!
Regarding my concern about them leaving Linux behind, it has not happened. They are predominately using Linux. In fact they have only been in Windows to run Spore and that doesn't seem to have lasted long. And Zachary, on editing this story for me noticed my concern about this and was surprised that I thought they would migrate to Windows. He says they are more used to Linux.