Tag Archives: OpenSource

Arduino Inventor’s Guide

First, a word about Arduino and why you should care. An Arduino is what is called a “prototyping micro-controller” aka “really fun electronic gizmo toy.”

Micro-controllers are everywhere. When you “turn on” a machine in your house, chances are there was already a micro-controller sitting there, running on a minute bit of juice from a built in battery, waiting for you to push a button. Then, you turned a dial or selected an option on your dishwasher, or changed the setting on your thermostat, or picked some alternative mode on your coffee pot, or shifted into a different gear using a “gear shift” in your fly-by-wire Prius, or you opened up the birthday card and cats meowed out “Happy Birthday.”

All of those events involved a micro-controller, which consists of thee parts. There is a brain inside it, there is a set of sensors or actuators (a thing that detects that the greeting card has been opened, and an actuator that is the thing that makes the meowing sound by playing an WAV or MP3 file), and some software. The software gets in there by hooking an in production version of the micro-controller, likely once in its life, to a regular computer via a COM port (the same kind of interface used by your mouse, or a USB connection, etc.), and stuffing the software in there.

The Arduino Uno is a micro-controller that is very generalized, very large (a bit larger than a credit card), has a well behaved power supply, lots of connectors for either sensor or actuators, and a pretty fancy brain for a micro-controller, with lots of room for code written in a very powerful and fairly easy to use language similar to objective C. You can hook the Arduino up to most computers, using freely available software to communicate with it and compile your code. For the most part, you don’t have to actually write code, it is provided by the developers of projects you are poaching, but if you want, you can go to town with it.

There are hundreds and hundreds of sensors and actuators, from thermostats to motors, gyroscopes to myriad things that light up, available for the Arduino, and in fact, anything that runs on low voltage can be hooked one way or another to it (if you know what you are doing). High voltage uses (like shifting a car or opening or closing a garage door) are done, of course, by using relays that are switches operated by a micro-controller but that pass any voltage level you want, if you get the right one.

The Arduino and its associated equipment can thus be used to replicate, design, and experiment with pretty much any thing a micro-controller can do. After “prototyping” it is trivial, for an expert, to rebuild the circuit using a less capable but perfectly adequate bunch of parts, and solder instead of just sticking things together (called “breadboarding”) and so on. But no one really does that with Arduino. With Arduino you may leave the final product at it is (like the robot we built a few weeks ago) or, as in the case of the projects in an introductory book on how to use and have fun with an Arduino, you may just take the thing you built apart and build another thing.

So, this new book, The Arduino Inventor’s Guide: Learn Electronics by Making 10 Awesome Projects, is sitting on my workbench ready to go to work.

Of all the intro Arduino books I’ve seen, this one is unique in a way I’ll explain below.

The book gives detailed, understandable, and learning-oriented instructions for a home stoplight (helpful with toddlers in the house), a reaction time garme, a balance beam game, a diminutive greenhouse, an small piano, and a handful of other projects.

The coolest project might be a living breathing Logo turtle. Logo is a computer programming environment developed years ago to serve several functions including helping kids get interesting in coding. Logo is actually one of the oldest computer languages still in use (dates to the late 60s) and it is a general programming language, but it is mainly adapted to running the Logo turtle. The turtle is a curser that is moved around on the screen, and instructed here and there to drop a specific pen (it can have several different pens) so as it moves along it draws.

This project, from The Arduino Inventor’s Guide: Learn Electronics by Making 10 Awesome Projects, is a physical turtle that draws on your rug! Or, hopefully, a big piece of drawing paper you put down for it.

I mentioned above that this book is unique. Here’s how. I’ve looked at a Lot of Audrino project books, and there are no introductory books that provide detailed information on how to make interesting project enclosures and cases. The projects in this book rely heavily on the stuff you built the electronic into. The project enclosures are generally made of simple corrugated cardboard that you can get from an old box, or, if you want, from a craft store (for more interesting colors, better quality materials, less cat hair, etc.)

You can build all the projects in this book with parts you have acquired in the usual manner, but the book suggests you get the Sparkfun Inventor’s Kit for Arduino, which is about 75 bucks. Note: This book is produced by No Starch Press and Spark Fun, so of course they suggest the Sparkfun Inventor’s Kit for Arduino as a way of getting all the parts. But, by the time you add up an Uno or equivalent micro controller for 19 bucks, LCD display for nine bucks, fancy breadboard holder for 9 bucks , a shift register for 8 bucks, and miscellaneous other parts, you might be over $75 anyway. Or maybe not. You’ll have to check around.

