technology

Obama, Clinton, Microsoft Excel, and OpenOffice.org

I recently posted this to my local Linux Users Group mailing list:

Thought y’all would find this interesting – from http://machinist.salon.com/blog/2008/05/26/fundraising_excel/index.html:

“A milestone of sorts was reached earlier this year, when Obama, the Illinois senator whose revolutionary online fundraising has overwhelmed Clinton, filed an electronic fundraising report so large it could not be processed by popular basic spreadsheet applications like Microsoft Excel 2003 and Lotus 1-2-3.

Those programs can’t download data files with more than 65,536 rows or 256 columns.

Obama’s January fundraising report, detailing the $23 million he raised and $41 million he spent in the last three months of 2007, far exceeded 65,536 rows listing contributions, refunds, expenditures, debts, reimbursements and other details. It was the first report to confound basic database programs since 2001, when the Federal Election Commission began directly posting candidates’ fundraising reports online in an effort to make political money more accessible and transparent to voters.

By March, the reports filed by Clinton, a New York senator who attributes Obama’s victories in several states to her own lack of money, also could no longer be downloaded into spreadsheets using basic applications.

If you want to comb through Obama or Clinton’s cash, you either need to divide and import their reports section-by-section (a time-consuming and mind-numbing process) or purchase a more powerful database application, such as Microsoft Access or Microsoft Excel 2007, both of which retail for $229.”

Interestingly, OpenOffice.org 2.0 has the same limitation. OpenOffice.org 3 will expand the number of columns to 1024, according to http://www.oooninja.com/2008/03/openofficeorg-30-new-features.html. No idea about how many rows. Anyone know?

OK … looked it up … it appears that the row limit is STILL in place, so you can’t use OOo to open Obama’s or Hillary’s spreadsheets. Of course, you could use MySQL …

Oh yeah … and here’s one more note, from the same Salon article quoted above:

“In a revealing insight into the significant fundraising disparity between the two Democrats and presumptive Republican presidential nominee, Arizona Sen. John McCain, it is still possible to download his reports with plain-old Excel.”

Ouch!

Obama, Clinton, Microsoft Excel, and OpenOffice.org Read More »

Web design contrasted with graphic design

From Joshua Porter’s “Do Canonical Web Designs Exist?” (Bokardo: 14 November 2007):

… web designers necessarily approach design from a different perspective than graphic designers.

Graphic designers can judge by looking. Web designers cannot. Web designers must judge by doing (or observing others doing). The problem is that too many people judge web designs without actually using them. Instead, they look. When you use the shortcut of looking, you tend to judge what you’re looking at: the visuals. But when you use something, your relationship to that thing necessarily changes. I wonder how often Armin uses Google.

That’s why web design is different. Peer production, in particular, is extremely different. When I buy a book on Amazon, when you buy a book, we change the way the site works for someone else buying books, which is in turn changed by the reviews we write afterward. Is this not amazing design?

Web design contrasted with graphic design Read More »

What Dell learned from Wal-Mart

From Fake Steve Jobs’ “Why Dell will not bounce back” (11 May 2008):

On the manufacturing side, Dell figured out faster than the others in its space how to squeeze component suppliers and play them off each other. They brought in loads of former Wal-Mart people to refine this practice. One example: If you want to sell parts to Dell you must agree to ship your parts to Round Rock, Texas, and store them in Dell-owned warehouses (paying rent to Dell!) and to hold them until the very moment Dell needs them at which time you drive your tractor trailer to the Dell manufacturing facility and unload your parts through the shipping bay — and only then, as the parts go across the threshold, does Dell take ownership of them. Thus you, Mr. Parts Supplier, end up paying rent to Dell for the privilege of carrying its inventory on your books. Nice, right?

What Dell learned from Wal-Mart Read More »

How Google motivates employees

From Larry Page’s “How to Motivate Your Staff” (Business 2.0: December 2003: 90):

