jb… a weblog by Jonathan Buys

A Technical Education - Base Level Hardware

September 20, 2014

The first and most important thing to remember when considering a computer is that computers are machines. Incredible, wondrous, bordering on magical machines, but machines nonetheless. They were built by people who are no smarter than you, and designed by people every bit as fallible as you. There are no magic incantations, no special spells, and no generational gap that make one group of people better able to understand computers than another. Computers are machines, machines that you can understand.

So let’s get started.

Viewing a computer from the outside, there are four main components. Normally two ways to interact with the computer, a mouse and a keyboard. There will be a way to view the results of your interaction through the monitor, the screen that is the most visible part of the machine, and there will be the case that encloses the actual guts of the machine, the engine if you will.

These main external parts are present in computers of all sizes, even a smart phone, although the input mechanism and the screen have been combined.

Inside the case, all computers share the same basic components: CPU, RAM, storage, networking, and input and output ports. Let’s go over each component.

CPU

The central processing unit, CPU, can be considered the brain of the computer. At a high level, you can think of it as making decisions, very simple decisions, very, very quickly. The speed at which it makes these decisions is measured in hertz. A CPU that operated at one hertz would make one decision per second, but that would be an incredibly slow computer. Most computers now work with CPU’s measured in Gigahertz. For example, the computer I’m using to type this on has a CPU speed of 2.66 GHz, which means it can make 2,660,000,000 decisions per second.

Secondly, most CPUs come with multiple cores. A single CPU with two or more cores can be thought of as having the ability to make more than one decision, or threads of decisions, at a time. Each core runs at the same speed, but can operate on different information.

Generally, the faster the CPU speed, the faster the computer can process information, which should make it feel faster to the user. However, the other parts of the computer contribute to the overall feel of responsiveness too.

RAM

While the CPU is working on making all those decisions, it needs a place to put things. RAM, which stands for Random Access Memory, and is also known as primary storage, is a fast, convenient place for the CPU to put things that it’s currently working on, or that it has worked on recently, and might work on again. Here’s an example: if you open up a document in Word, everything you are typing into the document is being stored in RAM, up until the moment you choose to save the document. Unfortunately, RAM doesn’t persist between reboots, so everything that is saved only in RAM is lost if the computer reboots. If we want to save things on the computer for good, we have to save it to secondary storage, also known as the hard drive.

Storage

There are two options for storage in computers today: traditional spinning disk hard drives, and the newer and much, much faster solid state drives, called SSDs. Hard drives are slow because on the inside there is a metal platter spinning at thousands of revolutions per second, and a mechanical arm holding a head that moves across the disk to read and write the data. While advances in hard drive technology have made access faster over time, the physical limitations of the mechanics make this part the slowest on the computer.

On the other hand, an SSD has no moving parts, and access to reading and writing the data is done entirely electronically. An SSD is an order of magnitude faster than a hard drive, but for the moment it holds less data and is more expensive than hard drives. That’s the trade off, today, you either pay more for a faster computer with less storage, or less for a slower computer with more storage.

In my opinion, the price of solid state drives has come down enough that unless you know you need lots of internal storage, go for the SSD. It will make the entire computer feel faster.

Networking

Networking is a complex topic, and to fully understand it is beyond the scope of this introductory article. In a future ATE article we will cover the basics of how the Internet works, but not today. Suffice to say that there are two forms of networking to be concerned with: wired and wireless. Wireless, or WiFi, uses a small radio inside of the computer to connect to a network. The stronger the signal, and the less interference there is with the signal, the better your connection will be. Generally, if you are connecting at home or at school, your computer will share a network with other devices, and will connect to one or more wireless routers or access points. The router will most likely connect to a cable modem (assuming a home network), and the cable modem provides access to the Internet.

Wired networking uses a standard called Ethernet. Basically, there is a cable that connects your computer to a router, and the router connects to the modem for Internet access. Again, there are trade-offs. Wireless access is simple to setup, and lets you move your computer all around your house or school without loosing access to the Internet. The cost of this convenience is speed. Although WiFI is getting faster, it is still nowhere near as fast or as reliable as a directly cabled connection.

