Category Archives: Apple

Open Sourcing

Fun story.

For my own use and as a programming activity, I wrote a little Python script that I could use as a countdown timer. (Bonus feature: I can run multiple timers at the same time. Apple iOS, I’m looking at you!)

I wanted to have a little bell that would ring at the end, and look at that, GarageBand has a little alarm bell sound! Here it is:

I was going to throw my little project up on GitHub as an example for my students; also, because I’m A Developer. I was pretty sure I wouldn’t have a problem packaging Apple’s alarm bell sound with that project. I mean, I’d already had to go to the mat with Google/YouTube about a song I’d made using some of Apple’s sound loops, and I’d done my research. At just under 30-thousand words (at that’s only for the English version) you can polish off GarageBand’s User License Agreement in an easy afternoon, and here’s the good news about GarageBand projects:

H. GarageBand Features and Support.
Except as otherwise provided, you may use the Apple and third party audio loop content (“Audio Content”), contained in or otherwise included with the Apple Software, on a royalty-free basis, to create your own original soundtracks for your video and audio projects. You may broadcast and/or distribute your own soundtracks that were created using the Audio Content…

Cool! Oh… but wait….

…however, individual samples, sound sets or audio loops may not be commercially or otherwise distributed on a standalone basis, nor may they be repackaged in whole or in part as audio samples, sound libraries, sound effects or music beds.

Dammit, Jim. I can’t use that file in my project. Oh, and maybe I just violated the license by embedding that file here.

What should I do for my project? Quick fix: borrow a desk bell from the Theater Department at school, record a single “ding!” and process it using open source Audacity (“Screw you, GarageBand.”), et voila:

My project–including that alarm bell!–has been posted on GitHub: https://github.com/rwhite5279/timer . Mischief managed.

For the record, I totally get why the GarageBand license agreement would restrict redistribution of files. It’s just another in a long list of Apple-related frustrations for me and I needed to vent a little.

Plus, I wanted to play you my bell recording. I’m quite proud of it! ;)

Demo: Encapsulation

The idea of encapsulation is fundamental to computers in a number of ways. Generally speaking, “encapsulation” refers to the idea of building a container around something, as if that thing were contained in a capsule. When it comes to computers, there are a couple of slightly different ways the term might be used.

Hiding code in a class, function, or library

Commonly in computer programming, encapsulation refers to the idea of hiding away the details of code. For example, you may write a bit of Python code that takes three coefficients for a quadratic equation a, b, and c, and calculates the real roots (solutions) of that equation:

a = 2
b = 4
c = -5
root1 = (-b + ((b * b) - (4 * a * c)) ** (1 / 2)) / (2 * a)
root2 = (-b - ((b * b) - (4 * a * c)) ** (1 / 2)) / (2 * a)

If you were having to write lots of programs to calculate quadratic roots, or if you wanted to be able to use those lines of code other places, you might very well write them into a small function or method called something like quadratic_solver that you could use in lots of different places. You might call that function like this:

roots = quadratic_solver(2, 4, -5)

In this single line of code, the messy details of multiplying, dividing, and square-rooting have all been hidden away from the main program. The details of that calculation have been “encapsulated” in the function.

Any time you import a library into your program–import java.util.Scanner; in Java, for example, or import random in Python–you are bringing in complicated bits of code that will be available for you to use without having to worry about some of the arcane, or mundane, or complex details that are contained in that code. The concept of encapsulation is extraordinarily powerful.

Programming languages: Machine code, Assembly, High-level

A second way of considering encapsulation is less obvious, but one that we use all the time.

High-level languages

You have almost certainly seen computer programs written in some “high-level” language like Python or Java. These languages are called high-level because they, for the most part, consists of syntax that might be recognized and understood.

Here’s a program that’s written in C, which adds up the numbers from 0 to 255 and prints out the result:

# include 

int main(void)
{
    int x, sum;
    sum = 0;
    x = 1;
    while (x < 256)
    {
        printf("%d ",x);
        sum = sum + x;
        x = x + 1;
    }
    printf("\nSum = %d\n", sum);
}

You may not understand everything in this program, but it certainly has a few English words in it, and even a programmer who doesn’t know C might be able to work their way through this program to identify how it works.