We wrote a program that asks every engineer what they did every week. It sends them e-mail on Monday, and concatenates the e-mails together in a document that everyone can read. And it then sends that out to everyone and shames those who did not answer by putting them on the top of the list. It has run reliably every week since we started, so for every week of our company’s history we have a record of what everyone did. It’s good for performance reviews, and if you’re joining a project team, in five minutes you can read what your team members did the last few weeks or months.

How Google motivates employees Read More »

What actions change MAC times on a UNIX box?

From Holt Sorenson’s “Incident Response Tools For Unix, Part Two: File-System Tools” (SecurityFocus: 17 October 2003):

Various commands change the MAC [modify, access, and change] times in different ways. The table below shows the effects that some common commands have on MAC times. These tables were created on Debian 3.0 using an ext2 file system contained in a flat file mounted on a loopback device. … Experimenting with your own system to verify the information in the tables below is encouraged. These tables can serve as a general guide, however.

How common commands change MACtimes for a directory (foo):
Action atime ctime mtime
creation (mkdir foo) X X X
directory move (mv foo bar) X X
file creation (touch foo/foo) X X
file creation (dd if=/dev/zero of=foo/foo count=1) X X
list directory (ls foo) X
change directory (cd foo)
file test (-f foo)
file move/rename (mv foo foo_mvd) X X
permissions change (chmod/chown <some_perm> foo) X
file copy (mv foo_mvd foo) X X
file edit (vim foo) X X
file edit (emacs foo) X X X
file edit (nvi/nano foo)
How common commands change MACtimes for a file (f1):
Action atime ctime mtime
creation (touch foo) X X X
creation (dd if=/dev/zero of=foo count=1) X X X
rename (mv foo bar)
permissions change (chmod <some_perm> foo) X
copy (cp foo bar) X
copy overwrite (cp bar foo) X X
append (cat >> foo) X X
overwrite (cat > foo) X X
truncate (cp /dev/null foo) X X
list file (ls foo)
edit (vim/emacs/xemacs/joe/jed foo) X X X
edit (ed/nvi/vi (sun)/vi (obsd)/nano/pico foo) X1 X1 X1
1 – all times changed, but atime is slightly older than mtime and ctime

The ls command can be used to show the modify, access or change times of files. The following table shows various ls commands that sort in reverse order by mtime, atime, or ctime. This causes ls to list the most recent times last.

displaying MACtimes using ls:
Linux (ls from GNU fileutils) OpenBSD Solaris
mtime ls -latr –full-time ls -latTr ls -latr
atime ls -laur –full-time ls -lauTr ls -laur
ctime ls -lacr –full-time ls -lacTr ls -lacr

What actions change MAC times on a UNIX box? Read More »

Do’s and don’ts for open source software development

From Jono DiCarlo’s “Ten Ways to Make More Humane Open Source Software” (5 October 2007):

Do

  1. Get a Benevolent Dictator
    Someone who has a vision for the UI. Someone who can and will say “no” to features that don’t fit the vision.
  2. Make the Program Usable In Its Default State
    Don’t rely on configurable behavior. It adds complexity, solves little, and most users will never touch it anyway. Usable default behavior is required.
  3. Design Around Tasks
    Figure out the tasks that people want to do with your software. Make those tasks as easy as possible. Kill any feature that gets in the way.
  4. Write a Plug-In Architecture
    It’s the only good solution I’ve seen to the dilemma of providing a complete feature set without bloating the application.
  5. User Testing, User Testing, User Testing!!
    Without user testing, you are designing by guesswork and superstition.

Do Not

  1. Develop Without A Vision
    “When someone suggests another feature, we’ll find a place to cram it in!”
  2. Join the Clone Wars
    “Closed-source program X is popular. Let’s just duplicate its interface!”
  3. Leave the UI Design Up To The End User
    “I’m not sure how that should work. I’ll make it a check box on the preferences screen.”
  4. Make the Interface a Thin Veneer over the Underlying Implementation
    “But it’s got a GUI now! That makes it user-friendly, right?”
  5. Treat UI Design as Babysitting Idiots
    “They should all quit whining and read the manual already.”