For me, the convenience of wireless outweighs the speed and reliability benefits of a wired connection. If I used a desktop computer that was always in the same spot, then a wired connection would make far more sense.

Input/Output Ports

Along the side or back of your computer will be a series of ports; different shaped plugs for different types of cables. These ports allow you to connect additional devices to your computer to extend the usefulness of the machine. For example, you may wish to add an external display to a notebook computer, and would plug into the mini-display port. Or, you may wish to plug in an external hard drive to backup your computer, and would plug the drive into the Universal Serial Bus (USB) port. There are normally ports for headphones and microphones, and possibly a place to plug in storage cards from cameras.

Most modern computers will allow you to plug a device into one of these ports have have the computer automatically configure the device for use. Don’t be afraid to plug something in, and if it doesn’t work, don’t be afraid to pull it back out again. That’s what the ports are there for. Some devices, like hard drives, want to be “ejected” before pulling the cable out of the computer, but even that may soon be a thing of the past.

Motherboard

One last part I forgot to mention above: the motherboard. Also known as the “system board”, the motherboard is the glue that connects all the other components together. Everything connects to the motherboard, and thin strips of conductive material printed onto the board called the bus connect the different parts together.

Conclusion

You look at the screen, type on the keyboard, and interact with the mouse or touchpad. Internally, the computer uses the CPU to make decisions, stores things temporarily in RAM, writes data permanently to a storage drive, connects to the Internet over a wired or wireless network connection, and is extensible via the input/output ports. And, all the different parts connect through the motherboard.

Now that we’ve covered the basics of hardware, next week we will talk about some of the software that makes the machine come to life.


A Technical Education

September 12, 2014

I didn’t grow up with computers. They just weren’t a common thing in Montana in the 80’s. When my family moved to Texas for two years during my sixth and seventh grades, one of my friends had one in her room that we would play Oregon Trail on, but otherwise it was unremarkable. With the exception of video games and VHS tapes, my childhood was very much like the childhoods of the generations before me. If I wanted to see a friend, I’d have to walk over to his house. If I wanted to send someone a letter, I had to sit down and write it out on paper, scratching out misspellings along the way, then folding it up, stuffing it in an envelope, licking a stamp on it, and dropping it in the mailbox. And then, I’d wait. Sometimes for weeks, sometimes for months. In the past twenty years however, our world has changed dramatically.

If my daughter wants to talk to someone, she pulls out her phone and sends a text. If she wants to send a longer message, she might, if pressed, sit down at her Mac and send an email. Then she waits five or ten minutes, tops, for a reply. More likely, during those ten minutes she’s sent a Facebook message and posted to Twitter. Computers and the Internet have changed how we interact with each other, and technology has improved faster than our culture and education system has been able to adapt to it.

What are these magic boxes that have intruded on our lives? How do they function? How can we best use them? How can we ensure that we become their master, and not the other way around? There are websites, games, and apps that have become very good at exploiting basic human psychology to extract our personal information, time, and money.

Education is the first and best defense against those who would use our ignorance against us. In the past twenty years, computers have barged their way into the spotlight of nearly every facet of our personal and professional lives, but they are not magic.

I’m starting a series of posts here where we are going to pull back the curtain and see that the wizard is, yet, just a man. We will examine the inner workings of the machine, the components that make up the whole. By the time we finish, you will be able to identify the basic hardware components of a computer and their function, explain what an operating system is and how the main options differ, have a basic understanding of what the Internet is and how it works, and make educated and informed choices about online services.

Reading this series won’t make you an expert on computers, but it is my goal to give you the basic knowledge required to operate computers confidently, and discuss the available options intelligently.

Look for weekly updates to A Technical Education right here.


Home Built Software and Systems

September 12, 2014

GigaOm is running an article written by Ralph Dangelmaier, the CEO of BlueSnap, claiming “We’ve reached the end of ‘build it yourself’ software.” It’s a nice thought, along the same lines as “We’ve reached the end of ‘host it yourself hardware’,” and “We’ve reached the end of you needing anything other than what someone else has already developed.” In the past fourteen years I’ve been in the industry though, the systems I’ve seen run the best are the ones hosted on our own hardware running our own code. Off-the-shelf software can be great for certain situations, but if you are outsourcing a core function of your business, what kind of value are you really providing?