We have a serious problem, however. You may have heard that computers don’t understand English: they only work in binary digits, or “bits,” the zeroes and ones that are represented by a billion switches being turned “off” or “on.”

So how does the computer run this program?

It doesn’t. But there is another program on the computer–a compiler–that is able to take this program and convert it to something called Assembly Language.

Assembly Language

In Apple’s macOS, if you have the Developer Tools installed, you can use the gcc compiler in the Terminal to output a compiled version of the program.

$ gcc -o sum sum.c

What does this new version of the program look like? We can see the Assembly Language version by using the otool program:

$ otool -tv sum
sum:
(__TEXT,__text) section
_main:
0000000100000f10 pushq %rbp
0000000100000f11 movq %rsp, %rbp
0000000100000f14 subq $0x20, %rsp
0000000100000f18 movl $0x0, -0x4(%rbp)
0000000100000f1f movl $0x0, -0xc(%rbp)
0000000100000f26 movl $0x1, -0x8(%rbp)
0000000100000f2d cmpl $0x100, -0x8(%rbp)
0000000100000f34 jge 0x100000f65
0000000100000f3a leaq 0x65(%rip), %rdi
0000000100000f41 movl -0x8(%rbp), %esi
0000000100000f44 movb $0x0, %al
0000000100000f46 callq 0x100000f84
0000000100000f4b movl -0xc(%rbp), %esi
0000000100000f4e addl -0x8(%rbp), %esi
0000000100000f51 movl %esi, -0xc(%rbp)
0000000100000f54 movl -0x8(%rbp), %esi
0000000100000f57 addl $0x1, %esi
0000000100000f5a movl %esi, -0x8(%rbp)
0000000100000f5d movl %eax, -0x10(%rbp)
0000000100000f60 jmp 0x100000f2d
0000000100000f65 leaq 0x3e(%rip), %rdi
0000000100000f6c movl -0xc(%rbp), %esi
0000000100000f6f movb $0x0, %al
0000000100000f71 callq 0x100000f84
0000000100000f76 movl -0x4(%rbp), %esi
0000000100000f79 movl %eax, -0x14(%rbp)
0000000100000f7c movl %esi, %eax
0000000100000f7e addq $0x20, %rsp
0000000100000f82 popq %rbp
0000000100000f83 retq

This version of the program contains a series of commands–push, move, jump, add, call, pop, return–that manage the data in the program, addresses in memory (listed along the left side), and registers (like %esi). Some people program in assembly language, but you can see that it’s a much more complicated affair. The process of storing the value 1 in the variable x is, in assembly language

movl $0x1, -0x8(%rbp)

We can say that the assembly language instructions are “encapsulated,” or hidden away, so that we don’t have to worry about those implementation details. We can write our high-level code, and rest assured that the compilation process will take care of the dirty work for us.

Of course, we still haven’t gotten down to the 0s and 1s that the computer needs to run a program. Let’s go one step farther down.

Machine Language

In the process of compiling, we actually created a binary version of the program, with nothing but 0s and 1s. We can use the xxd program in the terminal to view that code:

$ xxd -b sum | cut -c 11-64
11001111 11111010 11101101 11111110 00000111 00000000
00000000 00000001 00000011 00000000 00000000 10000000
00000010 00000000 00000000 00000000 00001111 00000000
00000000 00000000 10110000 00000100 00000000 00000000
10000101 00000000 00100000 00000000 00000000 00000000
00000000 00000000 00011001 00000000 00000000 00000000
01001000 00000000 00000000 00000000 01011111 01011111
01010000 01000001 01000111 01000101 01011010 01000101
01010010 01001111 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000001 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00011001 00000000 00000000 00000000
11011000 00000001 00000000 00000000 01011111 01011111
01010100 01000101 01011000 01010100 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000001 00000000 00000000 00000000 00000000 00010000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00010000 00000000 00000000
00000000 00000000 00000000 00000000 00000111 00000000
00000000 00000000 00000101 00000000 00000000 00000000
00000101 00000000 00000000 00000000 00000000 00000000
00000000 00000000 01011111 01011111 01110100 01100101
01111000 01110100 00000000 00000000 00000000 00000000
.
.
.