There is plenty of preliminary information to get a total novice started, and each project is rich in detail and very fully and expertly, clearly and helpfully, described.

This is an absolutely excellent choice, perhaps my favorite at the moment (and totally up to date) Arduino starter book.

Python Programming To Automate Common Tasks

Automate the Boring Stuff with Python: Practical Programming for Total Beginners by super Python expert Al Sweigart is a pretty thick intermedia to somewhat advanced level programming book.

It covers how Python works, so someone familiar with programming languages can get up to speed. Then, the book tackles a number of key important tasks one may use a computer for. This includes working with Regular Expressions, file reading and writing, web scraping, interacting with Excel spreadsheets and PDF files, scheduling things, working with email, manipulating images, and messing around with the keyboard and mouse.

I wold like to see a second volume with yet more programming ideas and examples. It could be a series.

From the publishers:

If you’ve ever spent hours renaming files or updating hundreds of spreadsheet cells, you know how tedious tasks like these can be. But what if you could have your computer do them for you?

In Automate the Boring Stuff with Python, you’ll learn how to use Python to write programs that do in minutes what would take you hours to do by hand—no prior programming experience required. Once you’ve mastered the basics of programming, you’ll create Python programs that effortlessly perform useful and impressive feats of automation to:

  • Search for text in a file or across multiple files
  • Create, update, move, and rename files and folders
  • Search the Web and download online content
  • Update and format data in Excel spreadsheets of any size
  • Split, merge, watermark, and encrypt PDFs
  • Send reminder emails and text notifications
  • Fill out online forms
  • Step-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.

    Check it out.

    How to learn Python programming

    Your objective is to learn Python programming. Everybody has to learn Python.

    You are looking for a book that will make that easier for you. One possibility, one that I’ll recommend for most people in this situation, is Python Crash Course: A Hands-On, Project-Based Introduction to Programming.

    To cut to the chase, there are two reasons I recommend this book. First, the specific programming projects used in the book are a good match for most people, because they are bare bones (but highly developed) exemplars that are fairly adaptable and together cover a wide range of applications and use requirements. Second, the book is well written and organized, the first part very serviceable as a reference book, covers both Python 2 and 3 but focuses on and encourages you to learn 3 (which you should) etc.

    Let me go back to that first reason and expand a bit.

    Why do you want to learn Python, why do you want to program stuff?

    You need to automate or otherwise develop an interactive project. You need to manipulate data live, interact with the computer, etc. You have some data in a text file (or some other form) and you need to access it and turn it into derived numbers, or pictures, graphics, etc. You want to generate web output. Perhaps there is some web scraping in there. Maybe you are doing all this together.

    The book begins with eleven chapters on how Python works, and is fairly detailed. If you work through this in detail, and actgually do the recommended exercises, you’ll be a python programmer before you hit Chapter 11.

    The second part includes three fairly well developed projects. One is an interactive game that is pretty sophisticated (for a scripting language an not using a GUI). The second uses some of the more powerful mathematical and graphical libraries in Python to manipulate, graph, plot, etc. data. This section also covers working with API’s including Git. This is probably the chapter you’ll come back to the most.

    The third project leads you through developing a web application using Django.

    A classic use of this book is that you are a scientists who uses R (r-cran) and you suddenly realize that more development of tools is happening in Python than in R. Switching from R to Python is hard to do emotionally, but easy from a programming perspective, because Python is a better programming language. You don’t really want to leave R, but you know that it is time to branch out, and at least, see what you can do with Python. This crash course does not give you the full range of knowledge to switch you from sophisticated use of R to equivalent use of Python, but if you can’t currently program in Python, do this, then do that using more sophisticated resources.

    It has been interesting to see, over the last few years, No Starch Press, which produces this book, growing and producing future classics that should be along side the more traditional O’Reilly Press programming books. Python Crash Course: A Hands-On, Project-Based Introduction to Programming is one of those books, equal to or replacing something like Learning Python, 5th Edition, but at close to half the price.

    Python is easy to use and learn, yet it is also very powerful. Much of the power comes from the powerful libraries that exist, which can be imported and used for a wide range of things. Python itself is a very simple implementation of an interpreted language, with a simple command line interface. Because of these two things, the actual installation and running of Python is very easy and sometimes very difficult at the same time. Here’s the thing. As a single user who may do some complex stuff, which would describe you if you are like me, you might want a pretty fancy development environment and lots of libraries and stuff. But at the same time, you really don’t want complex virtual environments and collaboration tools. The thing is, as the various free or paid add ons or resources you can get to enhance Python’s power get more complicated, they assume that you are moving from a hobbyist or student to a corporate environment with multiple collaborators and the need to keep projects separate more than you really want. At some point, someone will tell you, “Oh, if you want to do that, just install ______” where the blank is the name of a snake or something. You go in stall it, and find out you have to take a class to know what the first button to press is.

    So, that is a complaint I have about the Python world. This book does come with a web site that has on it current and important information, updated, on how to handle some of these problems with installing and configuring your programming environment, using a thing called “pip” which helps you install libraries and stuff, and how to get matplotlib and some other stuff running without having to take that class.

    You will also find source code used in the book and some other cool resources on that page.

    Following is the top level TOC and here is a PDF file of the full TOC.

    Table of Contents
    Introduction

    PART I: Basics

    Chapter 1: Getting Started
    Chapter 2: Variables and Simple Data Types
    Chapter 3: Introducing Lists
    Chapter 4: Working with Lists
    Chapter 5: if Statements
    Chapter 6: Dictionaries
    Chapter 7: User Input and while Loops
    Chapter 8: Functions
    Chapter 9: Classes
    Chapter 10: Files and Exceptions
    Chapter 11: Testing Your Code

    PART II: Projects

    Project 1: Alien Invasion
    Chapter 12: A Ship that Fires Bullets
    Chapter 13: Aliens!
    Chapter 14: Scoring

    Project 2: Data Visualization
    Chapter 15: Generating Data
    Chapter 16: Downloading Data
    Chapter 17: Working with APIs

    Project 3: Web Applications
    Chapter 18: Getting Started with Django
    Chapter 19: User Accounts
    Chapter 20: Styling and Deploying an App

    Afterword

    Appendix A: Installing Python
    Appendix B: Text Editors
    Appendix C: Getting Help
    Appendix D: Using Git for Version Control

    View the detailed Table of Contents (PDF)
    View the Index (PDF)

    Write Computer Games In Python

    Ah yes, I remember it well.

    “Hammurabi, Hammurabi, I beg to report to you,
    In Year 1, 0 people have starved.
    101 people came to the city
    The population is now 124
    We harvested 4.5 bushels per acre
    We planted 998 acres of wheat
    But rats at 300 bushels of wheat
    You now have a surplus of 1443 bushels of wheat

    How many acres do yo uwish to feed to the people?
    How many acres do you wish to plant with seed?

    Oh, and you have died of Cholera!”

    Or, this one:

    screen-shot-2017-01-14-at-3-04-24-pm
    Remember?

    I went to a special high school, in an era when individuals and high schools alike did not have computers, but we did. Since we were a University normal school, we had account and terminal room access to the UNIVAC 1108 computer at the University (see photo above). There were no computer games in those days, so you had to write your own, and store them on tape. Paper tape, not magnetic tape (the magnetic tape was reserved for use by actual University students and faculty, for the most part).

    So we wrote and fiddled with programs in BASIC, the intro language of the day. BASIC was a great language, but is widely regarded today as a horrible language. Truth is, it was easy to program in, had reliable interpreters, and eventually, advanced versions became fully OOPish and lost silly things like line numbers.

    Today’s equivilant of BASIC, for the simple reason that it is one of the programming languages people often start on, but similar for other reasons as well, is Python.

    Python was invented by Benevolent Dictator For Life Guido van Rossum. Guido was a big fan of Monty Python back in 1989 when he invented an interpreter to run a script language that didn’t exist yet but was knocking around in his head. A script, in computer world, is a series of commands in a file that can be run like it was a computer program, but where the code is not turned into an executable file to run independently, but rather, run by an “interpreter” which carries out the commands ad hoc each time the script is called. That is how BASIC originally ran, and that is how Python works.

    Et magis est, ut in fabula.

    Python has evolved over the years to become one of a small number of languages that can do pretty much anything. The language itself is fairly simply yet powerful and flexible. In writing Python programs (the language is too fancy to use the term “script” comfortably, though that is technically what the programs are) one has access to a large number of libraries of pre-existing code. These libraries are extensive, intensive, flexible, and powerful. The programs run very efficiently.

    What software that you know about is written in Python? Well, DrobBox is written in Python, which is not surprising, since Benevelont Dictator van Rossum works for Dropbox (or did anyway, not sure if he is still there). Google uses Python for pretty much everything, so when you “google” something, you are using the Linux operating system running a Python script accessing data created and maintained by Python scrips. Also, Python was underwent much of its development with support from Google.

    Many of the GNU Linux utilities and software in use today that is not from the original cadre of mainly C-xx (a different family of languages) applications are written in Python. So, again, the basic computer services we rely on, such as Google, ultimately use Python in many different ways.

    And, Python has become one of very few widely used scientific software tools. If you are going to grow up and become a scientist, you will want Python skills.

    And this is where we come to the new 4th edition, Invent Your Own Computer Games with Python.

    This is an excellent way to learn Python, if you are a kid or not. Little kids can learn with their adult guide, and older kids will eat this book up in an afternoon or two.

    The Table of Contents will give you an idea of what it covers:

    First, on how to set up and use Python:

    Chapter 1: The Interactive Shell
    Chapter 2: Writing Programs

    Then some very simple games:

    Chapter 3: Guess the Number
    Chapter 4: Jokes
    Chapter 5: Dragon Realm

    Then how to use a key feature to help you more easily write complex programs:

    Chapter 6: Using the Debugger

    Then a pretty complex program (but still very doable):

    Chapter 7: Designing Hangman with Flowcharts
    Chapter 8: Writing the Hangman Code
    Chapter 9: Extending Hangman

    Then many more programs of various levels of difficulty:

    Chapter 10: Tic-Tac-Toe
    Chapter 11: Bagels
    Chapter 12: Cartesian Coordinates
    Chapter 13: Sonar Treasure Hunt
    Chapter 14: Caesar Cipher
    Chapter 15: Reversi
    Chapter 16: AI Simulation

    Then some advanced programming and tools, and more games:

    Chapter 17: Using Pygame and Graphics
    Chapter 18: Animating Graphics
    Chapter 19: Collision Detection and Input
    Chapter 20: Sounds and Images
    Chapter 21: Dodger

    Many of the programs are designed to run on the command line, but still use cool (in a retro sort of way) graphics, but the book gets you started on using modern day window-deployed graphics.

    Al Sweigart is a software developer who teaches programming to kids and adults. He is the author of Automate the Boring Stuff with Python: Practical Programming for Total Beginners, a book I’ve not yet laid eyes on, and Scratch Programming Playground: Learn to Program by Making Cool Games, which I review here. By the way, if you are looking for an intro programming guide for kids, consider scratch as well. Scratch is not at present a powerful programming tool kids will use when they grow up, but it teaches programming skills and it is fun. Having said that, I predict that a language like Scratch, which has an ancestry as old as any existing programming langauge yet is extremely modern and forward looking, may end up being a more widely used tools, allowing regular people to program the Internet of Things. Also, a kid heading for Robotics will probably be able, in the very near future, to use Scratch in that area as well.

    Go to the No Starch Press web site to access the code and other resources, and to find a list of errors and updates. In a regular book about something, say, Abraham Lincoln, a typo is not a big deal. In a computer programming book, a typo can be a big deal.

    For example, reading “In 1860, Lincoln secured the Republican Party presidential nomination as a moderate from a wing state,” instead of a “Swing state” is not going to cause a disaster. But in 1962, the Mariner spacecraft had to be destroyed moments after takeoff because a “-” was written instead of a ““.

    Anyway, great book. Enjoy it!

    OpenOffice May Close The Door

    The history of what we call “OpenOffice” is complex and confusing. It started as a project of Sun corporation, to develop an office suit that was not Microsoft Office, to use internally. Later, a version became more generally available known as Star Office, but also, a version called “OpenOffice” soon became available as well. The current histories say that Star Office was commercial, but my memory is that it never cost money to regular users. I think the idea was that large corporations would pay, individuals not. This was all back around 2000, plus or minus a year or two.

    In any event, the Open Office project built two things of great importance. First, it made a set of software applications roughly comparable to the key elements in Microsoft’s Office Suite, including a word processor, a spreadsheet, a presentation app, and, depending, something that draws and something that relates to databases.

    The second thing it did was to create and develop an important open source document format.

    But, believe it or not, in the world of software development and programming, even in the happy fuzzy world of OpenSource, there can be fights. And, not just the fun and tongue in cheek fights over which religion you are (vi vs. Linux). These fights often involve differences in points of view between megacorporations that get involved in OpenSource projects, and the unwashed masses of programmers contributing to such things. The majority of code is written and maintained by corporations, much of that in the hands of a very small number, but the contributions from individuals not linked to corporations is extremely important.

    In the case of OpenOffice, the tensions were between the broader Office-interested development community and big corporations shifted in 2010 when Sun corporation which had always been involved in OO development, was purchased by Oracle Corporation. Oracle has not been friendly to OpenSource in the past, so the wider community freaked. There is a side plot here involving Java, which we will ignore. Oracle didn’t end up doing anything clearly bad against the OpenOffice project. But, they also ended up not doing anything good, either, which is essentially a death sentence for a project like this. Later in the same year, an organization called The Document Foundation was created and took on the job of forking OpenOffice.

    Forking is where a given lineage of software is split to create an alternative. Sometimes this is to bring some software in a different direction, perhaps for a more specialized use. Sometimes it is a way of resolving conflict, much as hunter gatherers undergo fission and fusion in their settlement patterns, by separating antagonists or putting a distinct wall between antagonistic goals. In this case, while the latter is probably part of it, the main reason for the fork and its main effect was to get the project under the control of an active development community so work could be continued before the project stagnated.

    That fork became known as LibreOffice. For some time now, it has been recommended that if you are going to install an OpenSource office suite on your Windows, Linux, or Apple Computer, it should be LibreOffice.

    One could argue that the OpenOffice suit or its analog (earlier, Star office, later the LibreOffice fork) is the most important single project in OpenSource, because an office suite is a key part of almost all desktop computer configurations. Of course, most servers don’t need or require an office suite, and there, web servers and database servers, and a few other things, are more important. But to the average end user (in business or private life) being able to open up a “Word Document” (a term misapplied to the category of “wordprocessor document”), or to run a spreadsheet, or to make a presentation, etc. is essential, and that is what an office suit provides. OpenOffice was comparable to Microsoft Office, and now, LibreOffice is comparable to Microsoft Office. By some accounts, better, though many Microsoft Office users have, well, a different religion.

    Now, it is being reported that the mostly ignored, maligned by some, historically important yet now out of date OpenOffice project is about to byte the dust. As it were.

    Dennis Hamilton, VP of the group that runs OpenOffice, “… proposed a shutdown of OpenOffice as one option if the project could not meet the goals it had set. ‘My concern is that the project could end with a bang or a whimper. My interest is in seeing any retirement happen gracefully. That means we need to consider it as a contingency. For contingency plans, no time is a good time, but earlier is always better than later.'” [Source]

    Approximately 160 million copies of LibreOffice have been downloaded to date. The closing of the OpenOffice project, should that happen, will probably have little effect on LibreOffice, since most people had already walked away from the venerable old but flawed grandaddy of OO Suites.

    Major Computing Entities as Public Goods

    What if you went to drive to work one day and the highway on ramp was closed, and a big sign across it said “Highway is closed. Sorry for the inconvenience.”

    Well, you would find your way to a different highway entrance. But say that one was closed as well.Then, you check around and find out that all the highways in your state are closed because the state decided to close them. No more highways for you.

    Or, one day you go to check the mail and there is a single post card, and nothing else, in your mail box. The post card reads “The United States Postal Service has permanently suspended operation. Sorry for the inconvenience. Have a nice day.”

    Or one day you go to turn on the TV and … well, never mind, you get the point.

    This morning I received an email from Socialite, a software application, telling me that the software app would not be developed further, could no longer be updated, and was no longer for sale. The main reason for Socialite’s demise is summarized in this text from their web site:

    In 2012 Twitter announced API changes and made it clear that traditional Twitter clients, such as Socialite, should not be developed. Some of these new rules made developing Twitter support in Socialite 2 impossible, so after much deliberations we stopped the development of Socialite 2.
    End-of-life of Google Reader in 2013 was the last nail in the coffin of Socialite, as without it Socialite loses much of its appeal.

    Now, I don’t use Socialite, so this does not matter to me, but it is part of a larger problem that has been a difficulty for everyone. First, with respect to Twitter, it seems to me that Twitter does change its API now and then, which in and of itself causes havoc in the development community. Furthermore, it seems that these changes in Twitter API are not necessarily improvements, but rather, sometimes involve removal of functionality. One could even argue that Twitter has a policy of changing, and sometimes even “breaking,” it’s API in order that software projects that make use of it no longer work.

    I remember a few years back when Twitter was still pretty new and there were all sorts of great ideas for using the Twitter environment to do things like citizen science. But it seems to be the case that any long term use of Twitter, especially if that use requires use of the API (but even if it does not), isn’t worth attempting because any investment one puts into the project could be obviated at any time by Twitters policy. That policy, it seems, is “Innovate with Twitter at your own risk.”

    The second part of this is, of course, Google Reader being shut down by Google. This is a little different. I might be wrong, and do correct me if so, but Twitter seems to be somewhat arbitrary in its API changes, and seems to do very little to support and encourage development with its framework. Google, on the other hand, seems to encourage development of projects and activities based on its services. Nonetheless, a lot of people were surprised when the widely used Google Reader, which served as a key component of many development projects, was axed. Getting rid of a project few people use and that seems to not have really taken off is one thing (and Google has done that a number of times, which is an obviously likely outcome of diverse innovation which Google seems to do). But Twitter is not Google. Twitter is the kind of project that could easily have been one of many services offered by a company like Google. Twitter, when it changes itself in a way that destroys functionality, is not dropping support for one of many projects. It is making itself irrelevant and annoying as a tool for incorporation in other projects.

    So, what is the difference between roads and mail service on one hand and Twitter and Google on the other? The former are public goods, funded publicly and regulated by the government. Similar projects exist in most countries around the world and they integrate across national boundaries. The latter are projects of private companies that have every right to change their services, restrict use, or even shut down entirely.

    Amazon is similar. Over time, Amazon has become one of the major, if not the major, supplier of two things one does not usually associate with a book store: Servers and cash registers. If you use a service that requires computer servers and/or storage of data, such as Netflix, you may well be using Amazon indirectly because they provide servers for a gazillion clients. When a bunch of Amazon servers go down, the Internet can choke majorly, though fortunately this happens rarely. Similarly, when you make an on line purchase at any on line company other than Amazon, there is a reasonable chance that you are using Amazon indirectly, as they provide the on line purchasing system to a lot of other vendors. And, now and then, you might even buy a book from Amazon.

    When Amazon decides to change what it does or how it does it, which they can do arbitrarily within the range of existing contracts, a lot of things can, potentially, change. A minor example of this happened recently to those of us based in Minnesota, when Amazon, not by necessity but simply to make a point, shut down associates in the North Star State. That was part of my income stream (though a very small part, I quickly add) and Amazon simply sent me an email one day saying that this would no longer be a thing, and there was nothing I could do about it.

    Twitter, Amazon, Google, and similar things are like the railroad, mining, and lumber companies of yore, run by a small number of highly influential individuals who happen to be in charge by a combination of luck and whatever else makes you one of those people. The thing is, these corporations effectively serve as public goods, just like our roads, our power grid, our water and sewage systems, our public mail service, our fire departments, etc. but they are not public entities.

    At the moment, we who use the Internet, software, etc. are at risk of the arbitrary decisions of a handful of modern Robber-Barons who got into their present position for reasons other than being thoughtful, sensitive, public servants. All hale the free market.

    Is there anything that can be done about this? Possibly. Here are a few ideas.

    1) The US Senate can pass a resolution requiring Obama to bomb Twitter. That would not solve anything, and of course it can’t really happen, but the debate in the Senate would be high entertainment.

    2) The government can take over Amazon, Google, Twitter and a few other companies, sort of like how it took over the companies that built roads and canals (and to a lesser extent, railroads) in days of yore.

    3) A version of the government takeover in which the government doesn’t really take over but “authorities” are created, like the ones that handle ports, airports, etc. today (those entities were originally private, in many or most cases).

    (These two options, 2 and 3, seem impossible, many will think they are bad ideas. And they will be bad ideas right up until the moment Google is about to go bankrupt or is embroiled in some sort of scandalous legal difficulties of some kind, and a “bailout” is needed. A thing like Google will never need a bail out of course. Like banks. And car manufacturing companies. They would never need a bail out either.)

    4) Alternative services, like Amazon, Google, Twitter, etc. can be developed by non-profits using an OpenSource GPL-like model. Those services would probably not be big, or widely used. But they would be there. Then, one day, when the big players falter or become too annoying in one area or another, the OpenSource alternatives can grow a little here and there, and eventually, become the norm.

    5) See below (this is where you put your ideas in the comments):

    I would extend this ban to all Microsoft products just on the grounds of being annoying, but this is a start:

    Every year the federal government wastes tens of millions of dollars a year, possibly hundreds, supporting old versions of the Internet Explorer browser (below version 9).

    Web development teams typically use 30%-40% of their time (or more) adapting sites to display properly in these browsers.

    There is no good reason for the US to waste time and money supporting this old, flawed technology. Alternatives such as Firefox or Chrome, which render pages properly, are available at no cost and are easy to install. Citizens with older computers can be redirected to use these.

    By publicly stopping support for these browsers at the federal level, it will be easier for state and local governments, and business, to do the same, saving hundreds of millions of dollars a year for all involved

    Stop supporting old versions of Internet Explorer and save tens of millions a year, up to 40% of federal web budgets

    Sign the petition HERE

    What Open Source Software has Good Usability?

    Are you interested in software usability and open source? If so, my friend Jim would like your help. He is doing a study of usability in Open Source software. I’ll post his entire request below along with a link to his blog. Also, he’ll probably be doing some other interent based interolocution about this; I’ll pass on to you whatever he passes on to me.

    Here’s the thing. Jim has been involved in Open Source software for a long time, and is the creator of FreeDOS, and it doesn’t get much geekier than that. (I think the FreeDOS developers manual may be written in a dialect of Klingon.) What he’s looking for is a good example of Open Source software (any platform, does not have to be Linux) that has a medium amount of complexity that can be served up for analysis of positive and negative (but mainly positive) aspects of usability. I’m going to suggest the following list for consideration:

    Open Office Writer
    The Gimp
    Nautilus
    VLC
    Shotwell or Digikam
    Gedit
    Synaptic
    an IM client
    Gwibber

    This list runs from way complex on the top to (probably) way simple at the bottom. I would think that a study needs to be of more than the simplest applications because there won’t be enough to work with. (These are mostly GUI based applications; not sure if Jim is looking for any cli applications. VLC is certainly both.)

    Have a look at Jim’s criteria below and make a few suggestions. The list above is just to get the brain juices going.

    Here’s Jim’s RFI:

    What programs have good usability?

    I want to ask for your help in my study.

    For my study, I want to do a “deep dive” on usability in open source software. After speaking with several “thought leaders,” my thinking now is that it’s better to do a case study, a usability critical analysis on an open source software program that has good usability. The results will be a discussion about why that program has good usability, and what makes good usability, so that other open source programmers can mimic the good parts.

    I’ll also discuss what features are not good usability examples, so programmers can avoid those mistakes. But the focus will be more on the good and less on the bad.

    Picking the right open source program is a tricky thing. The ideal program should be not too big (for example, very complex menus can “lose” the audience in the details) but neither should it be too small (a trivial program will not provide as valuable of results). The program should be approachable by general users.

    There’s no reason the program needs to be a Linux program. However, I prefer that the case study be of an open source program. Many open source programs also exist for Windows and MacOSX.

    The original blog, which you should visit, is HERE.

    Emacs Mail Amusements

    Apropos this, cribbed from the GNU Emacs manual by (originally) Richard Stallman:

    35.6 Mail Amusements
    ====================

    `M-x spook’ adds a line of randomly chosen keywords to an outgoing mail
    message. The keywords are chosen from a list of words that suggest you
    are discussing something subversive.

    The idea behind this feature is the suspicion that the NSA(1) and
    other intelligence agencies snoop on all electronic mail messages that
    contain keywords suggesting they might find them interesting. (The
    agencies say that they don’t, but that’s what they _would_ say.) The
    idea is that if lots of people add suspicious words to their messages,
    the agencies will get so busy with spurious input that they will have
    to give up reading it all. Whether or not this is true, it at least
    amuses some people.

    You can use the `fortune’ program to put a “fortune cookie” message
    into outgoing mail. To do this, add `fortune-to-signature’ to
    `mail-setup-hook’:

    (add-hook ‘mail-setup-hook ‘fortune-to-signature)

    You will probably need to set the variable `fortune-file’ before using
    this.

    ———- Footnotes ———-

    (1) The US National Security Agency.

    ___________
    Please send FSF & GNU inquiries to gnu@gnu.org. There are also other ways to contact the FSF.
    Please send broken links and other corrections (or suggestions) to webmasters@gnu.org.

    Copyright © 2009, 2010, 2011, 2012 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
    Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

    Updated: $Date: 2007/06/10 18:26:22 $ $Author: cyd $