Admittedly, building your own software from scratch is too much for most. However, if you use the building blocks of open source correctly, you gain the best of both worlds. Functionality and flexibility.

Dangelmaier’s claims center around an odd story of a company nearly sixty years ago who started building entire houses using an assembly chain technique. The company could spit out up to thirty homes per day; thirty identical homes. I’m sure they were affordable at the time, what I wonder is how many of those homes are still standing today. When applying that same thought process to software systems, the concept of being able to slightly customize assembly line software starts to break down as soon as the needs of the business start bumping up against the upper limits of the purchased software.

If you never need to run that Windows only application on anything other than a single server, you might be fine. As soon as you need to expand that system to provide high availability, failover, or disaster recovery, things start to fall apart, and costs go through the roof. The initial pain of developing the software yourself is made up for later by having the flexibility to modernize and adapt your system to changing times.

I’ve recently started looking at building out my own system based on FreeBSD jails. I’ve had a fascination with what I call the beautiful system for years, I think it’s high time I stopped making prototypes and built something worthwhile.


The Apple I Knew

September 10, 2014

As usual, John Gruber has the best take on the Apple Watch that I’ve read, and one sentence in particular stood out.

Rather, I think Apple Watch is the first product from an Apple that has outgrown the computer industry.

The Apple that is releasing that watch is not the same scrappy underdog from decades past. This is the new Apple, a massive powerhouse making the best products in the industries they enter. Computers, phones, tablets, and now, watches. This isn’t the same Apple that advertised their new operating system to Unix geeks.

Or, is it?

I don’t think the Apple Watch is a product designed for me, and that’s fine. I’m happy to see Apple grow and mature, as long as we keep seeing hints that they are still the same company with the same values, simply expressed in different ways. The Apple in the Unix ad above valued simplicity, beauty, power, and obsessive attention to detail. When I look at that watch I see the expression of those values in a new product.

The Unix ad above drew me to the Mac, and I’ve stayed because of the community. The community came together because we all shared the values we saw expressed in the products Apple made, and in their own statements. There are always going to be a few missteps along the way, some ham-handed attempts, and inelegant solutions. There will be times when Apple does things that are embarrassing, or just flat out wrong, but they’ve been doing that all along.

Sometimes they don’t pay quite close enough attention in their betas, which worries us:

Why am I worried about iOS 8? I keep seeing things like this: twitter.com/bradleychamber…
Dr. Drang (@drdrang) Sep 16 2014 8:50 AM

Sometimes we see trends with their software quality that worry us:

The sad truth is that EVERYONE is rushing software out the door because of Apple product releases.

Not a sustainable activity for ANYONE…

Craig Hockenberry (@chockenberry) Sep 15 2014 2:16 PM

But, really, these are things we’ve been seeing all along. In fact, it used to be common knowledge that a new OS X release would not be stable till at least the 10.x.3 release.

One of the endearing qualities of Apple is that their grasp almost always exceeds their reach. They are daring greatly, aspiring to do things that the tech industry simply doesn’t understand, and that they may or may not be able to pull off. Stretching a little further, a little wider, straining at times to accomplish their goal.

I think Gruber is right, he normally is, and that the Apple Watch will sell well. How the Mac, OS X, and the rest of the ecosystem evolve along with Apple will be exciting to watch.


Marked Down

September 4, 2014

If you really, really care about Markdown, Jeff Atwood of Coding Horror and Stack Exchange fame has a new project for you. Apparently, Jeff didn’t think Markdown’s original creator’s care of the code was quite up to snuff, and decided to build a new project to more accurately codify the syntax and implementation details. All good things, if, again, you really care about such details. If, however, you are using Markdown like the majority of us: to making writing on the web a bit easier, well, this all might go by unnoticed. At least, it probably would have if Jeff had named his project anything other than “Standard Markdown”.