It is this code–these 1s and 0s–encapsulated several layers below our original version, that the computer uses to run the program.

These 0s and 1s are used to operate the digital hardware, the memory locations and the logic gates, that produce a given output. In fact, before we had keyboards, mice, and monitors, the personal computer was simply a set of switches with lights above them. Computer code was entered using the individual switches–a long, painful, error-prone process–and output was read from the computer as a series of flashing lights.

Here’s a programmer entering a program by hand onto such a machine. The resulting program displays (in binary, of course!) the prime numbers between 2 and 255.

Fortunately, we don’t have to enter binary logic instructions by hand. Those codes are encapsulated well beneath our high-level languages.

Update your Creative Process

In early 2001, in press releases and ads, Apple encouraged its customers to Rip. Mix. Burn. their music on an iMac.

It was an audacious advertising campaign given that the recording industry was in the midst of grappling with the rampaging growth of digitally copied media via Napster, LimeWire, and others. The Mac would soon leverage its position as a media hub with the release of the iPod later that same year. The process of assembling a “mix tape” of songs for a friend would never be the same again… although that process has since disappeared completely. Because everybody just streams now.

This post isn’t about that, though.

If taking prerecorded media and putting it together into a custom mix was the “old creativity,” it didn’t take much in the way of actual… you know, creativity. Assembling and ordering someone else’s music is fine, but… it’s a stretch to call it creative.

Welcome to the new creative. “Rip. Mix. Burn.” has evolved.

Fork. Commit. Push.

That’s right, I’m talking about using GitHub to fork a project, make changes that you commit to your fork, and then push those changes back to the master. If you know about GitHub, this all makes perfect sense, and is absolutely reflective of a creative process happening.

And if you don’t know about GitHub? Well… you need to get on it!

More to come…

Sherlocked!

Well, I suppose it had to happen sooner or later…

I’ve been Sherlocked.

If you’re not familiar with the term “sherlocked,” it comes to us courtesy of Apple, which back in the day offered a file search capability on its OS called “Sherlock.” The original feature set of that capability was expanded upon by a third-party developer who crated a software tool “Watson” that served as a companion to Sherlock, with the ability to search the Internet, perform calculations, look up references, etc. It was such a useful tool that Apple, in a subsequent release of the OS, incorporated almost all of those same features into their software. The developer was no longer able to make any money off the software he had developed–he had been “Sherlocked.”

This wan’t the first time that such a thing had happened. The first case of this happening that I’m aware of is back in the early Macintosh days (System 7), when Steve Christensen’s SuperClock! utility was written to allow the computer to display the time in the upper corner of the screen. This eminently useful feature was incorporated into System 7.5, along with a number of other features adapted / adopted/ stolen from other software developers. A lot of people view this as simply the cost of doing business with a large, powerful organization, but it seems like a bitter pill for a hard-working developer to have to swallow.

You can learn more about the process of being Sherlocked by Apple at:

What does this have to do with me?

A couple of days ago, I received an email from the College Board announcing some new features that were being added to the College Board website.

That “Question Bank” that supports students with 15,000 on-demand questions? That’s my idea! That’s exactly what the learnapphysics.com website has been doing for the last ten years.

Okay, to be fair, people have been publishing banks of test questions for years, and the SAT “Question of the Day” was a thing that I took as inspiration for my website, so… I can’t complain too loudly here. In fact, I’m not complaining at all. I’m glad that the College Board has caught on to the idea that there are lots of ways that they can support students taking their courses.

But if anybody asks, I’m going to come right out and say it: “Yeah. I got Sherlocked by the College Board.”

Losing the Functional High Ground

Losing the Functional High Ground

by Richard White

2016-10-26

The title of this post is a direct reference to Marco Arment’s excellent online essay from January 4, 2015, Apple has lost the functional high ground. If you haven’t read that post, in which Marco points out that Apple’s software quality has fallen off in the past few years, you should check it out.