Do’s and don’ts for open source software development Read More »

The Internet makes (sloppy) writers of nearly everyone

From Adam Parfrey’s response to R.U. Sirius’ “Is The Net Good For Writers?” (10 Zen Monkeys: 5 October 2007):

I like the internet and computers for their ability to make writers of nearly everyone. I don’t like the internet and computers for their ability to make sloppy and thoughtless writers of nearly everyone.

The Internet makes (sloppy) writers of nearly everyone Read More »

The shift from interior to exterior lives

From Mark Dery’s response to R.U. Sirius’ “Is The Net Good For Writers?” (10 Zen Monkeys: 5 October 2007):

But we live in times of chaos and complexity, and the future of writing and reading is deeply uncertain. Reading and writing are solitary activities. The web enables us to write in public and, maybe one day, strike off the shackles of cubicle hell and get rich living by our wits. Sometimes I think we’re just about to turn that cultural corner. Then I step onto the New York subway, where most of the car is talking nonstop on cellphones. Time was when people would have occupied their idle hours between the covers of a book. No more. We’ve turned the psyche inside out, exteriorizing our egos, extruding our selves into public space and filling our inner vacuums with white noise.

The shift from interior to exterior lives Read More »

World distance reading WiFi and RFID

From Bruce Schneier’s “Crypto-Gram” (15 August 2005):

At DefCon earlier this month, a group was able to set up an unamplified 802.11 network at a distance of 124.9 miles.

http://www.enterpriseitplanet.com/networking/news/…

http://pasadena.net/shootout05/

Even more important, the world record for communicating with a passive RFID device was set at 69 feet. Remember that the next time someone tells you that it’s impossible to read RFID identity cards at a distance.

http://www.makezine.com/blog/archive/2005/07/…

Whenever you hear a manufacturer talk about a distance limitation for any wireless technology — wireless LANs, RFID, Bluetooth, anything — assume he’s wrong. If he’s not wrong today, he will be in a couple of years. Assume that someone who spends some money and effort building more sensitive technology can do much better, and that it will take less money and effort over the years. Technology always gets better; it never gets worse. If something is difficult and expensive now, it will get easier and cheaper in the future.

World distance reading WiFi and RFID Read More »

How to open a physicist’s briefcase

From John D. Barrow and John K. Webb’s "Inconstant Constants: Do the inner workings of nature change with time?" (Scientific American: 23 May 2005):

One ratio of particular interest combines the velocity of light, c, the electric charge on a single electron, e, Planck’s constant, h, and the so-called vacuum permittivity, 0. This famous quantity … called the fine-structure constant, was first introduced in 1916 by Arnold Sommerfeld, a pioneer in applying the theory of quantum mechanics to electromagnetism. It quantifies the relativistic (c) and quantum (h) qualities of electromagnetic (e) interactions involving charged particles in empty space (0). Measured to be equal to 1/137.03599976, or approximately 1/137, has endowed the number 137 with a legendary status among physicists (it usually opens the combination locks on their briefcases).

How to open a physicist’s briefcase Read More »

The most popular commands in Word

From Microsoft’s “No Distaste for Paste (Why the UI, Part 7)“:

The data set I’m pulling from is all Word 2003 users who have opted in to the program. We could slice the data based on, perhaps, CPU speed to try to get more power users. Or 800×600 screen resolution, to try to get more home users. But in this case, we’re looking at the entire data set of commands executed through any means (toolbar, menu, context menu, or keyboard shortcut.)

Top 5 Most-Used Commands in Microsoft Word 2003

1. Paste
2. Save
3. Copy
4. Undo
5. Bold

Together, these five commands account for around 32% of the total command use in Word 2003. Paste itself accounts for more than 11% of all commands used, and has more than twice as much usage as the #2 entry on the list, Save.

Paste is also far-and-away the number one command in Excel and PowerPoint, accounting for 15% and 12% of total command use, respectively.