Markdown has two parts. First, a very bare syntax that defines things like links, italics, and headings. Second, a small, but very clever perl script that parses the Markdown text and converts it into HTML markup. Over the years several other people have written their own parsers for Markdown text, which has led to a fantastic array of available editors and parsers for all platforms, which allows writers to concentrate on writing, and not get bogged down in the details of actually putting our text on the web. Jeff’s heartache seems to be that each of these parsers rendered HTML a bit differently. Gruber has no problem with that, and, for what it’s worth, neither do I, but it seems to bother Atwood quite a bit.

There is only one “standard” markdown, and it’s a perl script written in 2004, hosted at Daring Fireball. Everything else is a derivative work, and for Atwood to claim the name Standard Markdown is wrong. He did not create the syntax or the original parser, and that he is unsatisfied with the handling of the pair is immaterial. It doesn’t matter how he feels about it, he should name his project something else.

I actually don’t care all that much about whether there is a spec for Markdown. I use various aspects of the language all day every day. I use it on every computer I touch. That’s a statement against Jeff Atwood’s express motivation. I’ve never once cared about the project’s stewardship. I care that it is not complicated and it’s easy to read.

Gruber created something that he wanted to use, then put it out there for the world to use, and in the ten years since he last updated it, Markdown has become extremely popular. However, just because the idea became popular does not mean that anyone is entitled to demand anything more from the original creator. Markdown works for me every day, and I imagine it will continue to do so as long as perl works, no matter what the spec is.


Small Site Update

July 11, 2014

I’ve been publishing this site with Jekyll for several years. I’m not sure exactly when I switched over from Wordpress, but it’s long enough ago that I’ve forgotten when I started.1 Over the past few weeks I’ve run into a few issues with Jekyll that have caused me to reevaluate if it was still the right choice for me. The short answer is no, the long answer is that this site is now published with my own Python script.

List of Grievances

Jekyll is popular enough with the geek crowd that there are probably reasonable solutions to everything listed below. However, that would assume that I’m reasonable, which I think we’ve established is not always the case. And besides, something Dr. Drang said the other day has been stuck in my head:

the great advantage of making your own software is that you can customize it to match your own idiosyncrasies.

Thus, 370 lines of Python. On to the motivation to move.

  • Dependencies

Strictly speaking, there are not that many Ruby dependencies for Jekyll, and the are all automatically installed when running gem install jekyll. To be able to compile the gems, you need to have either the full Xcode IDE installed, or at a minimum the Xcode command line tools. Not much, still more than I thought necessary to parse text and move files.

  • Lost Pages

One of the ways I used Jekyll was to build an internal site where I work. I use the site to keep coworkers updated with what I’m working on, but more importantly I use the site to publish reports. The reports are kept in a separate “/reports” directory under the site root, and Jekyll used to automatically compile the markdown to html in that directory along with the rest of the site. I’m not sure what happened, but at some point that stopped working, and when I rsync’d my site using the “–delete” flag, all my reports were gone. Luckily, I had a backup so I was able to quickly restore the reports, but once I realized what had happened I had to rethink my “modern living document”. 2 A process I was in the middle of when I encountered the next grievance.

  • Failure to Build Site

Jekyll failed to build my site last week because of a UTF-8 error; it was all I needed to start looking for something else. Apparently there was a special character in the title of one of my posts. Again, this wasn’t anything new, that post must have been built before because I wasn’t building anything new at the time. Something changed, I don’t know what, and troubleshooting this error led me down a rabbit hole of Ruby bugs I didn’t want to go down.

Options

I evaluated, and discarded, several options.

  • Wordpress.com
  • Self-Hosted Wordpress
  • Squarespace
  • Ghost
  • Hakyll
  • Hyde
  • Hugo

I briefly looked at a few others, but these were the ones that received the most thought.

  1. There was, of course, Paragraphs, but I’m content to let that go. Making peace with your past, learning from your mistakes, and moving on older and wiser is the only way to live in peace. 

  2. My term for an internal, corporate blog. I maintain it as a way to avoid emailing Word documents and PowerPoint presentations to each other. When someone wants something like that from me, they get a link to an HTML document. 


What it Does