Since that post was written, Apple’s success as a computer company has suffered other slings and arrows at the hands of former admirers, and most recently, on the hardware front. For a variety of reasons, Apple’s once formidable line of “best in class” computers has been reduced to a rag-tag selection of pretty, well-made, computers that run pretty nicely considering you’ve just paid top dollar for a new machine built from four-year-old hardware.

In 2013, Apple’s Phil Schiller unveiled the sleek, new, Mac Pro at the World Wide Developer’s Conference, with a defiant “Can’t innovate any more my ass!” for the benefit of observers who felt even then that Apple might have started to lose its way. Now, over three years later, that Mac Pro hasn’t seen a single upgrade, and Schiller’s sneer has become a sadly ironic comment on the ongoing state of affairs.

MacRumors, a fan-site so faithful they’ve got “Mac” in their name, maintains a Buying Guide for its readers, with listings on the current state of Apple’s hardware, and recommendation on whether now might be a good time to buy or not. Here are their recommendations as of a few weeks ago.

2016-10-15-macrumors_buyers_guide

For anyone who has been a fan of Apple over the years, it’s painful to watch this decline. There may be some comfort in knowing that they’ve got the best selling mobile phone on the planet, and a good thing, too: that single product line, the iPhone, accounts for almost two-thirds of Apple’s revenue.

There’s a reason they removed the word “Computer” from their company name, “Apple Computer, Inc.” back in 2007.

John Gruber disagrees with Arment’s characterization of Apple: “…if they’ve ‘lost the functional high ground’, who did they lose it to? I say no one.”

It appears to me and to other observers that they’ve lost it to themselves. Their development of computer hardware and OS X software has effectively been abandoned in favor of their cash cow, the iPhone.

This is written on the eve of a much-awaited product release from Apple. I have every hope that the new products they announce tomorrow will restore our faith in the company.

And I have every fear that we will be disappointed.

Follow-up

I think I have my answer.

Privacy, Security, and Encryption

Privacy, Security, and Encryption

by Richard White

2016-03-12

There are a number of conversations going on right now related to the ideas of privacy, security, and encryption. Three contexts:

  • Do government representatives (NSA, FBI, local police, etc.) have the right to access your personal information–metadata, phone calls, emails, etc.–without a warrant?
  • Does the FBI have the right to compel Apple to create software that will provide government agencies with access to information stored on Apple-manufactured hardware?
  • Was Edward Snowden wrong to make copies of secret documents and share them with journalists, with the intent of exposing what he viewed as government corruption?

All of these conversations are fundamentally concerned with the question of whether or not people have a right to privacy, and how hard the government has to work to “invade” that privacy.

There’s much to be explored here, more certainly than can be covered in a brief blog post. My talking points regarding the subject–my “elevator talk” when the occasion arises–include these:

Just about everyone agrees that people need privacy, and have a right to privacy. This is a documented psychological need–people need time alone, and act differently when they are alone. The United States of America, in its Fourth Amendment to the Constitution, includes federal prohibitions against “unreasonable search,” which has been interpreted to include a wide variety of forms of surveillance.

This need for privacy is not just psychological. Most people feel that financial transactions, including the ones that we all conduct with our own banks, should be protected. Indeed, financial transactions on the Internet *must* be private; if not, the communication structure of the Internet allows for those transactions to be viewed by others, “good guys” and “bad guys” alike.

Our world is digital now, and the means of ensuring digital privacy is encryption. Encryption is simply “math applied to information,” in a way that ensures the information can be accessed only by the intended recipient. Encryption is a means of making sure that things–my bank information, my personal information, my business transactions, my diary–can be private.

Some government representatives, including the FBI and most recently President Obama, are calling for mandated “backdoors” in certain systems that will allow the “smallest number of people possible” access to anyone’s private information.

This point of view is flawed, for two simple reasons:

  1. Exchanging private information is possible, and has been done for years, without computers and/or phones. Requiring a company to place a backdoor in an operating system doesn’t change the fact that any of us can freely exchange messages via that phone that have been encrypted by another means. Encryption is math, and you can’t outlaw math. Ultimately, backdooring doesn’t “protect us from terrorists.” It just violates our rights to unreasonable surveillance.
  2. Providing backdoors in technology fundamentally means that one is building in a means by which normal security mechanisms can be avoided. This system, by its design, also allows untrusted agents to avoid the normal security mechanisms once they’ve obtained the means to do so. There is no way to allow only good guys to bypass security. Bad guys get to use the same bypass.

    (One easy example: The federal government Transportation Security Administration suggests locking your luggage with TSA-approved locks: Your luggage remains secure, but allows them to access your luggage for inspection without having to destroy the lock. Only the TSA has the keys that will open these locks… until they don’t. Now your baggage lock has a backdoor that the bad buys know how to defeat.)