Beyond the top 10 commands or so, however, the curve flattens out considerably. The percentage difference in usage between the #100 command (“Accept Change”) and the #400 command (“Reset Picture”) is about the same in difference between #1 and #11 (“Change Font Size”) This is what makes creating the new UI challenging–people really do use a lot of the breadth of Office and beyond the top 10 commands there are a lot of different ways of using the product.

What we didn’t know until we analyzed the data was that even though so many people do use CTRL+V and do use “Paste” on the context menu, the toolbar button for Paste still gets clicked more than any other button. The command is so incredibly popular that even though there are more efficient ways of using it, many people do prefer to click the toolbar button.

The most popular commands in Word Read More »

Test of MarsEdit

This is a test of MarsEdit, a blog editor for Mac OS X. Normally I have a source, and then a quotation, like this:

A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here. A quote goes here.

And then maybe some more text.

And then I’m done.

Test of MarsEdit Read More »

My new book – Podcasting with Audacity – is out!

Audacity is universally recognized as the number one software program for creating podcasts. Hundreds of thousands of amateurs and professionals alike have created podcasts using Audacity.

Podcasting with Audacity: Creating a Podcast With Free Audio Software is designed to get you podcasting as quickly as possible. The first few chapters show you how to install Audacity, plug in your microphone, record your first podcast, and get it online as quickly as possible. The following chapters cover podcasting-specific topics, such as adding background music or conducting interviews. Finally, the remaining chapters focus on how Audacity works, with lots of tips and tricks to make complicated editing even easier.

Read an excerpt: "Edit Your Podcast" is available on the Web or download a 950 KB PDF. An unedited version of the book is available under as a wiki under a Creative Commons license at the Audacity website.

My new book – Podcasting with Audacity – is out! Read More »

How to delete stuck files on Amazon’s S3

I use Amazon’s S3 (Simple Storage Service) to back up files, and I also use OmniGraffle, a diagramming program, on my Mac. This is a letter I sent to OmniGraffle recently that explains a problem with the interaction of OmniGraffle and S3.

Start letter:

OmniGraffle (OG) is a great app, but it has a serious, showstopping incompatability with Amazon’s S3 (Simple Storage Service).

S3 is an online backup service run by Amazon. Lots & lots of people use it, with more moving to it all the time. You can find out more about S3 here:

http://en.wikipedia.org/wiki/Amazon_S3

I created some documents in OmniGraffle and uploaded them to S3. When I tried to perform another backup, the command-line S3 app I was using crashed. I tried another. Crashed. I tried Interarchy, a GUI app, but while it appeared to work, in reality it simply silently failed. After much trial and error, I finally determined that it was a particular file generated by OG that was causing the problems. But I had no idea how to fix things.

After searching on the Amazon S3 forums, it turns out others are experiencing the exact same problem. I found two entries discussing how an invisible character in the name of the Icon file located in a .graffle folder was causing the crash. Here are those two entries:

http://developer.amazonwebservices.com/connect/thread.jspa?messageID=63273

http://developer.amazonwebservices.com/connect/thread.jspa?messageID=45488

Eventually, after over an hour of trying various combinations with the help of a friend, I was able to delete the offending file using this command.

./s3cmd.rb -v delete “granneclientele:clientele/images/omnigraffle/audacity-toolbar-tools.graffle/Icon”$’\r’

I show that command to you not because I expect you’ll understand it, but because it demonstrates that this is a bear of a problem that many of your customers will be unable to solve on their own. As more of your customers use S3, they’re going to run into this issue.

I understand this all may sound confusing, so please do not hesitate to call or email me for further details.

/End letter

An OmniGraffle support person wrote me back, saying that this issue had been fixed in version 4.2 of the software.

How to delete stuck files on Amazon’s S3 Read More »

A quick tutorial on writing a program that accepts plugins

On the CWE-LUG mailing list, someone asked a question about creating a program that can be extended with plugins. I thought the answer was so useful that I wanted to save it and make it available to others.

On 2/17/07, Mark wrote:

I’m a young programmer (just finishing high school) who has done a fair amount of programming with PHP, MySQL, and other web technologies. … How does one go about designing a program so it can be extended later with plugins, apis, and modules?

Ed Howland, veteran programmer, replied:

Mark, if i understand you correctly, you are seeking how to design a general purpose program that can be extended by others. It would help us to know what your target environment is. Especially if it is a dynamic language like Perl, Ruby or Python.Or a compiled language like Java or C/C++. The difference lies in linking others source code with yours, interpreted languages are easier in this respect.

That said, the general techniques are well-established. For purposes of illustration, I’ll call the code you are wanting to write the host (application) and the external modules, the guest (module.) The basic idea is to use various callbacks into the guest module from the host application. But first the guest application must register itself with the host (see it is like a hotel checkin…) This registration process can take many forms and is usually dictated by the programming environment. Anyway, the host maintains a list of registered guests. Each time a new guest registers, he is appended to said list.

Next, the host will then use the handle that represents the main object of the guest, and call an initialize routine in the guest. That routine sets stuff and gets a handle to the host so it can call things in the framework API to open windows, etc.

So the basic steps are:

  1. Devise a registration process
  2. Maintain a list of registered guest modules
  3. When starting, loop over your registered guests and call their initialize routines
    1. When a guest’s initialize routine is called, it calls pre-defined host API calls to open windows, or other things.
    2. These might cause the framework (in the host) to callback to the guest to display the window, and paint the contents of the windows.

You want to make your plugin callback interface as narrow as possible. And you want your host API to be simple to create widgets, windows, whatever in a few easy steps. If using a O-O language like Java or C#, use interfaces for both the IPlugin (guest) and IPluginHost (host) and guest module writes will inherit from or implement those interfaces. Ideally, the minimal IPlugin interface could be as small as init() and destroy() (if destroy is needed.)

Finally, if starting fresh, you might think about designing your entire application to nothing but the framework and your own pieces will simply be plugins.

The hard part is the registration process. Do you allow files to be uploaded to a web server? Does it write and re-read a config file listing plugins? I haven’t looked at DotNuke or PHPNuke or Typo, WordPress or any of the other ones. But the answer is in there.

Ruby on Rails has a built-in plugin architecture, but not one that you can upload files to, at least not w/o restarting the RoR app iteself, IIRC. It looks in a subdirectory for plugin subdirs for a file called init.rb. It just executes whatever is in that tile.

http://en.wikipedia.org/wiki/Plugin
http://codex.wordpress.org/Writing_a_Plugin
http://www.codeguru.com/Cpp/misc/misc/plug-insadd-ins/article.php/c3879/

HTH, somewhat.

Ed

A quick tutorial on writing a program that accepts plugins Read More »

Find out a hard drive’s UUID

If you want to add a device like an external hard drive to your /etc/fstab file, it helps if you know the hard drive’s UUID. If you use K/Ubuntu, the following command will display the UUID, along with other useful information.

$ sudo vol_id /dev/sdo1
Password:
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=4857d4bb-5f6b-4f21-af62-830ebae92cff
ID_FS_LABEL=movies
ID_FS_LABEL_SAFE=movies

Find out a hard drive’s UUID Read More »

2 New TV Interviews, Both on Cell Phones

I was interviewed twice in the last couple of months by two local TV news channels, both times on the same subject: the cool stuff that even ordinary cell phones can do nowadays. Google features prominently, as does Flickr, Wireless Amber Alerts, and Cellfire. Best of all, the later one has Libby, my dog, in it, which is a nice added bonus.

KMOV’s Cell Phone Secrets (23 May 2007)

Video available at http://www.granneman.com/presentations/interviews/kmov23may2007.htm

KSDK’s How To Get The Most Out Of Your Cell Phone (6 July 2007)

Video available at http://www.granneman.com/presentations/interviews/ksdk6july2007.htm

2 New TV Interviews, Both on Cell Phones Read More »

Out now: Microsoft Vista for IT Security Professionals