June 10, 2014

Our relationship with technology has become unexpectedly skewed. I was just reading through Sid O’Neill’s recent article, Losing Apple, and found myself nodding along on several points, particularly here:

How did it come to this? Time was I loved poetry, literature, art, music, cheap wine and the smell of an old book. Now my spare moments are spent rubbing glass: from the latest $AAPL share price, to the wildest speculative mockup, to the newest analysis. Levels upon levels of inconsequential meandering in flat prose that I’ve rolled and wrapped myself in like a musty felt blanket till I almost forgot the taste of fresh air.

I have watched the WWDC, and I was excited when all the new fancy was revealed, but a couple of days later I found myself wondering what exactly I was so excited about. I tried to recall a specific feature that I was looking forward to and momentarily came up blank. The new language sounds great, but I don’t have time to learn a programming language right now, or to develop a new app. I’m genuinely excited about the new look and feel of Yosemite, but I’ll most likely be waiting till the Fall to install on my daily driver at work.

I’m excited for the people I know at Apple who have done such great work and have been a part of something so big. I’m also happy that the developers of many of my favorite third-party apps are excited about iOS 8 and Yosemite, because it means that the apps I use every day will continue to get better. Thinking back on watching the CraigNote, I was excited because it felt great to see our team winning, it felt great to be a part of something, even if I was just a small, insignificant part. Being part of the Apple community for the past ten years, it’s exciting to see what we believe in succeed.

But, what else? Why do we become so enthralled by these machines?

I believe that whenever we choose to align ourselves with a particular product, brand, or organization, we do so because what we perceive as their values or the values they claim line up with our own. In the case of “Apple and related technologies”, those values are simplicity, beauty, and technical excellence. What burns some of us out, like what I believe may be happening to O’Neill, is that we focus far too much on how those values are expressed in the products, and far too little on the actual usefulness we get from Apple’s investment. In other words, it’s what they do that defines them.

What we love about Apple products frees us to get real work done. That’s one of the most interesting differences between Apple and Android advertising. Android ads, particularly the older Droid ads focused on what the phone was. Apple’s ads focus on what the device allows you to do. Play baseball, fix a windmill, conduct an orchestra, travel the world with a disability. Live. Live your life without worrying if your chosen tools are going to work or not. The promise that Apple makes, and the deal we make with Apple when we buy from them, is that we give them our money, and they give us devices that work.

We need Daring Fireball, Shawn Blanc, MacStories, MacSparky, Stratechery, and of course Dr. Drang. These writers inform and inspire us, they show us how we can do more with our machines, and they explore the details we appreciate. What we don’t need is an echo chamber constantly reverberating the same small set of words. If you have something to say, then say it, if you find joy and belonging in the community, then participate. But don’t let the obsessions of others get in the way of what your life is meant to be. Find your own passion, and pursue it relentlessly. Pick tools that you can rely on, and that reflect your values, and then get out there and do something great.


Responsibility

April 29, 2014

“UNLESS someone like you cares a whole awful lot, nothing is going to get better, it’s not.” – The Lorax

I believe that it is my responsibility to have an understanding of my impact on the world around me, and who and what I support, either implicitly or explicitly, by the products I use. Not everything easy is right, and not everything cool is good. I try to do the right thing whenever I can, balancing the needs of my family and the culture we live in. Sometimes, there’s no good answer, but sometimes, as in the latest case of sexism in the tech industry, the answer is clear.

I’ve removed my site and all code from Github, and deleted my account. Based on the report by Julie Ann Horvath, the vague response by Github, and the storm of coverage that has followed the issue, as well as resurfacing of past stories, I’ve decided not to do business with the company. I’ve had an account on Github for years, and used Jekyll and Github Pages to host this site for at least the past three years. As of yesterday, I’ve moved the site to Nearly Free Speech.net. I’ll be considering switching from Jekyll to another static blogging engine. In fact, I built one that I might resurrect.