If you’re concerned about the consequences of giving child pornographers, Chinese dissidents, and the Russian mafia access to this same encryption, there’s no way around that. (Or maybe you DO want to protect the Chinese dissidents? You’re going to have to make up your mind.) Those people will need to be dealt with the same way they always have been: legal warrants for wiretaps, legal warrants for reasonable search and seizure. At the end of the day, weakening encryption doesn’t stop the bad guys–it only makes it easier for them to victimize good guys like you and me.

Decipher this secret message and I’ll give you $100.

U2FsdGVkX1+Z8Wx61sOSQghi2ANM0QfXVXJzM7tP5eo=

Other interesting articles on this topic:

Celebrity Smackdown: iPad vs. Laptop

Celebrity Smackdown: iPad vs. Laptop

2012-05-29

by Richard White

It’s a simple question, really. You’re a forward-thinking guy or gal, and you’re thinking about updating the hardware at your school, or perhaps even getting into a 1-to-1 program, or a Bring Your Down Device agreement with your student body.

What do you do: go with iPads, or laptops?

Before we break this down, let me give you my qualifications, in case you were worried. I have a tendency to favor Apple-based solutions for many situations, both for the high-build quality of their hardware and the relative stability, reliability, and ease-of-use of their software. I have a MacBook Pro that I run OS X on, although I’ve also run Windows 7 on that machine as well. I have a PC desktop at home running Ubuntu, and a Lenovo netbook (x100e, no CD/DVD drive) that I run Windows 7 and Ubuntu on. My cellphone is an iPhone 4, and I waited in line for the original iPad, and purchased the “iPad 3” when it came out.

Another point of reference: I work at a school that officially supports both Microsoft Windows and Apple OS X machines. That same school currently uses classroom carts of machines–PCs, Macs, and iPads–to give students access to computers on an as-needed basis.

I’ve been accused of being an Apple fan-boy, and am somewhat guilty as charged. But what about this iPad vs. laptops showdown? If you only had one device to buy, which would it be?

  iPad laptop/netbook
Time to wake from sleep ~ 1 second 3-10 seconds
Battery life ~ 10 hours 1 – 4 hours
Availability of applications Many, most modified to run on the iPad. Available only through iTunes. Many, with availability of certain titles dependent on operating system
Interface usability Touch interface, not suitable for extended typing. External keyboards available. Keyboard and trackpad, with usability dependent on keyboard size, manufacturer.
File management No access to file system. Apps may have some ability to share files, but third-party solutions (Dropbox, Air Sharing, etc.) necessary to move files around. Organizing and moving files done with operating system.
Cost Base model: $499 Varies depending on manufacturer, model. (Lenovo G570, 15.6″ screen, i5 processor, 8G RAM, 750G HDD, Windows 7 Home Premium = $569 sale price)
Security Applications heavily policed by Apple, Inc and sandboxed. No user access to filesystem. OS X relatively safe, Windows typically requires running anti-virus software.
Strengths Near instantaneous wake from sleep and outstanding battery life. Listening to music, surfing the Internet, reading PDFs, are all dead easy straight out of the box. Does everything, conforms to current paradigm of computing. Easily customizable. Runs Flash and Java applications.
Weaknesses No “real” keyboard. Programs limited in availability (Microsoft Office suite not currently available) or function (Photoshop Touch doesn’t have full feature set). Doesn’t allow access to file system. Can’t display Flash files or run Java applications. Relatively limited battery life. Use requires knowing how to navigate the operating system, manage files.

Does that clear things up? At my school, for some teachers the iPads have literally transformed the way they conduct their classes, with students reading course handouts on them, writing papers on them, uploading them to the instructor via Dropbox, and the instructor annotating their work and returning it to them via email.

