2012-02-22 Wed 18:38:14

Smartphones Everywhere

Interpreting this chart from Nielsen (via Wired) does not require any great amount of effort.

http://www.wired.com/images_blogs/epicenter/2012/02/Smartphone-Income-and-Age.jpg

It can be summarized by any of the following sentences:

  • The greater your income the more likely you are to have a smartphone.
  • Young adults are more likely to have smartphones than older adults.
  • Smartphones are only for the young and get outgrown by the old. (Nah! But it is a valid interpretation of th e chart.)

But I think the graph can best be summarized by:

Smartphones are where it is at today; and tomorrow, even more so.

Perhaps not the best grammar but I think it gets the point across. It becomes even more dramatic when you look at the number of people who have acquired smartphones in the past three months:

http://blog.nielsen.com/nielsenwire/wp-content/uploads/2012/02/SmartPhone_Recent-acquirers-age1.png

As Robin would say: Holy ubiquitous computing, Batman!

It seems clear that this is where the money is. This means that some subset of technologies such as HTML5, virtual computing, Scala, Hadoop, AWS, and CouchDB, to name just a few, are going to be the technologies of tomorrow.

In my lifetime, I have seen computers revolutionize society in several different ways.

Back office
Back office computerization led to the popularization of ATMs, credit cards, Fed Ex and its overnight delivery service, and set the stage for the online marketplace we are familiar with today.
Personal computers
Personal computers introduced computing to the public. When I was in school, I would get bonus points for typing my homework assignments. Today, homework assignments must be printed from a word processor if not submitted electronically.
The web
The web, for the first time ever, connected the back office directly to consumers in the comfort of their own home. ATMs allowed you to get 24x7 access to your bank account, but you needed to be at an ATM. PCs gave you access to many digital technologies, but having multiple computers interact was difficult, slow, and frequently expensive. But throw in the web and suddenly: BOOM! You have the online shopping, video gaming, and video on demand that we live in today.

As a diehard nerd, I'm thrilled to have lived through these technical revolutions. Not only have I lived through them, but I've had the honor of having been an early consumer and even helped develop some of them. So, with great joy, and without trying to sound too greedy, I am joyous that the next revolutionary wave is coming to shore. And it is called ubiquitous computing.

I don't claim to be the prognosticator of prognosticators. Wikipedia's page on ubiquitous computing was created two years ago. I'm just happy to be around to be part of it and hope that I get a chance to surf the wave.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: tech

2012-02-21 Tue 17:20:18

My Patents

Just thought I'd add a list of my patents as of Tue Feb 21, 2012:

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: about-me

2012-02-14 Tue 13:13:34

New NanoBlogger Command-Line

As I've discussed in previous postings about this blog's technology, this is a static blog written with NanoBlogger. NanoBlogger is a CLI driven blogging system. Alas, I have found the NanoBlogger manual to be difficult to follow and the syntax of the CLI to be non-intuitive. (See the footnote here regarding the existing CLI.) On the upside, NanoBlogger is a CLI system which makes it easy to modify.

I started out with a few small helper scripts, eventually merging them into a single helper script. As I was using that script and learning more about NanoBlogger, I found myself writing smaller helper scripts for my big helper script. Eventually, I was never calling my original, large helper script directly.

At this point it became clear that some refactoring was needed. So I refactored. I came up with a single shell script call nbc.sh that does all the work and a series of shell scripts that simply call nbc.sh.

The key idea behind nbc.sh, or simply nbc, is that the scripts that call it are trivial. By "trivial" I mean that each script is only a few lines long, all the side scripts have identical content, and, if not for the semantics of Git, would simply be multiple symbolic links to the same program.

As you can see below, the code for the side scripts simply stores the command name, $0, of the side script that was called and then calls the nbc.sh script that is in the same directory as the side script.

#!/bin/sh

