Why the Raspberry Pi 2 is my main computer

So this here is my primary personal computer.


Did you miss it? I don’t blame you. It’s the exact same size as my mouse.


[Left: A multi-purpose Linux computer. Right: A logitech mouse.]

I’m using the Raspberry Pi 2 for most of my computing computing needs at home, even though I’ve got two laptops that are loads more powerful. So the question is, why would I choose the raspberry pi over a beefier Lenovo Thinkpad or HP Pavilion?

1. Because I can!

Probably the biggest reason I do it is because it feels silly. There is something just wrong about being able to run Linux on a computer I can fit into my pocket. It just shouldn’t be possible. Every time I look at the board, I think “This can’t be it.Nope, this must be a joke.”

My favorite type of poem to write is the villanelle. Largely because it’s such a pain to do. You are given a very specific set of constraints and have to work your way out. The Raspberry Pi is the same way. How much compute can you get out of a $35 computer (and $105 dollars in accessories)? It turns out a surprising amount.

2. Because I can (now)!

I tried to do this before with the regular Raspberry Pi and failed. The Model B was just below the threshold of usability.The desktop was just way too slow, and trying to use Midori to surf the web was a nightmare. On top of that, the original Model B only has 2 usb ports. So if I wanted to use keyboard, mouse and a wifi dongle, I’d have to add a usb hub.

I tried using command line only, but having lynx as your main browser is not much of an improvement. I absolutely love the command line, but I don’t want to live there. Not when I want to look up reference material or do web development.

The Pi 2 passes the threshold of usability for me. It has 4 usb ports which is one more than I need. It runs Iceweasel like a champ (except for the Azure portal Sad smile). And best of all, it has 4 cores, so the desktop can be responsive even if something else is running slow.

3. Because I surf the web too much!

It turns out that most of what I do now is in a browser. I think that’s true for a lot of people these days. That’s why you see things like the Chromebook taking off.  Once you get browsing to work, you’ve hit 80% of people’s computing needs. And as I said, Iceweasel runs very well on the Pi 2, giving me modern HTML support.

4. Because forced simplicity is good.

It’s amazing how many things you can do with a modern computer and how much crap you can install on it. I’ve definitely had the problem of being on my laptop to do Serious Things©, but instead I just surf Hacker news. With the Pi, at least I’m being intellectually honest. Either I’m surfing the web or coding something in vim. That’s it.

When I need to use iTunes, or Steam, or play around with SQL Server, I go to a different computer. As a result, my brain gets context clues about what I’m doing. If I’m on this computer I must be working on something. If I’m on my Pi I’m probably relaxing. That sense of clarity is nice.

5. Because I need to justify impulse buying.

Did you know I have 4 Raspberry Pi’s? I keep telling myself I’m going to do something with all of them but I just haven’t. There’s something sad about buying tiny little $35 dust collectors. By using the Pi as my primary computer I can tell myself that at least one of those expenses was worth it.

6. Because I want a change of pace

Finally, it’s nice to just have a change of pace. I work with the Microsoft stack all day and after a while it can get tiring. It’s nice having a completely different environment for leisure than for work. Linux on a credit card size computer is a sizable leap, for sure. This also provides me a nice way to learn Linux and diversify my skillset a bit.

Runaway Transaction Log: part 1

Last week I wrote about an idea to create labs for when things go wrong in SQL Server. They are partly inspired by the TechNet Virtual Labs, which are a great resource available for free. Another motivating factor is a desire to do something with Windows Azure. I’m new to the virtualization world and want to learn more about it. For someone like me who doesn’t have a lot of lab resources at home, it offers some exciting opportunities. Finally, I’m just plain frustrated with the fact that most DBA training involves frantically struggling when something goes wrong in production.

Today, we are going to create a SQL Server virtual machine. Later on we will misconfigure it with a runaway transaction log. This article covers just the basics. If you want to learn more, you may want to read  Getting Started with SQL Server in Windows Azure Virtual Machines

First log into your Azure account. If you don’t have one, you can create one pretty easily and you will have $200 in credits to play with the first month. Be aware that after the first month you will be paying for storage, even if your machines are turned off. Once you are logged in, go to virtual machines:


Then on the bottom left corner, select NEW –> Compute –> Virtual Machine –> From Gallery


The gallery has a lot of options available and even more if you know the cheat codes to find the hidden VM Depot. If we take a look at the SQL server category, we see images available for 2008 R2, 2012 and 2014 CTP.  This lab should work for any of those, but in this case we will be picking SQL Server 2012 Standard.


Once you’ve chosen your image, click on the next arrow. On the next screen you are going to pick some configuration details. I would pick the latest release date. Medium size should work for out needs regarding compute. WARNING: Be aware that Standard on a medium instance will cost you $0.73 per hour.  If you accidently leave it running all day, that can be $18 per day. I’ve done that before, so be careful.


Next we need to set the cloud service. You can think of this as a sort of container for the VM’s. In our case, we’ll make a new cloud service. You are going to want to pick a region close to you.


Finally, we are going to set the endpoints so we can talk to the machine.


Once you are done with all of that, it’ll take about 10 minutes to provision the machine. Go take a walk and come back.

Are you back? Okay, let’s go back to virtual machines and take a look at our machine.


It looks like it’s up and running.  Next, we are going to create a very small data disk for us to fill up. If you want more information, this article covers attaching a disk in more detail.

Select the machine and click attach at the very bottom. Then select attach empty disk.


We want to select 1 GB as this is the smallest size we are allowed.


Now we have everything we need to log in and start breaking the machine. Next week we’ll configure the machine to run into some transaction log issues!

An idea: SQL Server crisis labs

Many people in the SQL Server world have become DBAs by accident, myself included.  The problem with being an accidental DBA is that you usually learn things the hard way: when something is on fire. At that point, you are under intense pressure to solve everything NOW. It’s a real pain.

Of course, there are a number of great resources if you are learning SQL Server from scratch.  Here are two of them that have helped me:

These will lead you in the right direction, but the real challenge is learning how to deal with problems while under pressure. Reading about a problem isn’t the same as dealing with it first hand. What I think is really exciting is the idea of a safe environment where you can solve a problem without any risk.

Enter Azure (or any virtualization solution). Azure provides a really fun opportunity, in my mind. You can spin up a virtual machine with SQL in a matter of minutes. Then you are free to break things to your heart’s content. So why not take that a step further? Why not create labs where things are intentionally broken and your job is to fix it. Your only guides are a vague error message and your Google-Fu. Just like in real life.

So, I’m going to start a series of posts on how to create intentionally broken VM’s to train your junior DBA’s on. Next, I’ll start creating Powershell scripts to automate the creation process. Finally, we’ll take a look at consolidating those scripts to create a single SQL machine with a lot of problems that need fixed.

For the first lab, I’m going cover how to create a machine with an out of control transaction log. Please feel free to suggest any ideas or provide any comments.