For other teachers, the iPad is a non-starter. The Physics classes are unable to run Java-based animations, and the programming class is unable to launch a Terminal or write Python programs.

My recommendation for teachers is that use cases be examined very carefully. For all the talk of a “post-PC world” with “cloud-based storage,” we’re not there yet. As an educator who, in addition to teaching subject-area content is also helping students master the technological tools that they’ll use in college and in business, I strongly feel that there’s so much more to technology than pointing and tapping. Students who are unable to right-click, or “Save As…”, or create a new folder for organizing their files, haven’t been well served.

iPads satisfy some needs for some teachers, it’s clear, and may be part of the educational technology equation for some schools. For an institution with limited resources, however, money will be better spent on laptops. And for schools considering a “one device to one child” program, committing to the iPad–the device du jour–is, in my opinion, short-sighted.

The End is Nigh

The End is Nigh

2011-12-01

by Richard White

“The End is Nigh!” For your optical drive, that is.

CDs and DVDs are still here for the moment, but not for long. Depending on how much you love your archives and content, it may be time to start thinking about a migration process that will allow you to convert your CDs and DVDs to a hard drive.

It’s an easy, if tedious, process. I did it with my documents and data last year: buy a couple of 1-terabyte external hard drives, plug one of them into your computer, plug in the nearly endless succession of CDs and DVDs that you’ve been burning data on all these years, and click-drag over to the terabyte archive.

Once you’ve spent a day or two doing that, plug in both terabyte drives and click-drag all the contents from one drive to the other, which will act as a backup of the archive.

At that point you’ll have at least three copies of your data: the original CD or DVD (which you might want to tuck away, should something catastrophic happen to both hard drives), and two copies of your data on the Archive and Backup external drives.

There are fancier ways to do this that you may already have built. rsync works magic in a shell script, and you can spend hours and days developing a system there that you can use to manage it all.

In the absence of anything fancy, though, at least get your data off those optical drives. In another three years or so, many computers—and certainly the most popular ones, including iPads and Macbook Airs—won’t have an optical drive, and you’ll have easy way to access that data. Let’s face it, the data storage on CDs and DVDs is time-sensitive anyway. Like that old slide film that your father shot just thirty years ago, that medium decays with age. If you think that Apple is wrong about that, you don’t have to look too far back to find another decision they made regarding media that was very controversial at the time. The 1998 iMac G3 came without a floppy disk slot in anticipation of what would happen throughout the industry in the years to come. By 2003, Dell was no longer including floppy disk drives as standard on their machines, and by 2007, only 2% of computers sold included floppy drives.

So, yeah. I’m not saying you need to run out right now and take care of this. But you might want to put it on your ToDo.txt list. I mean, come on. When’s the last time you bought a music CD?

Yup. That’s what I thought.

Do yourself a favor and get a couple of 1-terabyte archive drives. You’ll be glad you did.

Upgrading to Lion

Upgrading to Lion

by Richard White

2011-08-13

Are you working on an Apple machine that’s running Snow Leopard? That’s OS X version 10.6—click on the Apple in the upper left corner of the screen and select “About this Mac…” to see what version of the operating system you’re currently using. If you’re currently using OS X 10.6, you have the option of upgrading to OS X 10.7, code named “Lion.”

How you go about upgrading to Lion is relatively easy to do. From you Dock or the Applications folder, launch the “App Store.app” and do a search for “OS X Lion.” Downloading the app will cost you thiry bucks—a bargain for updating this particular operating system—and following the crystal clear instructions will take a couple of hours, depending on how fast your download connection is.

Should you upgrade your system? Yes, of course… at some point. You’ll absolutely want to upgrade to the most current version of your operating system at some point, for lots of different reasons. A new OS is typically safer, more secure, faster, and in some cases required to run recent software. For most people, though, I’d recommend that you update your machine later rather than sooner.

There are three reasons why you don’t necessarily want to jump into early-adopter “update now” mode.