Microsoft Vista for IT Security Professionals is designed for the professional system administrators who need to securely deploy Microsoft Vista in their networks. Readers will not only learn about the new security features of Vista, but they will learn how to safely integrate Vista with their existing wired and wireless network infrastructure and safely deploy with their existing applications and databases. The book begins with a discussion of Microsoft’s Trustworthy Computing Initiative and Vista’s development cycle, which was like none other in Microsoft’s history. Expert authors will separate the hype from the reality of Vista’s preparedness to withstand the 24 x 7 attacks it will face from malicious attackers as the world’s #1 desktop operating system. The book has a companion CD which contains hundreds of working scripts and utilities to help administrators secure their environments.

This book is written for intermediate to advanced System administrators managing Microsoft networks who are deploying Microsoft’s new flagship desktop operating system: Vista. This book is appropriate for system administrators managing small networks of fewer than 10 machines up to enterprise-class networks with tens of thousands of systems. This book is also appropriate for readers preparing for the Microsoft exam MCDST 70-620.

I contributed two appendices to this book:

  • Appendix A: Microsoft Vista: The International Community
  • Appendix B: Changes to the Vista EULA

Appendix A, “Microsoft Vista: The International Community”, was about Microsoft’s legal troubles in Europe and Asia, and the changes the company had to make to Vista to accommodate those governments. Appendix B, “Changes to the Vista EULA”, explained that the EULA in Vista is even worse than that found in XP, which was worse than any previous EULA. In other words, Vista has a problematic EULA that users need to know about before they buy the OS.

Read excerpts: Front Matter (350 KB PDF) and Chapter 1: Microsoft Vista: An Overview (760 KB PDF). You can flip through the entire book, although you’re limited to the total number of pages you can view (but it’s a pretty high number, like 50 or so).

Out now: Microsoft Vista for IT Security Professionals Read More »

3 problems with electronic voting

From Avi Rubin’s “Voting: Low-Tech Is the Answer” (Business Week: 30 October 2006):

Unfortunately, there are three problems with electronic voting that have nothing to do with whether or not the system works as intended. They are transparency, recovery, and audit. …

Electronic voting is not transparent – it is not even translucent. There is no way to observe the counting of the votes publicly, and you can’t even tell if the votes are being recorded correctly. …

Now, what do we do if something goes very wrong during the election? What happens if the equipment fails or there is a power outage?

Let’s compare electronic voting machines to paper ballots. If an e-voting machine crashes, it is possible that the memory cards containing the votes could be corrupted. Something as unexpected as someone spilling coffee on the machine could cause it to fail.

There are dozens of ways one could imagine that an electronic voting machine could be rendered a paperweight. Imagine, for example, a widespread power outage on Election Day. How do you continue the election? What can you do to recover votes already cast? …

I don’t feel very good about the only copies of all of the votes in a precinct existing in electronic form on flash memory cards. … If we have paper ballots and the power goes out, we can get some flashlights and continue voting.

Electronic voting is vulnerable to all sorts of problems, many of which cannot be anticipated. For example, in Maryland’s September primary, voting systems were delivered to the precincts in Montgomery County without the smart cards needed to activate the votes. As a result, the polls opened hours late, and thousands of voters were affected.

There was no quick and easy recovery mechanism. It is true that the problem was due to human error, but that does not change the fact that there was no way to recover. Paper ballot systems are much less fragile and can withstand many of the unexpected problems that might arise on Election Day. …

Finally, and I believe most seriously, there is no way to independently audit a fully electronic voting system. While it is true that many of the machines keep multiple copies of the votes, these copies are not independent. If the machines are rigged, or if they suffer from unknown software bugs …, the election results might not reflect the votes that were cast, despite all of the copies of the votes being identical.

On the other hand, electronic counting of paper ballots can be audited by manually counting the paper and comparing the results to the electronic tally. It is imperative, in fact, that every software-based system be audited in a manner that is independent from the data that are the subject of the audit.

3 problems with electronic voting Read More »