My actions are small, and completely inconsequential to Github, but they mean something to me. I cannot, in good conscience, continue to support an organization run by an immature boy’s club. There is a sickness in the industry, something that has been pervasive in geek culture for years. The objectifying of women in the industry and our culture is damaging to everyone involved. One might not think that one woman getting harassed at a silicon valley darling is that big of a deal, not worth starting a tempest in a teapot, but is it? Is it really?

It is wrong to have business meetings at strip clubs. It is wrong to yell out sexual jokes across the office. It is wrong to treat women as being anything other than equals. Treat them as you would wish to be treated.

Culture is made up of who we are together. One person making a change might not matter, but it’s a start. Perhaps soon it’s one, then another, then another, and another, and eventually those who care become the majority, and the culture has changed.


Site Design Non-Update

March 23, 2014

The site design of jb was very nearly upgraded tonight. Well, upgraded is not quite the word for it. Changed is more accurate. Even though I’m quite happy with the look and feel of the site, from time to time I get frustrated with one aspect of it or another. I’ve spent more time that I want to admit thinking about readability, fonts, font sizes, spacing, kerning, and the like, but occasionally I’ll look at another site and think “that looks good”. And then mine looks like crap for a day or so.

The most recent bout of site envy came while reading a recent post by the brilliant Dr. Bunsen1. His entire site is worth reading, some posts several times. I decided to do a bit of HTML spelunking and see what the source revealed, and saw several references to the Pure CSS framework. I hadn’t heard of this one before, so I downloaded it and set up a new Jekyll powered site with the base blog layout. It looked fine, it works as advertised, but it would obviously take a lot of work to tweak it to look just the way I wanted it to.

After running through this exercise I went back and thought about what I don’t like about my site right now, and realized that it is not the overall look of the site that I’m not happy with, it is a few details that are nagging at me. For one, code syntax highlighting is not working, and for two, the Bigfoot footnotes were not lining up properly on the home page. I solved the latter problem by only showing only one post on the home page at a time, but the former is still bothering me.

The funny part of it is that one of the reasons syntax highlighting is not working is that I’m not using the default Jekyll Markdown converter. In order to get footnotes to work the way I want them to, I’m using Kramdown, which doesn’t use Pygments, but can be configured to use Coderay. I have the settings for Coderay, but so far they don’t seem to be doing anything. None of my inserted code is rendered with anything but “code” and “pre” tags. Ah well, this site remains, as always, a work in progress.

It’s always a good exercise to try out a completely different way of doing things. Even when I decide to scrap the work and keep things the way they are, I still count it as progress made.

  1. Whom, if you are not following, you certainly should. 


For The Fun Of It

March 1, 2014

I still need an anything bucket, and nothing fills that gap like my old friend Yojimbo. I was an early adopter of Yojimbo, back with version one, and I upgraded faithfully for version 2 and version 3, but I held off for a long time on version 4. In the mean time I tried Evernote, DEVONthink, Pinboard, and just the file system to fill the void that Yojimbo filled so gracefully. No more, I’ve come home, and it feels great to be here.

Back before I used a Mac for work, I used it for fun. It was fun to grab random stuff off the web that I wanted to keep and save. I like collecting things, mainly maps, pictures of old 60’s era Volkswagens, and British motorcycles. I also like to grab quotes I’ve found inspirational, designs that I love and want to go back to, funny pictures of cats and dogs, and whatever other random thing catches my eye.

When I bought my first iPhone, I found that I wanted to be able to collect things on the go as well as on the web. Pictures of artwork at a store, or a quick note about a blender. Without a proper Yojimbo client for iOS, most of that stuff was lost. I tried to use Evernote or DEVONthink To Go, but neither tool really clicked with me.

Nothing else works like Yojimbo. The web clients like Pinterest are too slow, and Pinboard is too basic. I can’t just browse through pictures of things in Pinboard. I really don’t like having to rely on the web. As long as I have a Mac I can get to my Yojimbo database, one way or another.

Yojimbo feels right. Not for work, not for a project management system or detailed information store. That’s not what I use it for; I have a system for that. Yojimbo is for everything else, all the fun stuff that I find and want to keep. In the end, Yojimbo 4 works great, and recaptures some of the magic that made me fall in love with the Mac. I keep it just for the fun of it.