1. If you’re running a “production machine” which has software installed on it that won’t be able to run under Lion, you obviously shouldn’t upgrade. A silly example: I have a friend who still uses the AppleWorks word processing program that Apple stopped distributing over ten years ago. AppleWorks won’t run under Lion, so my friend is going to need to convert AppleWorks files to a different format before upgrading, or resign himself to working with an obsolete program for the rest of his life.

2. If you’re running a machine that can’t upgrade to Lion. In addition to running Snow Leopard, you need a computer that has these minimum hardware requirements. If your machine doesn’t meet those requirements, you can just chill with your old machine running Snow Leopard until you’re ready to buy some new hardware.

3. It’s often a good idea to just wait a bit until the “first release” kinks get worked out. Each new verson of an operating system—10.7.0 in this case—is typically a first draft, and despite efforts to test the system under a lot of different conditions, there is always the potential for unexpected surprises, and the release of Lion is no exception. If you’re not willing to put up with some of the inconveniences that occasionally accompany early adoption, you should probably wait for another month or two until 10.7.1 is released. That will potentially give you a much more stable experience.

There. Have I convinced you not to upgrade? Good for you. You can stop reading.

Still here? Okay, if you insist on going through with the upgrade process, here are some tips for you.

1. Do a full backup of your system.
If you don’t use Time Machine, or SuperDuper!, or Carbon Copy Cloner, then you’ve got bigger problems than installing a new operating system. Do a full backup, and come back when you’re done.

2. Set aside a couple of hours for the download/installation process.
There shouldn’t be any problems—the installation process has been extremely well tested—so just follow the instructions and you should be up and running again in a couple of hours.

3. Bask in the wonders of the new system.
You may have heard about some of these. Full-screen mode for interruption-free work. Automatic document and window saves. Automatic version control. New user interfaces and styling for Apple-branded apps like Mail.app and iCal.app. New support for multiple workspaces (“Mission Control”). Apple’s attention to detail in the user experience, as always, shines in this new release.

4. Configure your new system.
Lion works a little differently from Snow Leopard, obviously. Other changes, in addition to those listed above: Two-finger swipes on a trackpad work the opposite of how they used to. Lion tries to auto-correct practically everything one types, it seems. There are some new apps in the Dock, including LaunchPad and FaceTime. If you have any experience with an iPhone or an iPad, some of the changes in Lion are designed to bring your experience on the computer closer to what you do on a touch screen.

Of course, not everyone always appreciates the changes brought about by a new operating system. From tweaks to the user interface to new controls and key combinations, you may find that some behaviors that you really like have changed under Lion. Fortunately, many of those changes can be reconfigured to match your needs.

Here are some of the modifications I made to my own machine after upgrading to Lion, along with a brief description of why I made those changes.

  • Remove LaunchPad, App Store, and FaceTime from the Dock
    I tend to use the Dock only for apps that I very frequently use, and these are just cluttering it up.
  • Select Apple Menu > System Preferences > General > Show scroll bars: Always (instead of Automatically based on input device)
    In an attempt to clean up the screen, Apple removed scrollbars from Windows, apparently not realizing how important scrollbars are for identifying whether or not a window contains additional information, and how much information there is.
  • Select Apple Menu > System Preferences > Trackpad > Scroll & Zoom: uncheck “Scroll direction: natural”
    The default setting on Apple machines now is for a trackpad to mimic the behavior of a touchpad, and this doesn’t work for me. On my iPhone, while I’m perfectly comfortable swiping a document UP to look further down that document, that’s because that’s how I would actually interact with a real piece of paper under my finger. For Macs and PCs, for the last 25 years, that’s not how mouses and trackpads have worked, and I continue to use PCs with trackpads that don’t follow Apple’s new convention. They knew this was going to be controversial when they introduced it, and that’s why they wisely provided the option to change this behavior via that checkbox. I’ve unchecked it!
  • In Mail, select Mail > Preferences > Viewing: check “Use Classic Layout
    Some people are really happy about Apple’s new 3-vertical-pane layout. I prefer the old one, thank you.

    If you ARE going to use the 3-vertical panes, consider changing this preference: Mail > Preferences > Viewing: List Preview: “1 Line”. This will allow you to see more of your messages at one time.

  • Select Apple > System Preferences > Language & Text > Text: uncheck “Correct Spelling automatically”
    Damn you, Autocorrect! I love spell-checking when writing a formal document or pounding with my big thumbs on the iPhone’s tiny screen-based keyboard. In most other circumstances, my computer trying to second-guess me is just annoying, and actually gets in the way of what I’m trying to do. Try leaving Autocorrect on for a day or 3 and see what you prefer.
  • In Terminal, type chflags nohidden ~/Library
    Apple has chosen to hide the user’s Library folder to keep the average Joe from digging around in there and messing it up. It’s true that most people shouldn’t be dinking around in there, but I do from time to time, and it’s nice to be able to navigate to that folder directly.
  • Select Apple > System Preferences > Time Machine > Uncheck “Lock documents 2 weeks after last edit”< br />
    In another move designed to protect users from themselves, Apple think that if you haven’t worked on a document in a couple of weeks, you probably don’t really need to edit it any more, at least not without typing in your password to verify that you really do want to edit that document. I work on old files all the time, and don’t need Apple holding my hand during that process.
  • In Terminal, type defaults write com.apple.Mail DisableReplyAnimations -bool YES
    This turns off annoying Mail-related animations. To change it back: defaults write com.apple.Mail DisableReplyAnimations -bool NO
  • In Terminal, type defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool NO
    This turns off a subtle but potentially annoying zooming window effect that affects how new windows appear on the screen.