# Code to load include file.
ORIG_ARG_0="$0"
NBDIR=${0%/*}
. ${NBDIR}/nbc.sh

This means that as I continue to add functionality to nbc, all I need to do is copy one of the side scripts to the filename of the new command I added.

While I won't discuss the exact naming scheme used for these side scripts in detail in this posting, I will say that I have tried to systematic in how the scripts are named. Once you learn a few abbreviations (eg: "e" for "Entry" or "Entries", "u" for "Update") and the rules for combining those abbreviations (standard RPN), you will know the names of all the commands, what each command does, and the type and order of arguments each command takes.

I still need to write richer documentation for nbc and its side scripts, but I can finish this posting off with some concrete examples.

NB supports an "update" command that essentially tells NB to rebuild the blog from scratch. The syntax of this command is:

nb update

My nbc version of this command is:

nbu

All of the commands for nbc start with the letters "nb". The letter "U" is the abbreviation for "Update". So "nbu" tells nb to run the update command. As I said, the code for nbu and the other side scripts are trivial and given above. As far as examples go, nbu is not very exciting. But the nbc's CLI for creating tags is a bit more exciting.

NB's syntax for creating tags, as documented in its manual, is:

nb --title <tag-name> add tag

Gosh! That's both tough to remember and tough to type. In nbc, the command for adding a tag is nbga. All commands start with "nb". After that, the "g" means that we are talking about "taGs". The "a" stands for "Add". The syntax for the command is

nbga <tag list>

Besides being much easier to type and remember, it allows a tag list as compared to a single tag name. That is, you can create multiple tags in a single command rather than needing to call nb once for each new tag.

In NBC, a tag list is a comma-separated list of one or more tag names. So "tag1" is a tag list and "tag1,tag2,tag3" is also a tag list. If you prefer you can space-separate the tag list but you need to ensure that you pass the entire tag list as the first argument to nbga.

As the operations become more complex, NBC's simplifications become greater and more obvious. My next posting about NBC will discuss some of these simplifications.

If you wish to use NBC, look at the source code, or tell me why NBC sucks, you can get the scripts at https://github.com/Neil-Smithline/nbc.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: my-software, blog

2012-02-03 Fri 21:49:09

This Blog Is Now Hosted For Free (and it's slashdot proof too)

While there are many free or nearly free blog hosting sites available, most of them come with a long list of restrictions. Either they restrict you to using their blogging software, throw ads on your pages, give you the "unlimited bandwidth" plan that they'll cut off if your site gets too much traffic, limit you to only the ugly themes, etc…

But www.neilsmithline.com is now hosted on a site that charges me nothing, doesn't put ads on my pages, couldn't care less about the theme I use, and, should I ever be lucky enough, survive slashdotting. The only restriction is that my blog has to be static. Being that I already had a static blog (see previous posting), this was no problem for me at all. I've used lots of dynamic blogs (Drupal, WordPress, Joomla, Blogger, Movable Type, etc…) and just found that "dynamic" is a short way of saying that the blogging system is going to do what it wants and not what I want.

Along with the free hosting I get automatic version control, well-managed collaboration (not that I have any collaborators), data redundancy, eternal archiving (I probably won't need it that long but it's nice to know that nothing will get lost), and the ability to get a copy of my data onto my local machine whenever I want it.

My choice of blogging technology was largely influenced by these two blog postings, 1 and 2, and email conversations I had with their author, Les Orchard. While Les went with Jekyll, I preferred the simpler NanoBlogger. Les uses Github.com for versioning his blog but hosts his blog on his own site as he wants full control of what is published. I simply couldn't agree with him more.

When I moved to my new blogging framework, I quickly got my blog up and running using NanoBlogger for site generation and sftp to publish it to my VPS. Today I investigated replacing sftp with Github and its notification framework. This would essentially mirror Les's blog system except that I am running NanoBlogger locally while he runs Jekyll.

As I was investigating using Github for transportation and archiving of my blog, I decided to take another look at Github Pages. And then, like a lightning bolt, it occurred to me. When I publish my blog by pushing it to Github, if the repository has the magic name of neil-smithline.github.com, then Github would publish my blog at http://neil-smithline.github.com/ automatically. There simply was no benefit to serve my blog from my VPS as Github would do it far better than I could on my VPS.

The only problem I foresee is that I run more than just my blog on www.neilsmithline.com. But the other applications I run are only for my private use so I can just map them to another sub-domain such as whatever.neilsmithline.com. For example, I've been playing with a cloud-based bookmarking system, Asaph, that allows you to run your own cloud bookmark server. But I can access it at and, if you have an interest, can view it at: http://www2.neilsmithline.com/asaph/.

All-in-all, it's like a nerd's dream come true :-D

UPDATED: Sat Feb 11 13:12:02 EST 2012
There seems to be another problem with hosting my blog on Github. While practically all of Github requires SSL, there appears to be no way to get a Github hosted website to use SSL. Thinking about it, the task seems inherently difficult. Github makes all of its sources file public but you must protect your site's SSL private key. Currently, all site information is stored in the Github repository. A private SSL key could only be added if Github updated their configuration to allow the key to be stored out-of-band (ie: not in the repository).

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: blog

2012-02-01 Wed 20:40:51

Nastiest Hack I've Seen In Awhile

I was reading about SL4A, also known as Android Scripting Languages. They are a set of quick-and-dirty ports of programming languages to the Android that interact with the Android OS. I just stumbled upon this "issue page" (it's more like a forum than a bug report).

The developer is trying to run something on his Android, which is basically Linux, that requires superuser permissions. As the responses started to build upon each other, one user suggested starting his shell script with the following lines (the actual posting was in Android's flavor of Python but I've converted it to bash(1) to make it more accessible):

#!/bin/sh
if [ "$USER" != "root" ]; then
    exec sudo $SHELL -c "`cat /proc/$$/cmdline | tr '\000' ' '`" root
fi

I simply couldn't help being entertained at how revolting yet simply brilliant that code is. I hate when I run a command and it behaves stupidly because I didn't run it as the correct user. For example, this is the output of running apt-get(8) without proper permission:

$ apt-get install foobar
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

So I have to rerun the command with sudo(8)? I guess that makes sense in some situations but it grates on my nerves. Including the above lines in your shell scripts will automatically run commands as root when you need root privileges. It will also do this without bypassing the security of sudo. That is, if you don't have permission to run a command with sudo, then this won't help.

Despite the plain hackery of the above code, I expanded upon it, making it a full shell script utility. You can look the code or grab a copy at my GitHub page in the rerunasroot repository.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: my-software, coding

2012-01-14 Sat 23:31:19

Man vs Beast

I stumbled upon this article in the Wikipedia about an annual 22-mile cross-country race where the participants are people running and people riding horses. After 25-years the first runner won the race. In the subsequent half-dozen years there have been several more human winners.

I feel bad for any runner that is drafting a horse when the horse's tail goes up…

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link

2012-01-14 Sat 00:18:39

SOPA DOA? Not Quite But Getting There

While not dead, SOPA is losing its teeth. Despite having had its major backer remove one of the more totalitarian portions from the bill (the ability to block non-US DNS addresses), SOPA appears unable to make progress in Congress.

In a CNET article (via Slashdot), the RIAA whines:

Instead of helping to come up with mechanisms to deny access to the U.S. market by foreign criminals," the RIAA wrote, "the opposition just keeps saying no. It is incumbent upon them to help develop language that will ensure that criminals can't access our market, while at the same time protecting our need for national cybersecurity.

As discussed previously, SOPA claims to support American businesses while it really supports the very large media companies and stifles smaller companies and individuals rights to publish.

As I've stated in my previous posting about SOPA, I am strongly opposed to piracy as I am a software engineer (ie: software pays my rent). But I also believe that piracy can be dealt with without destroying free speech. My viewpoints are similar to those of the EFF and differ from the FSF's viewpoint which opposes proprietary software altogether.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom

2012-01-09 Mon 12:33:50

Cool Animation

Google Plus Logo Animation by ℑ. ℜ. Gellett https://lh4.googleusercontent.com/-POK887siH3w/Twq0UoK7YgI/AAAAAAAAAOg/dWGOAZzgcWQ/w300/Google-Plus-Logo-Animation-Small-JRGellett.GIF

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom

2012-01-05 Thu 16:02:44

Stop PTSD, Support The Wikipedia

This posting is an updated version of my Wikipedia user page originally posted on 6 Dec 2011.

A few months ago I experienced what is known as a traumatic event.

It was a day like many other days. I was talking to my two sons and we had a disagreement about some fact. (I have no recollection what the fact being discussed was.) So, we did what we always do. We each reached for one of the nearby smartphones, tablets, netbooks, and laptops that populate our lives and went right to the Wikipedia to resolve the argument.

Then it happened. The Wikipedia was down. For a second or two, none of us knew what to do. Then we Googled to find the answer to our question (I still can't remember the subject but I'm sure I was right :-).

But I started thinking, what would happen if the Wikipedia were to go away? It is not that I think the Wikipedia is perfect. In fact, I think it is chock full of problems. But, what makes the Wikipedia special is that the Wikipedia's problems are ours, the users', problems. They aren't owned by big government, big business, lobbyists, the PRC, or anyone else.

If there's a problem, you can edit the page and fix it. If you're uncertain what to do, you can add a comment about the problem on the discussion page with the hope that someone else will fix it or help you out. Or you can simply ignore it. But, in all cases, you are making the decision.

So I donated $5 to the Wikipedia. That's about the same amount I tip the driver who delivers my groceries.

Shortly after this traumatic event, the Wikipedia started posting these banner requests for donations. Personally, I find them increasingly annoying with every visit. But they are not nearly as annoying as the 10 minutes or so the Wikipedia was down. That downright spooked me.

Being they've continued to post the banner requests, I'm assuming they continue to need more money. So I decided to start what I'm calling The Wikipedia: Just Give campaign.

I'm not sure what the campaign will consist of, but I want to encourage everyone to give to the Wikipedia. I, who am totally untalented in the graphic arts, even made a few icons to help people join my campaign.

So I ask each of you to just give. If you don't have a lot, don't give a lot. But more importantly, encourage everyone you know to just give.

Update 14 January 2012: Just got this

Sorry, the servers are overloaded at the moment.

Too many users are trying to view this page. Please wait a while before you access this page again.

  • Timeout waiting for the lock

Neil Smithline, 6 December 2011
A proud sponsor of the Wikipedia and its free information.

Resources

Any artistic help on the badges would be deeply appreciated.

HTML Code For Your Website

Assuming I've gotten all my angle brackets matched and tags closed, depending on the system you use, you can add a graphic to your website or email signature by copy-and-pasting this:

Blue and gray 'Just Give' icon
(what's this?)

or this HTML:

<a 
  href="http://wikimediafoundation.org/w/index.php?title=WMFJA085/en/US" 
  target="_blank" title="Wikimedia donation page">
  <img src="http://upload.wikimedia.org/wikipedia/commons/3/34/Wikipedia_Just_Give-_Blue_Gray_Antipixel.png"
    alt="Blue and gray 'Just Give' icon"/>
</a>
<br/>
<span style="font-size: 75%;">
  (<a href="http://bit.ly/just-give" 
      target="_blank" 
      title="'Just Give' Campaign">what's this?</a>)
</span>

Standard Badges (antipixel style, 80x15px)



Blue and gray "Just Give" http://neilsmithline.com/images/just-give/Wiki-just-give-blue-gray-antipixel.png
Blue and white "Just Give" http://neilsmithline.com/images/just-give/Wiki-just-give-blue-white-antipixel.png
Gray and blue "Just Give" http://neilsmithline.com/images/just-give/Wiki-just-give-gray-blue-antipixel.png

Other Badges



Blue "Just Give", 172x66px http://neilsmithline.com/images/just-give/Wikipedia-just-give-172x66.png
Yellow "Vote", 203x78px http://neilsmithline.com/images/just-give/Wikipedia-just-give-203x78.png
Blue "Just Give, 229x88px http://neilsmithline.com/images/just-give/Wikipedia-just-give-229x88.png
Blue "Just Give", 305x117px http://neilsmithline.com/images/just-give/Wikipedia-just-give-305x117.png
Blue "Just Give, 406x156px http://neilsmithline.com/images/just-give/Wikipedia-just-give-406x156.png

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom

2011-12-30 Fri 12:26:33

Florida Appeals Court More Liberal Than SOPA!

Earlier this week, the Florida appeals court made a ruling that even the poster of a defamatory posting on a public website could not force a website to remove the posting. While most sites allow you to remove your own postings, RipoffReport.com, the site involved in this ruling, states that as an advocate of free speech, it never removes reports. This is clearly stated at the top of their home page and documented extensively on their Wikipedia page.

While not allowing the poster to remove or have removed a posting seems extreme, the site claims that it wishes to remain unbiased. As such, it makes no judgment calls about its content. Everything that is appropriate for the site will stay on the site, forever. RipoffReport.com is afraid that posters may be pressured by 3rd-parties to remove articles. As such, They are simply not allowed to.

While postings are never removed, the site allows anyone to post a rebuttal to any posting. A poster can use this mechanism to retract their initial statement.

The court ruled that RipoffReport.com could neither be held liable for the defamatory posting nor be forced to remove it. The bottom line of all of this is that

The supreme court of Florida, a middle-of-the-road state, was willing to make a controversial ruling favored many aspects of freedom of speech. If SOPA is passed, cases like this won't even make it to courts as SOPA make it clear that if a ruling is defamatory, it is illegal.

While Congress has delayed voting on SOPA for another month, it is still on the docket. It is unclear what the fate of SOPA will be.

One can hope that Congress pays attention to protests such as the statement]] consumers sent to GoDaddy after it announced its support of SOPA. GoDaddy announced that on a Saturday (see more complete chronology) and then lost 21K domains on the next day. More recently, the Wikipedia announced it would discontinue all use of GoDaddy.

Let's continue to hope that advocates of free speech, including you (see SOPA: The End Of Free Speech for instructions as to how to help), continue to pressure our government into sane activit

Copied directly from the Slashdot article:

RipoffReport.com contained an admittedly defamatory posting, by one of its users, about a person who operated a Florida corporation providing addiction treatment services. Although the site was asked by the poster herself to remove the post, it refused. A Florida appeals court has ruled that the site is absolutely immune from suit (pdf), and cannot even be directed to remove the offending post, since under the [[http://www.law.cornell.edu/uscode/html/uscode47/uscsec4700000230-—000-.html][Communications Decency Act (47 USC 230)] 'no cause of action may be brought' against a provider of an "interactive computer service" based upon information provided by a 3rd party.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom

2011-12-28 Wed 12:04:20

The Litigious Trio

This posting is best viewed as part of the series of postings about The Litigious Trio and, in a larger context, Online Freedom.

To be clear, The Litigious Trio are, in alphabetical order, Apple, Google and Microsoft. While they are three wonderful technology companies, over time, each has turned to an increasingly large amount of litigation to enforce their current market status.

While I do not believe that the three companies actively collaborate with each other to hinder the success of smaller companies, I believe that selfish1 business practices by the trio have had the affect of having created a three company monopoly2. While the three companies are locked in a near-endless stream of litigation against each other, this is rather typical amongst large corporate competitors. I can't say that I'm in favor of such litigation but I the three companies can spend their money that way if they want to. They have more than enough of it.

But when The Litigious Trio, behaving in a pseudo-monopolistic manner, use litigation to block competition from smaller companies, they end up stifling innovation.

Furthermore, The Litigious Trio are not necessarily the most user-friendly companies. They, along with Facebook, are some of the leaders in gathering information about its users. Consider the following:

The only question seems to be whether the public is motivated to address this problem and what the public can do to address it. The reason monopolies are illegal is because fighting them is difficult.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom, litigious-trio

Tue Dec 20 08:27:38 EST 2011

Unix Reference: Add User To A Group

usermod -a -G GID1,GID2,…GIDn USERNAME

  • USERNAME must already exist
  • The one or more GIDs must already exist
  • Omitting the -a will first remove the user from all groups except their login group and then add them to groups GIDs.
View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: reference, unix-reference

Thu Dec 15 10:04:43 EST 2011

Sparkleshare: Maybe An Open, Privately Hosted, Dropbox Alternative

Dropbox took the internet by storm with its free storage and ease of access. But Dropbox comes with a limited amount of data, a level of secureness that is hard-to-understand, and rather proprietary.

Sparkleshare is an open source alternative to Dropbox that hit my radar screen about 6 months ago. I played with it a bit back then but it didn't seem to be quite there. I think I was using an early-alpha, pre-release version so I this was to be expected.

I gave it another try earlier this week and seem to be pretty happy with it. Some of the things I like about it include:

  1. I get to host it on my own server. This means the data is private. I own it. Nobody else has a copy of it. Etc…
  2. I have been renting a Linux VPS from RoseHosting.com ($20/month) for many years so they provide me with a convenient, managed, and relatively secure place to host Sparkleshare.
  3. It only took me about 5 minutes to install and configure sparkleshare on my Linux VPS. Not because I'm brilliant but because Linux doesn't suck and Sparkleshare requires no special server software. Just a few standard packages such as Git and a copy-and-paste of one command line. The client install (Mac OS X) was equally simple.
  4. Being that it is FOSS, there is continual scrutiny of the source code to maintain quality and security.

The only real objection I have with it is that Dropbox allows symbolic links in the Dropbox folder so I don't need to have all of my files in one directory. I haven't yet gotten this to work on Sparkleshare. Either I just haven't figured it out, someone else will add it shortly, or, being it is FOSS, I'll add it if I get motivated enough (BTW: I'm voting for someone else implementing it).

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: sync-software, software

Sun Dec 11 00:31:05 EST 2011

SOPA: The End Of Free Speech

SOPA, and its sister bill PROTECT-IP, are currently making their way through congress. I have pointers to some of the excellent sources of information on the bills at the end of this article.

While the magnitude of these bills is staggering, this posting focuses on how the passage of these bills will dramatically remove the ability of individuals to produce and share content on the internet.

While I favor reasonable enforcement and punishment of internet-based crimes, these bills introduce the concepts of:

  • Guilty until proven innocent
  • Guilty by association
  • Whoopsy daisy legal recourse that restricts damages (eg: going bankrupt) due to abuse of SOPA to "s— happens" response.

into American law. At least to me, those concepts don't seem very "American".

The problems with this bill can best be demonstrated by a simple example. Let us use the consider a fictitious, non-profit website run by a couple of friends that is focused on internet freedom. The website is called Big Brother, Back-off and Stop-It! with the URL BBBandS.org.

If this bill is passed, Big Brothers Big Sisters (http://bbbs.org) could simply write a letter to search engines such as Google, content distributors such as Facebook, and payment companies such as Paypal, claiming that they feel BBBandS.org is infringing on their domain name. Once this is done, each search, content, and payment provider must contact BBBandS.org (remember that BBBandS.org is a couple of friends working out of their garage).

BBBandS.org must reply to each and every provider explaining why they do not feel that BBBandS.org is infringing on BBBS.org's domain name. It seems clear that BBBandS.org could not accomplish this task in a timely fashion.

For each company that BBBandS.org does not manage to provide a credible counterclaim to (where credible is determined by the search, content, and payment provider companies), a fairly mechanical process will begin where federal courts will execute a cease and desist to each search, content, or payment service provider informing them that they must stop servicing BBBandS.org.

Guilty until proven innocent: Note that the simple lack of a timely response to sufficient to, by means of a judicial cease and desist order, force search, and payment providers to become legally and financially liable if they continue to do business with BBBandS.org.

Guilty by association: Whether a service provider agrees or disagrees with the order, they can be held accountable if they do not "block access to or end financial affiliation" with BBBandS.org.

To add insult to injury, the bill goes on to provide "immunity from liability for service providers" that follow a cease and desist order, causing clear economic harm to BBBandS.org, even if it is eventually determined that there was no infringement.

Whoopsy daisy legal recourse: Should the cease and desist order be determined to be incorrect via a legal process that may take years and cost more money than most people will ever have, this bill restricts BBBandS.org's legal recourse to accepting the apologies of the US judicial system.

While I am in favor of what the bill claims to be protecting, this bill proposes far too high a price to pay for that protection.

If you care about the rights of small organizations (eg: people like you), please:

  • Read an excellent summary of SOPA in this article. Keep in mind that the reason that the article seems ludicrous, insane, and unbelievable is because it is accurately reflecting the proposed legislation.
  • Google SOPA or PROTECT-IP.
  • Take action via Mozilla's page focused on this issue.
  • Take action via the EFF.
  • Contact your legislator using this OpenCongress.org page (takes only a minute or so).
  • Discuss this issue with everyone you know.
  • Discuss this issue with people you don't know. I recommend "So what do you think about SOPA?" as a pick-up line though I encourage creativity and individualism as to the exact wording.
  • Post a copy or a link to one or more articles on SOPA everywhere you can.
View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: online-freedom

Sat Dec 10 20:09:57 EST 2011

Got Tags Working Manually

NanoBlogger supports tags. While they came working out of the box, their UI is a bit awkward. I now have it so that I can easily tag entries with just a single command line. For example, I'll tag this posting by typing: nbeta about-this-blogs-tech 1 nbeta is my shell script to add tags to an entry. It seems a bit hard to remember but:

Letters Word Meaning
nb NanoBlogger This is a NanoBlogger command
e Entry This command will affect one or more entries
t Tags Affects the tags, in this case, of entries
a Add We'll be adding tags

about-this-blogs-tech is the tag name. 1 is the entry ID number. I'd like it to be the entry name but that isn't done yet and seems of lower priority as the newest entry is always entry #1.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: software, nanoblogger, blog

Sat Dec 10 01:27:23 2011

Seems It Really Works

Well, it appears this actually does work. I seem to be having a few issues integrating with NanoBlogger but I'm sure I'll work those out. The problems that I've seen are:

  1. It seems that adding or even updating a new entry is as costly as rebuilding the entire blog from scratch. Right now, that's OK. But what am I going to do when I have 10, or 100 postings? I hope NanoBlogger can handle this.
  2. NB seems to assume that its input files are hand-written in some legacy text editor called Vim or something :-). While my strategy of using GNU Emacs' Org Mode keeps the flavor of NB in that it is written in a simple markup language, it doesn't seem to fit the NB model perfectly. There is nothing wrong with NB's markup, it is just that Org Mode's markup can easily be exported to virtually every other markup on the planet. So I just need to learn Org Mode markup, write my content in Org Mode, and then publish that data into whatever format I choose. Seems a better solution but NB isn't quite prepared for it.
  3. I would still like better integration with Org Mode and NB. The steps I've used to produce this entry are:
    • Ran a little shell script I wrote to create a new NB entry. All I do is give the shell script the title of the Org Mode file I want to store the new entry in and it does its magic, leaving me with an Org Mode skeleton for NB.
    • Edit the Org Mode file just created.
    • Use Org Mode to publish the entry. This just stores it in my local NB folder.
    • Run nb update to have my changes put into the local copy of the blog.
    • Run nb preview to view the changes before publishing.
    • Run nb publish to update my blog.

So, while they're are still some problems, I have to say I love it. The advantages of using Org Mode and the simple NB blogging engine on both my local and production server is way cool.

Org Mode is actually way cool. I've only started using it in the past year and will likely spend years learning it as it supports so many features. But, like all well-designed pieces of software, you don't need to learn it all at once. I'll yabber about Org Mode another day. In any case, I'm real happy with my blog and the ease with which I can add postings to it.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: software, nanoblogger, blog

2011-12-07

My New Blogging Technology

My hope is that I can write this entry in GNU Emacs' Org Mode and have it auto-published into this blog. If you are reading this, then I have succeeded.

This is a static blog. That is, the server side is all HTML. It can be served by virtually any web server. This makes it incredibly convenient for testing and deploying. When I am writing blog entries, I'm just typing in Emacs. I then save the entries and use Org Mode plus some personalized tweaks to publish them to a local directory as something close to HTML.

These HTMLish files are then fed into NanoBlogger. NanoBlogger is the magic tool that turns a few HTMLish files into a fully functional website. NanoBlogger accepts HTML for the text af entries but wants some simply formatted metadata added to the file.

The Metadata is needed to help NanoBlogger out because, as its name implies, is a teeny-tiny blog engine. As a comparison, my installation of NanoBlogger is 768K (yes, that's "K"). I also have installations of Drupal at (14M) and Joomla (107M).

The .txt source for each NanoBlogger posting is a file with the body of the entry in HTML embedded but all the cruft that tends to come before and after the body of a web page is simply not there. The easiest way to get an understanding of it is to view the metadata source for this sample posting.

So you're saying "Big deal." or "Who needs yet another file format?" But it is a big deal. What most younglings have never learned is that WYSIWYG is a distraction from actual content production. Content production is not the same as formatting and editing and, at least in my experience, uses very different parts of the brain. So the less formatting you do while producing content, the better your content will be (at least if you have my brain :-).

While it has largely been lost with the popularization of the Wikipedia, initially, Wiki markup was intended to simplify editing but also served to separate the content production from formatting. While NanoBlogger expects these HTMLish files as input, it is designed to generate them from any number of simpler input formats.

These simpler input formats are quite unlike HTML as they are, well they're simpler. The default input format is the rather famous Markdown though many other formats are supported by NanoBlogger or the community. This article seems to do a good job explaining the benefits of simple languages such as Markdown.

It took me but a few hours to create a converter for GNU Emacs' Org Mode to NanoBlogger.

While not nearly as cool as what I've discussed above NanoBlogger has yet another advantage: it produces a static site. On my local machine (17" MacBook Pro), I can view the entire site without running a web server. I simply go to Firefox (actually Firefox Aurora) and visit the URL, specifically, the file URL of my blog. For me, I visit file://Users/neil/www-nb, and then I can see my entire blog through the magic of a static websites, file URLs, and relative URLs.

View or Add Comments about this entry.

Posted by Neil Smithline | Permanent link | File under: software, nanoblogger, blog