Thank God for Mac OS X

Thank God for Mac OS X

by Richard White

2011-07-24

There’s a line that rock climbers sometimes trot out when they feel like exulting in the glory of their source of creativity.

“Thank God for the rock. Otherwise, we’d all be surfers.”

In the same way, it has occurred to me on more than one occasion to say to myself “Thank God for Mac OS X. Otherwise, I’d be using Linux.”

Now the reality of the situation is that Mac OS X and Linux share a common ancestor: UNIX. Actually, the Mac OS X running on all current Apple computers really is UNIX at its core. I’m thankful to the Mac platform in part for giving me a jumping off point from which to learn about UNIX, and later on, Linux. In 2004, O’Reilly published Learning Unix for Mac OS X Panther, by Dave Taylor & Brian Jepson, which turned out to be a great to begin discovering some of the inner workings of the OS X operating system.

One of the best things about OS X, then, is the fact that one can peek under the hood and play around with things a bit. This has always been the case with computers, of course, but OS X’s use of UNIX means that there’s a fairly large base of users with UNIX experience that can assist one in playing with the system, or even running other software on the system—UNIX-based software—that actually isn’t part of the official OS install.

This past week, Apple released the long-awaited 10.7 version of the OS X operating system, named “Lion.” Apple has continued to improve on OS X over the years, and this release included some major developments that many users are going to find very appealing, including autosave, built-in version control, and updates to many Apple apps.

Some users, however, found some of the improvements to be less-than-satisfactory. In an otherwise clean and minimalist User Interface, for example, Apple’s iCal application sports a faux-leather and torn paper skin that is almost universally abhorred by users, for a lot of different reasons: the leather is inconsistent with the overall OS theme, the real life stitching and leather texture don’t contribute to one’s understanding or use of the application, the fake torn bits of paper on the upper margin are silly…

Fortunately, the power of the community stepped forth, and someone came up with a package that allows one to equip that calendar with a skin more appropriate to the UI, and made it available online: http://macnix.blogspot.com/2011/07/change-mac-os-x-107-lion-ical-skin-to.html. Thanks to the carefully written instructions there, my iCal calendar is back to looking like it should.

Apple’s Mail.app program received some interface changes as well, and that got me thinking about investigating some other ways of working with my email. Of course many people have already gone over to using a Web-based email system—Google’s Gmail is the most popular—but I still like the idea of being able to read and compose emails when I’m not actually connected to the Internet; I like having an email “client” on my local machine.

If you’ve used Apple’s Mail, or Microsoft’s Outlook or Outlook Express, or any one of a dozen other programs that run on your local computer, you might be interested to hear about another alternative, one that may appeal especially to the geeks among you.

Next time, we’ll see how to install a modern version of the Terminal program pine on your UNIX-based OS X machine.