Tuesday, December 18, 2012

H&R Block is a spammer

I just received an unsolicited robo-call from H&R Block, advertising their payday loan or whatever. I listened through the whole spiel hoping for a "Press X to be removed," and unsurprisingly, the option didn't exist. But they did wish me a great day.

We as a society need to shun robocallers. I am doing my part. I'll never consider H&R Block for any business. I hope that I am not alone.

Sunday, December 9, 2012

Automatic monitoring of Verizon shared data plans

This weekend I finally finished(?) the Shared Usage Alerter, my Python set of modules and programs that facilitate monitoring a shared/family plan and alerting its users if someone's going to cause an overage.

Since the last update, I added a bit more infrastructure. Now it's usable by someone with very casual programming skills who has a Verizon shared plan.

The hardest part was writing web-scraping code for Verizon Wireless. VZW actually made it surprisingly easy to get everything once you're logged in to your account: SMS and data usage come as a well-formed XML. But logging in was a chore. I kept getting a different response from Verizon's servers than what a regular browser-based user does, even after providing the same User-Agent. Initially I went down the wrong rabbit hole: I thought the way I manage my cookies is wrong. During login, VZW sets some cookies using Javascript, which requires additional (manual) handling on my part. I spent some time looking for that Javascript code. Well, it turns out the site checks the usually-ignored HTTP Referer header and doesn't permit login if it's different from what the site expects.

Another issue was that Verizon's usage data is not consistent between different accounts. I have credentials to two Verizon accounts, and plan differences require a lot of edge case handling. Unlimited plans, plans that don't actually share, and such. But I have it working for at least two Verizon accounts.

If you have a Verizon share plan and some programming and system administration skill, please try to use this software and give me your feedback. Alternately, I'm happy to run it for you on my system, if you trust me with your account credentials.

Thursday, December 6, 2012

On the virtues of Verizon as a financial investment

Fidelity offers some pretty nice stock research tools. One of them is the MSCI Vice Index on any given company.
A MSCI Vice Alert is triggered when a company derives at least 15% of its revenue from adult entertainment, alcohol, gambling, and/or tobacco.
I chuckle inwardly every time I see that. I guess there really are people who decide not to invest in a profitable company because it's involved in those categories.

Verizon is one company to whom MSCI gives it a green light, marking it as "Not Involved" in vices. Yet I believe Verizon is in the category of companies who will throw their customers under the bus to make money. Is that a vice? Shouldn't it be?

Here are some examples:
  1. Verizon has routinely disabled certain built-in features of cell phones to force you to use their expensive (and often inferior) alternative. For example, Verizon has been known to block Bluetooth transfers to keep people from uploading their own ringtones. They've also been known to block setting your own MP3 as a ring tone, to encourage you to buy theirs. Of course, this was not advertised.
  2. You buy data from Verizon in buckets of gigabytes. This might lead you to believe that once you buy these gigabytes, they're yours to do with as you please, including tethering your phone to a laptop/tablet and using data on those more convenient devices. But nope, tethering costs $20 extra, despite there being no technical reason for it. It's not any more expensive to Verizon. So you buy a gigabyte of data, and then you buy separately the privilege of using it in a convenient manner. This changed only once the FCC stepped in.
  3. Like banks, Verizon loves fees. They charge $1.98 per month per line as an "administrative fee", which, as they admit in small print, is not a government fee or fine. It's just a surprise cherry on top of the advertised price. They looove overage fees. In fact, postpaid accounts cannot set a hard limit on their usage to avoid overage fees... unless they pay $5 per month per line for the privilege. And the overage fees are steep, such as $15 per gigabyte. (In increments of gigabyte, rounded up, naturally.)
  4. They don't compete like normal companies. The telco industry has a very complicated relationship with the government, and a lot of Verizon's success is not due to its capitalistic superiority but due to lobbying, monopoly in certain regions, and other similar endeavors.
In short, having followed Verizon's goings-on for a long time, my feeling is that Verizon thrives on consumer's ignorance. They don't have seem to have "good faith" when it comes to customers, so unless you know exactly what you want and what you don't, you'll get screwed one way or another.

Are these not worse, in terms of respect for the customer and society, than running a gambling or tobacco parlor?

Despite my list of complaints, I own Verizon stock. I think they know exactly what they're doing. They've made some really good business decisions. Here are some, in chronological order:
  1. They became known as the network with the largest reach. In a country the size of the US, that's a huge feat.
  2. While in the past they used to be derided for the poor selection of phones, they turned that around, now offering some of the most advanced handsets of all US providers.
  3. They were the winning bid for the 700 MHz block, back when the FCC auctioned it off. It was a significant chunk of change, but 700 MHz is a significantly lower frequency than competing LTE implementations, leading to a higher RF penetration, leading to better signal strength in more places than the competition! This plays right into their "largest reach" status.
  4. Verizon standardized on LTE back when Sprint went with the losing WiMAX. Now Sprint is playing catch-up.
  5. Verizon rolled out its 4G network way more aggressively than any of the competition.
With all that, Verizon has become simply the best network. It has the widest reach, some of the fastest speeds, and the largest 4G footstamp. Like Apple in the computer-land, Verizon sets the bar and the price. And that's why, like Apple, they can screw you in some ways and you'll have no choice but to thank them for it.

I've been with Sprint and its MVNOs for three years now, paying for data. The voice component is fine for me, but the atrocious data speed and high latency means it's over. Unlimited data when it's dripping in at 50 KB/s at most? That's a laugh. So Verizon has earned a new customer. Now I stay with Sprint (Ting, specifically) for just the voice and SMS, and pay Verizon a rather handsome sum monthly for data-only access to their LTE network.

The barrier to entry in this industry in the US is enormous. In fact it's probably insurmountable. Verizon, AT&T, Sprint, and T-Mobile are the four. I don't see anyone else on the horizon. So what about the others?

For the big picture, I believe that 4G is all that matters. Why? Because data usage is exploding. Fast and plentiful data is the foundation of everything else. Voice can go over the data channel (and today often is), but YouTube cannot go over the voice channel. So for a telco to succeed, I believe 4G is key.

So let's look at the other companies.

I am most familiar with Sprint, having had them and rooted for them for three years. Sprint is overburdened with its iDEN and WiMAX networks. They were huge mistakes that will take many years to recover from. (iDEN is an old mistake that's probably run its course by now.)

In terms of LTE, Sprint is juuuuust now rolling it out in a few markets. Meanwhile, Iowa doesn't even have WiMAX. My local Sprint retail stores have been telling me for three years that 4G is right around the corner. The typical customer won't wait. If he values data and wants to stream YouTube cats, he has already switched away from Sprint.

Lastly, Sprint's only positive differentiator is "unlimited data." The problem with this: over the air, it's simply unsustainable. Your DSL and Cable provider can do it because they have a physical wire running to you. Over the air, you're sharing the equivalent of a wire with dozens or thousands of people. The only way for "unlimited data" to hold is with throttled speeds. Is that competitive? (Answer: maybe. People may prefer throttled but "unlimited" to Verizon's awe-inspiring speed that reaches your monthly quota in under an hour.)

With AT&T, I am not sure. I've never had them and don't know anybody personally who has AT&T. But they keep earning Consumer Reports' Worst Customer Service award each year. What's their positive differentiator? Dunno.

T-Mobile is a good value, but their network is not great in terms of speed, and T-Mobile itself is far from nationwide.

So, Verizon has 4G, the foundation of success, in the bag. In summary:
  • If money is not an issue and you just want "the best" , you'll go with Verizon and pay their large monthly charges and fees.
  • If you want fastest speeds, you'll go with Verizon and pay their large monthly charges and fees.
  • If you live out in the boonies and want service, Verizon is probably your best bet. You'll pay their.... yada yada.
  • If you travel often and want reliable service, Verizon is your best bet. Oh, you'll pay.
  • If you're value-conscious and/or indiscriminate when it comes to network service, you'll probably end up with whomever happened to be cheaper at the time of your search, which would be prepaid on a Sprint or AT&T's MVNO. You'll spend as little as you can, yielding very little profit to the telco.

What about growth? A good investment must have growth potential. The growth used to be in getting mobile subscribers. Now that's saturated. The next growth: data guzzlers in the form of smartphones (with more and more apps which draw more and more data), and to a much lesser extent netbooks and USB modems. Right now most non-techies don't have data on their phone. But everyone I've spoken to says that once they got it, they were hooked. And, Verizon is in the best position to profit from this growth market.

And that's why I am long Verizon's stock.

Now Verizon's biggest threat seems to be the proliferation of free wifi. And that's a pretty serious threat. Already many people get by with minimal mobile data usage, relying on wifi at home, at work, at the coffee shop, etc. Verizon has two advantages here: it's always available and reliable, and it's very fast. But it's impossible to beat free.

Verizon and AT&T both have an advantage here over Sprint and T-Mobile: they play the other side of the fence, providing residential and commercial broadband -- powering the very wifi that may undermine LTE profits. Of course, every techie has heard of the legendary speed of FiOS, Verizon's wire-based broadband. Those who have it, love it; those who don't, wish they did. So, Verizon seems to have this threat neutralized.

I want to hear your thoughts.

Wednesday, December 5, 2012

Authoritarian atheists

For me, atheism and libertarianism goes hand-in-hand.

Theism is the status quo, and a typical atheist seems to be someone who, as a teenager or an adult, has pondered the world, weighed the evidence, the history, and others' opinions, and come to his own conclusion that disagree with the majority of society's. The typical libertarian seems to have gone through the same steps.

More importantly, libertarians speak out against so-called victimless crimes, which they see as criminal merely due to religion and puritanical mores. There's a natural overlap of atheism and libertarianism in that sense.

But sometimes I see evidence to the contrary, reminding me that indeed there can be authoritarian atheists. A restaurant in Columbia, PA1 offered a promotion: bring in the "current church bulletin" and get a 10% discount. Sounds reasonable to me. An atheist wouldn't enjoy this promotion, but in the free US of A we tend to permit private restaurants to run whatever promotions they please. And this turned out to be a successful promotion according to the restaurant owner.

But it appears that the atheists had a problem with it, invoking the Civil Rights Act. The CRA sees atheism as a religious creed. So now, by crying to mommy, the resident atheists scored themselves 10% off. Classy.

If the CRA applies here, what about age-based discounts and special menus? What restaurant doesn't have a special menu or discount for seniors or children? Why is no one fighting those?

Because apparently there are atheists who want to enforce their beliefs legislatively. In contrast, libertarians and Austrian economists (again, greatly overlapping circles) tend to not like the Civil Rights Act, believing that once slavery became illegal, the free market would solve discrimination much more effectively than legislation. The justification is that it's better for a racist to openly display this racism and be judged openly than to be forced by law to hide it and exercise it against blacks in a cowardly fashion. Having to hide one's racism merely prolongs discrimination in our society.

The irony here is that for the longest time atheists have been fighting religion-based legislation, from gay marriage to the pledge's "under god" that public schools force children to say. Atheists say: get religion out of legislation. The US was not founded on Christian principles. Separation of church and state. These noble cries become negated when some bad apples swing the pendulum the other way and attempt to write (or apply) legislation to suit their personal beliefs.

My fellow atheists, grant the same tolerance to your Christian brethren that you've been expecting and demanding for yourself.

Check if libertarianism is right for you. On one hand it promotes a smaller government and fewer laws. That's good for atheism because it reduces criminalizing so-called victimless activities, and it reduces historical legislative baggage that's often based on religion. On the other hand libertarianism promotes a hands-off approach for private industry. That's good for tolerance. Don't like a business? Don't patronize it and tell your friends. But using legislation for this purpose seems childish.

Footnote 1: It took me longer than a minute of research to figure out what damn Columbia is being referred to. The article omits the state. Oh, but lancasteronline.com should give it away, right? No, there are more than one Lancasters in the United States. Even the newspaper's homepage doesn't indicate which Lancaster it represents. I finally found the state in the profile of the newspaper's official Twitter account.

Vegetarians at Subway get the short end of the stick

I like Subway for its value. Certain footlongs are just $5 year-round. Then they introduced a Sandwich of the Month, where a certain normally-higher-priced footlong becomes $5 for a month. Now they lowered the price on two of their six-inch subs to just $2. That's pretty incredible.

But vegetarians at Subway get the short end of the stick. There's exactly one vegetarian sub at most locations: the Veggie Delite. This sandwich, with its delicious-sounding name, is priced the same as many other sandwiches, including Cold Cut Trio, Spicy Italian, and Meatballs. But Veggie Delite is simply one of those sandwiches... minus the meat.

So take a Spicy Italian, with its tasty meats that comprise more than half of the sandwich's innards by weight. Then take out the meat and reserve it for the next customer. Then don't lower the price. That's not a recipe for happiness.

The situation reminds me of a TV commercial for Whataburger in the early 2000s. It portrays a caricature of the typical burger joint, with a disinterested waitress bringing a family their burgers. The father pipes up, "I asked for no mayo." The bored waitress rolls her eyes, takes off the top bun (with the mayo on it), wipes it on the corner of the table, and plops it back on the poor guy's burger. That one always made me laugh.

Subway is getting its act together on this and introducing some fare for vegetarians and vegans worth paying for. But it's not here yet, and may never get rolled out if the pilot isn't to Subway's satisfaction.

In contrast, Which Wich has great vegetarian and vegan options, such as bean-based spiced patties. Too bad the closest one is 30 miles away.

Monday, December 3, 2012

Large companies don't care, part 89228

In Texas, for a while I had an Internet service provider called OpLink, a very small company. They cost more than the alternative (AT&T), but had very competent customer service and gave me four static IP addresses. When, during initial setup, the DSL modem wouldn't register signal, some head honcho immediately drove over to my house to diagnose and fix the line.

CenturyLink is nothing like that. I just managed to live a week without Internet at home, thanks to their lack of care.

Last weekend I was out of town. When I left, the Internet (through CenturyLink) worked fine. When I returned, the DSL modem was displaying a red LED over the "DSL" part. After power-cycling the modem a few times, I immediately called CenturyLink and told the customer service rep that something's broken on their end. (I know customer service people don't enjoy the hoi polloi diagnosing the problem themselves, but come on, I have an M.S. in computer science and own an IT consulting company. That has to count for something. I didn't point this out to him, however.)

The customer service representative, as always, tried to convince me that the problem is with me and my apartment. He had me power-cycle the modem again. He asked about DSL filters. He suggested that I reboot my PC. I repeated that none of my devices work, and importantly, the DSL light is red, so how can it be my devices! I kept suggesting to him that maybe while I was out this weekend, someone modified the wiring for another customer and accidentally broke mine in the process. Sounds reasonable and matches the symptoms. Not to the rep. Instead, he wanted me to move furniture, unplug the modem, and plug it into a different phone jack in the apartment. This led to an exchange only one of us found amusing:

- Sir, would you please find another phone jack in the apartment? We need to find which phone jack has signal.
- We know which phone jack is supposed to have signal. It's the one the modem is plugged into.
- We need to find out which jack the DSL is wired to.
- .... I've had DSL for over a year with you, and the DSL has been wired to the jack I am plugged into. Tell me, under what possible circumstances would DSL be now wired to another jack?
- There can be a number of reasons.
- Oh really? Like what?
- <Something incoherent rooted in a lack of understanding of reality>. So we have to try.
- Ok, I will try. For you. But I just want to let you know that you're wasting your time and mine.
- I appreciate that, sir.

The DSL light didn't appreciate it, however. Even sipping from another phone jack, it remained red.

So the customer service guy scheduled an appointment for me. A week from that day! I couldn't believe it! I couldn't believe that CenturyLink would let a customer sit without their service for a whole week! (And don't think that the customer service rep was just trying to get revenge for me arguing with him. I believe in the inherent goodness of people, as evidenced by myself.) In any case, CenturyLink are not a monopoly in my area. I was very tempted to cancel the service, if only out of principle.

 I called back and talked to another person who offered to move my repair date to even later, but under no circumstances earlier. I talked to a supervisor, who said the same. Finally, fuming, I simply asked for a credit for the time my service is out. They transferred me to someone who actually gave me half-price (a savings of $25/mo) for a full year! After kneeling at her altar in thanks, I asked if her awesome powers extend to moving my repair date up. Alas, that power is unattainable by mere mortals.

A week later, I received a phone call. It was a CenturyLink repairman. Turns out that in the process of wiring DSL for another customer, a previous repairman accidentally miswired my line.

No shit.

Thursday, November 29, 2012

Amtrak and my winter holidays

This holiday season, I am happy to say, I will not fly. For the second year in a row.

Last year I visited my family in Houston for Thanksgiving via a combination of bus and Amtrak. I wrote about what it's like to ride Amtrak. This year I plan to spend Christmas with my family thanks to a roundtrip Amtrak ticket.

Amtrak is significantly cheaper than airfare during the holiday season. While a plane ticket costs about $500 one way on the busiest days, Amtrak cost me only about $135 one way for the same time period.

The downside, of course, is that a trip that takes, say, six hours by plane (including going through security, waiting, delays, etc.) now takes about 24 hours.

But the upsides exist also. First, the price difference is huge. Second, you get to see some scenic sights of your country. You get a nice large window, and there's even a Viewliner -- a separate traincar with floor-to-ceiling windows where even the ceiling is mostly transparent. You get a comfortable seat, lots of legroom, nice reclinability, and! your very own power outlet! Now you can do some light [e]reading, some gaming, music listening, or even honest-to-goodness work. You can even be online by tethering to your mobile device. Since you're traveling by ground, your cell phone works normally.

I am excited about the roughly 40 hours (roundtrip) I'll spend on the train. Right now I plan to conduct a study of the quality of Verizon's 4G LTE. I am going to combine Verizon's UML290 USB modem with a GPS receiver. Using a custom program I plan to write, my laptop will continuously assess the quality of the Internet and record the result combined with the GPS location. Meanwhile I'll be free to do other stuff. After my trip, I'll plot the data using Google (or Bing?) Maps. Then we'll see how decent Verizon's LTE is, especially on the fringes of major cities.

Monday, November 19, 2012

Videos of performances

When I really enjoy any kind of musical performance, whether it's a band performing a song or a pianist performing a classical piece, I search YouTube for a video of the artist performing it. While sometimes I am fortunate (or very fortunate), most of the time there is no live performance!

That's amazing to me because, as someone who has never been good at musical instruments but always has wanted to be good, I know that if I magically acquired the skills, I'd want to shout from the rooftops and perform for everybody; just give me an excuse!

And here I see wildly talented artists, having been accepted to Magnatune or other major record labels, having highly rated audio tracks on YouTube, not capitalize on video! Teeming hordes of fans, drooling for more multimedia by their favorite artist, being turned away? What's going on here?

My best guess is that artists underestimate themselves. They believe that people only want them for their voice and sound. So they don't want to invest in a videorecording. Maybe the artists even believe that creating a videorecording makes them appear conceited. But that's not true! Fans want it! Fans want everything! Fans want audio, video, interview transcripts, bloopers, autographs, locks of hair, and favorite recipes! There are also those who want to watch the technique. While a song may be great to listen to, watching the stage presence may be twice as satisfying. A classical piece may be awesome, but you don't see the fingers flying. (Go click "very fortunate" if you haven't yet.) I've bought many songs and even whole albums either by discovering it on YouTube or by liking the song, finding it on YouTube, and being doubly impressed by the video.

Artists: you have a wonderful gift. Share it every way technology permits! And gain fans as a result!

Free hosting of Shared Usage Alerter

I just had a thought. I need access to shared/family plan account-holder credentials on various cell networks, so I can integrate my Shared Usage Alerter with every mobile provider. You need a convenient way to be alerted of upcoming overages that your kiddos will subject your wallet to.

Here's a deal you can't refuse. Allow me access to your shared/family plan, and I'll run an instance of my Shared Usage Alerter for you, indefinitely, at no charge. Your credentials will live on my Linux server, surrounded by high security. The server will retrieve your usage information nightly, analyze it, and send coaching (warnings) to you and/or the usage offenders. No more overages! Now there's no excuse! "I didn't know" will not fly anymore.

(This is a best-effort offer. It's possible that some mobile providers make it too difficult or literally impossible to collect usage statistics from their web site. Also, this offer applies only if I know [of] you.)

Sunday, November 18, 2012

Shared Usage Alerter

Cell companies (Verizon, AT&T, Sprint, T-Mobile, etc.) all offer "family plans" or "share plans" that allow multiple people to share a bucket of minutes, texts, and data. This is an interesting arrangement because as a rule, the cell companies intentionally don't provide a way to limit individual users or the account as a whole. Like banks with their overdraft fees, cell companies enjoy socking customers with overage charges.

To help address this problem, today I wrote a small Python module called Shared Usage Alerter. It's open source, and it comes with a demo program and a unit-test suite. It allows a savvy account administrator (such as a parent) to automatically determine if anyone's usage poses a red flag. The program will detect such usage and generate a warning. The warning can then be emailed to the offender and/or the account administrator.

In addition to preventing inadvertent overages, Shared Usage Alerter also watches for underutilization and notifies users if they should feel free to use more data. (This is very conservative, of course.)

This is not (yet) a push-button operation. The account administrator needs to be familiar with Python and scheduled tasks to make this thing work. The missing piece is integration with the cell phone companies. I actually do not have access to any family/share plan, so I wasn't able to write a screen-scraper for per/user utilization. If you have such access, I'd love to borrow it, with a promise not to vandalize your account. So for now, Shared Usage Alerter requires you to integrate it yourself with your mobile provider. Once you do, run it as frequently as you like. It'll generate warnings, and then you decide what to do with these. (I'd send an email or a text message using an email-to-SMS gateway.)

Finally, here's the output of the demo program:
== Scenario 1 ==
Global status (4.4 / 7.5 GB) is Ok.  Estimated usage by EOBC: 22.0 GB.
Philip the Model Citizen (used 1.0 / 2.0 GB):
        to account admin: Ok.  Est. local use by EOBC: 5.0 / 2.0 GB.
John the Hermit (used 0.1 / 2.0 GB):
        to account admin: Ok.  Est. local use by EOBC: 0.5 / 2.0 GB.
Yuri the Streamer (used 2.2 / 2.5 GB):
        to account admin: Overuse.  Est. local use by EOBC: 11.0 / 2.5 GB.
        to user: Extrapolating your usage to the end of the billing cycle, you may exceed your personal quota.  Be careful.
David the Downloader (used 1.1 / 1.0 GB):
        to account admin: Overage.  Est. local use by EOBC: 5.5 / 1.0 GB.
        to user: Please stop using data.  You've exceeded your portion.  Any additional data you use will steal from someone else's bucket or cause an overage charge that you'll be fully responsible for.

Time flows... we're approaching the end of the billing cycle, but data usage doesn't change

== Scenario 2 ==
Global status (4.4 / 7.5 GB) is Ok.  Estimated usage by EOBC: 5.5 GB.
Philip the Model Citizen (used 1.0 / 2.0 GB):
        to account admin: Underuse.  Est. local use by EOBC: 1.2 / 2.0 GB.
        to user: Rock on... feel free to use more data.  Use it or lose it.
John the Hermit (used 0.1 / 2.0 GB):
        to account admin: Underuse.  Est. local use by EOBC: 0.1 / 2.0 GB.
        to user: Rock on... feel free to use more data.  Use it or lose it.
Yuri the Streamer (used 2.2 / 2.5 GB):
        to account admin: Ok.  Est. local use by EOBC: 2.8 / 2.5 GB.
David the Downloader (used 1.1 / 1.0 GB):
        to account admin: Overage.  Est. local use by EOBC: 1.4 / 1.0 GB.
        to user: Please stop using data.  You've exceeded your portion.  Any additional data you use will steal from someone else's bucket or cause an overage charge that you'll be fully responsible for.

Friday, November 16, 2012

Emma Wallace, one of my favorite indie artists

Thanks to my lifetime Magnatune membership, I get to explore, discover, and end up owning a lot of music that I would never hear on mainstream radio. This summer I surreptitiously promoted Magnatune to my high school students by playing some of my favorite albums during non-lecture times.

Magnatune is how I discovered Emma Wallace. She has three albums published there. In her own words, she is "a maker of songs for those wearing rose-colored glasses, those who love life and happy endings." To date, I've spent probably at least 24 hours listening to her music, and it hasn't gotten old yet. Her songs flow so easily and are so catchy that I am surprised she's not much more popular than she is. I almost never care about the lyrics of songs that I like, focusing much more on the music, but even in the lyrics department Emma Wallace's songs are a hit.

Here are two YouTube videos of the live performances of two songs I particularly like:
But in my opinion her recorded versions sound much better. Magnatune lets you listen to her songs without limit, but with an audible watermark. Check her out: "A Reason to Stay Up all Night" by Emma Wallace. Enjoy!

Tuesday, November 6, 2012

Marijuana legalization

It's an exciting time for marijuana legalization. Today Colorado approved marijuana use for any purpose, including recreational. No matter what side of this issue you're on, this issue is the perennial states' rights vs. federalism debate.

I have a hard time reading the populace's views on marijuana. The majority of the US is pro-legalization. Yet, Gary Johnson (the prominently pro-marijuana Libertarian candidate) got only 1.0% of the vote nationwide. Yet, today the majority of Colorado's voters are pro legalization for any purpose.

Is there anything special about Colorado? In Colorado Gary Johnson got 1.3%, which is above the national average but nothing special. Other states got a much higher percentage -- New Mexico, Montana, Wyoming, Missouri, and Arkansas being some. What's the deal here?

If you're pro-legalization, your job was to vote for Gary Johnson if you're not in a swing state. If you're in a state that always votes for a specific party, you'd be "throwing away" your vote if you vote for anyone else. This is a blessing because it lets you vote your conscience. If you're pro-marijuana, voting for a third party (and in particular Gary Johnson) was your best bet to make a difference.

I believe pot has an unfair and unfounded bad rep with the federal government. Today Colorado's stance on marijuana today directly contradicts the federal law. Colorado will need all the help they can get to make their voice "stick." Let's support them. Let's also support a similar measure in our state.

I am confident that through our collective effort, marijuana nationwide (or at least in many states) will become legal within my lifetime. Help me make it happen.

Friday, November 2, 2012


I have 180 Bitcoins ($1,920 equiv.) but nowhere to spend them. Local businesses, hear me.

Thursday, November 1, 2012

Virtual memory -- off.

Today I got tired of sometimes having to wait tens of seconds for software to get swapped in on my work PC, so I turned off virtual memory on Windows completely. Apparently others have had success with this.

This is a Windows XP machine. (My employer plans to upgrade to Windows 7 early next year.) I have 4 GB of physical RAM, and Windows is making available a total of 3.16 GB of RAM.

I stressed my system by opening Lotus Notes, Visual Studio, Simulink, Stateflow, and Rhapsody Developer with a sample project, plus the usual web browser, music player, etc. The memory usage is hovering at 65%, and switching between windows has never been faster!

This just might work out.

Wednesday, October 31, 2012


I'd love it if cell phone companies allowed me to turn off the voicemail service on my line. I don't want voicemail. I don't even want visual voicemail.

Today there are more ways than ever to get ahold of me, and voicemail is on the bottom of my list of preferences.

Plus, I don't recall the last time I got a voicemail with any more value than "Call me back." The most amazing thing to me is that there are people who believe that it's rude to call without leaving a voicemail. In 2012, I feel it's rude to leave a voicemail.

Tuesday, October 30, 2012

A plea to the Dells and HPs

Dear PC laptop manufacturers, it must suck becoming obsolete. Dell, your two-year stock chart is atrocious. HP, yours isn't much better. (Laptop manufacturers like Toshiba and Fujitsu are sufficiently diversified that I don't care about their stock for this post.)

However, Apple, which makes a laptop or two, is doing mighty swell.

What a conundrum. How could this possibly be explained? I am no CEO, but I can take a crack at it.

These days tablets are the growth market. A huge chunk of computer usage is content consumption. Watching a movie. Reading a book. Playing a game. Listening to some tunes. For these scenarios, tablets are marvelous.
But laptops retain their edge for content producers. Editing photo, video, or audio. Typing a document. Creating a presentation. Developing software. These scenarios require a decent keyboard, a precise mouse, plenty of USB ports, and decent heat dissipation. But there's something else. And it's something that no one but Apple seems to realize.

Michael and Meg, as CEOs of Dell and HP, I want you to listen and to try to understand. The examples I just listed of producing content require a large screen resolution. The larger the better. At work I use two monitors side by side in portrait mode -- and even with that, I am often desperately moving and resizing windows to make more room. The craptops that you peddle, with their standard resolution of 1366x768, are an embarrassment.

Google's 7" tablet, which I threw money at, has a resolution of 1280x800, at one-fourth the physical size of your screen. The new 10" tablet is 2560x1600 pixels, which is significantly larger than your screen, at half the size and weight. I could see myself doing real work on it.

Apple understands that laptops are for producers. A 13" screen on a MacBook Pro is 2560x1600, and a 15" screen goes all the way up to 2880x1800! I can be happy with that.

But say I have plenty of money and want a PC instead of a Mac. No one is prepared to meet the demand! Dell, HP, Lenovo, Toshiba, and probably all others max out at 1920x1080. Without any hyperbole, what choice do I have but to buy an Apple?

Whether this is due to a failure to adapt to the market, or due to a fear of investment, it's a sign of a dying industry.

I can only hope that Microsoft's Surface (running Windows 8 Pro) will have a good resolution. If it does, I plan to buy it.

If you're a PC laptop manufacturer: For the love of all that is holy, build a portable computer with a 2012-worthy resolution. Despite your fervent wishes, watching an HD movie in full-screen is not the epitome of my computing experience. Meet the demands of content producers, or die.

Monday, October 29, 2012

Book review: "Windows 8 Administration Pocket Consultant" by William Stanek

The best way to think of Stanek's Windows 8 Administration Pocket Consultant (O'Reilly Media) is to ignore the "pocket" part. At 672 pages, it's much closer to the ______ Bible end of the scale.

And true to the Bible end of the scale, this book truly covers a huge landscape in surprising detail. As I was reading through the material, I got the feeling that this is basically an offline version of Microsoft's TechNet, a vast knowledge base (among other resources) for IT professionals. In the several weeks of using Windows 8, I've perused several TechNet articles about this-or-that. I've found a similar level of thoroughness in this book, for topics ranging from generic to highly exotic.

The difference between TechNet and this book: the latter is portable, better organized, features screenshots, and provides step-by-step instructions where possible.

This leads into my only annoyance with this book. Presumably the audience is an IT professional, or at least a power user. I often feel that the author is too thorough for this audience. He leaves absolutely no room for ambiguity. For example, in Chapter 5 there's a 13-step procedure for enforcing a certain behavior for Group Policy scripts. For 11 of those steps, the author makes sure to tell you, "Tap or click OK." As another example, almost anywhere there's a possibility to save a password (such as in a wireless network security dialog), the author adds a SECURITY ALERT informing the reader that this is a poor security practice. No wonder the book is 672 pages long.

On the other hand, I marvel at the wide variety of topics that William Stanek managed to cover in only 672 pages. I found information on how to create a master image of Windows 8. I found a detailed, 19-step breakdown of the Windows 8 startup process, along with a troubleshooting guide to it. I found a good intro to Group Policy and Offline Files, in large part covering Moskowitz' authoritative Group Policy book. I found plentiful information on BitLocker. And so much more.

All in all, while I won't be carrying this book in any pocket, I appreciate it greatly. Its 16 chapters allow the reader to become truly familiar with Windows 8 administration.

(Thanks to O'Reilly Media for providing me with a free copy for review.)

Sunday, October 28, 2012

Chickpeas, Indian-style

I discovered Penzey's Spices by finding one of their catalogs on some family friends' coffee table. I immediately ordered my own. Besides bearing a multitude of spices, the catalogs also include recipes. These recipes are particularly valuable to me because they, naturally, take advantage of spices.

The latest catalog has a recipe for Chickpea Curry (Chole). Of course, I had to make it.

The appealing result:

It turned out very tasty, but very mild. In any case, it's a delicious side, appropriate with any main course. This Chickpea Curry is guest-worthy, yet simple and vegan!

If you're a fan of cooking with spices, I recommend subscribing to Penzey's Spices catalog by mail. You can also download the latest catalog from their web site.

Wednesday, October 24, 2012

A great smoothie

Tonight I made a great smoothie! It's even vegan. Here's the ingredient list:
  • 5 parts frozen strawberries
  • 3 parts baby bellpeppers, leaving the seeds in.
  • 3 parts rice milk, or as desired for consistency
  • 2 parts raw carrot
  • 1 part celery
  • 1 part pitted dates (I don't think this made a difference, but I have a package of them and wanted to put them to good use.)
(All parts are measured by volume and are very approximate. All ingredients are from Costco.)

The bellpeppers are key to this smoothie! They imparted an amazing fragrance and flavor! Costco sells these in 3-lb bags, and I use them everywhere with great results.

Please share with me any vegetarian or vegan recipe that you enjoy. I am always on the lookout.

Sunday, October 21, 2012

Navigating around Windows 8 with a keyboard

Windows 8 is out in five days, both in stores and as an online upgrade to your PC. To save you some time when you're in Windows 8 and want to navigate around using the trusty ol' keyboard, I wrote up this handy summary. Even Windows tablets will permit the use of a keyboard, so this is widely applicable.

First let's talk about what you'll see. There are three important screens. The first screen that appears once you log in is the Start Screen. The Start Screen has your live tiles, and it lists your installed programs—both Metro-style apps and desktop applications.

From the Start Screen, you can launch full-screen Metro-style Apps. This is the new style of app. You can run either one app full-screen, or two apps side-by-side. When you start a Metro-style app from the Start Screen, the app starts directly without you ever seeing the normal desktop.

Alternately, from the Start Screen you can also view the Desktop and any desktop applications you've launched atop it. Desktop applications include any program that runs on Windows 7. When you start a regular application from the Start Screen, the desktop appears and the application launches there.

Now the stage is set. How do we navigate around? For getting around in Windows, the most important key on your keyboard is the Win key, between Ctrl and Alt. In lieu of the Windows logo in any Unicode font, I'll just use "[Win]" to refer to that key.

If you want to start a new program, then from any screen...
  • [Win]: Show Start Screen.
  • [Win]+D: Show Desktop and any desktop applications running atop it. If you already have a desktop application open on your screen, this hides all open windows and displays the desktop. (Similar to the Show Desktop button in the Quick Launch bar of Windows XP and earlier.)
  • [Win]+R: Show Run window. (This also displays the Desktop.)
  • [Win]+W: Search and list apps, settings, and files.
While you're on the Start Menu or in any Metro-style app...
  •  [Win]+Z: Show App Bar. This is a bar along the bottom of the screen that displays a list of app-specific actions. This is specific to Metro-style apps and the Start Menu.
If you want to change app or PC settings, then from any screen...
  • [Win]+I: Show Settings specific to the application, as well as general to the operating system. Here access the Control Panel, Personalization, and PC Info (System Properties from previous versions of Windows).
  • [Win]+K: Show Devices.
  • [Win]+X: The God menu -- the main menu for a power user. If you get tired of the modern synergistic Metro 2.0 paradigm, this is your blanket and cup of cocoa.
From the Start Screen:
  • Esc: Return to the previous screen. This may be a Metro-style app, or it may be your desktop with any number of desktop applications.
Here are some less-useful shortcuts. Don't bother memorizing these. From any screen:
  • [Win]+Tab: Switch between applications. This is very much like the Alt+Tab that you're used to, except it has a different appearance and treats everything atop of the Desktop as one item. If you have three Windows applications running atop your Desktop, [Win]+Tab will either switch to the whole set or switch to another full-screen Metro-style app.
  • [Win]+C: Show Charms Menu and the clock. For a keyboard user, the Charms Menu just introduces a middleman between you and Start Screen ([Win]), search ([Win]+R), settings ([Win]+I), devices ([Win]+K), and Share ([Win]+S). I think it's intended for touch operation, where you would open the Charms Menu by swiping the right edge of the screen.
Now you're set!

Friday, October 19, 2012


The flags are at half-mast again today. I listen to NPR daily, follow a multitude of blogs, and just visited npr.org. No major tragedies as far as the eye can see. Maybe the nation is mourning because Texas State Fair's "Big Tex" was destroyed by a blaze. Or are we mourning because it's such a boring day?

Now I wonder if there's a national clearinghouse for flag owners to call in every morning and see whether to lower that flag that day. There must be, as they're always in sync. Or are the flagpoles motorized these days and synchronized by radio waves? Maybe WWVB, the NIST time signal radio station out in Ft. Collins that synchronizes everyone's atomic clocks, embeds a "flag is at half-mast today" bit into its transmissions.

I want to own a giant flag just so I never lower it.

Tuesday, October 16, 2012

Book review: "Windows 8: Out of the Box" by Mike Halsey; O'Reilly Media

My background
My first version of Windows was 3.1 at my middle school. I remember launching Accelerated Reader from Program Manager. I remember mainstream programs that would launch as a full-screen DOS windows. I also remember playing video games by shutting down Windows into MS-DOS mode, and launching the game from there. (It allowed the game to run faster, you understand.)

I didn't have a mentor to explain how to use a computer. I was the first in my family to use a computer, and I had no friends to consult. My first guide was Windows for Dummies by Andy Rathbone. That's right—we didn't need to specify the version number back then. At the time there weren't many versions to choose from. This book taught me to go from DOS to Windows and back, explained Program Manager, discussed what wallpapers are, and even listed some fun shareware like a pair of eyes following your cursor. I couldn't have asked for a better guide.

It may well be that Mike Halsey's Windows 8: Out of the Box will serve the same role to some 11-year-old. I asked my inner 11-year-old to see how it stacks up for a Windows newbie.

Exploring Windows 8

There is a new style of program in Windows 8... called an App.
In the first chapter, the book does a good job of both explaining the differences from previous versions of Windows and of not assuming any previous knowledge of Windows. We learn how to start Windows, navigate around, start apps, and shut down. The author takes the time to name each new component, such as the Charms menu, as well as to discuss how to navigate in the way convenient to you, whether you prefer the mouse, the keyboard, or touch.

Chapters 2, 3, 5, 6, and 10 go into functionality that casual users will want. The author starts with email and the Internet, proceeds to file sharing, and discusses how to watch and listen to videos and music, viewing and editing photos and videos, and setting up protection against malware and age-inappropriate content. These sections give a nice tour of the Metro-style Apps that come with Windows 8, as well as new control panel functionality.

Chapters 4 and 9 go into the specifics of App, desktop application, and how to find, use, and organize both.

A missing piece
The one area that I feel should've been discussed but wasn't is how to shop for Windows 8 hardware devices. With brand-new desktop PCs and tablets running a mix of Windows 8, Windows 8 Pro, and Windows 8 RT, millions of consumers will soon need to decide what device to buy, and the decision is more difficult than ever. Even if you're set on a Windows device, you now have to consider these factors: what form-factor you want, where you plan to use it (such as home vs. work), what applications you want to run, whether you want touch functionality on a desktop PC, what screen resolution you need (since today's Windows tablets have a lower resolution than desktop monitors), and so on.

I strongly recommend researching this before committing to any brand-new Windows device.

Timeless advice
Criminals will try and trick you into installing malware/viruses; do not click/touch things casually.
Writing a book for a newbie carries with it some responsibility. After a while the newbie knows enough to be dangerous and puts down his books. A book like this is the best place to educate casual users about pitfalls of computing and the Internet. Mike Halsey does this admirably.

In Chapters 10, 11, and 12, the author discusses the tools that Windows provides to help protect you from data loss (through backups), malware, phishing, age-inappropriate content, and weak passwords (through picture passwords). More importantly, Mr. Halsey teaches common-sense ways to compute safely, such as to be wary of attachments and to keep backups. Many books skip these sections because heeding this advice is a chore; it's work. But it's also an investment, and it's so important that it belongs nowhere like it does in a person's first computing book.

One criticism I have is that the author doesn't justify creating a separate account for each person beyond that it separates files and Internet favorites. This sounds more like an organizational convenience than a true security benefit. Similarly, there is no discussion on account privileges, such as administrator vs. regular user. Maybe the author deemed it too advanced for people starting out with Windows. The rule of "separate accounts means separate files" is a big simplification, but in the absence of understanding file permissions, it works.

The author's style
Mr. Halsey does not editorialize. Any long-time Windows user has strong opinions about how Windows should work, and I am sure the author is no exception. But he keeps it to himself. He goes with the flow. Sure, he could point out that many people consider it very limiting that Apps can be displayed only two at a time without overlap. He could argue that it's unfriendly that the only way to get Apps is through the Windows Store. He could make the point that the idea of Apps and applications coexisting will take some getting used to. Windows 8 can easily be turned into a punching bag—and has by many critics. While this would endear him to many readers, it's not what he wants his book to be.

The 11-year-old who learned computing through Windows for Dummies doesn't care how things used to be and how you think they should be. All that's important is how things are and how to take the most advantage of it.

My recommendation
Despite hungrily following blogs and news about, and reviews of, Windows 8, I learned quite a bit from Windows 8: Out of the Box. It was like sitting down with an expert and taking a guided tour, learning smoothly and quickly the terminology, keyboard shortcuts, and new, cool, and useful features.

For the price ($3 for ebook, $10 for paper book, $11 for both), I recommend this book without hesitation to anyone planning to use Windows 8 on your, your friend's, your school's, or your work's computer or tablet. It'll give you enough to become immediately productive without taking your valuable time discussing optional niceties like file permissions.

But do research what version of Windows 8 you want before buying it. You've been warned.

(Thanks to O'Reilly Media for providing me with a copy of the ebook for review.)

My pessimism on Microsoft

I fooled you, didn't I, with my frequent posts about how excited I am about Windows 8? I might give the impression that I stand in line for a new operating system release, have a collection of Windows Phones, one for each day of the week, and firmly believe that Microsoft can do no wrong. Well, the joke's on you. I believe Microsoft is in trouble. Others explain much more eloquently than me, so here are some pointers.

First is Casey Muratori's well-founded plea to Microsoft to open distribution of Windows apps. It's a great read both for business people and for software developers.

Second is Microsoft's pricing of the upcoming Slate tablet running Windows RT. "Microsoft Surface Pricing Goes Toe-to-Toe With Apple iPad". I believe this is a big mistake. This holiday season, would you spend the same amount of money on the latest (third generation) Apple iPad or the first-generation Microsoft Slate?

The iPad offers a gigantic collection of polished, curated, and well-known apps. It offers the integration with your other iOS devices that Mac owners have come to rely on. It offers the sexiness factor. Everybody who's anybody has one.

The Slate, meanwhile, is a first-generation device, undoubtedly with warts, with a miniscule collection of apps, and with few developers rushing to fill the app shelves. It offers integration with... your Windows 8 desktop, which neither you nor your friends have. Windows 8 or Windows RT are not sexy. Yet, anyway.

Of course, this dilemma assumes a $500 tablet is even anywhere on your horizon. There are plenty of cheaper yet quality Android-based tablets, including Google's Nexus 7 for a measly $200. And Apple is planning to release an iPad Mini priced starting at $250. Microsoft is entering the red-hot tablet market with a first-generation device, ecosystem, and demand—at the premium market leader's price point.

I would love for Microsoft to succeed in their endeavors. I appreciate and respect their technologies and innovation. But given my concerns, I am long-term pessimistic on Microsoft. With today's share price being $29.47, I bought a January put option on MSFT with the $30 strike price. This profits me if after the holiday season Microsoft's stock is below $28.37/share. (My pessimism is more long-term than January, but post-holiday season is a good checkpoint.)


This is not a political post. I don't know the details of Romney's Tax Plan nor do I really care to know those details. What I do care about is the awesomeness of http://www.romneytaxplan.com.

This site isn't on the fringe; it was paid for by the Democratic National Committee. It's as close to "Paid for by Barack Obama" as one can get.

Sure, you could argue that it's a strawman and that the issue is much more complex than the webpage makes it out to be. Education is important for the democratic process. At the same time, this is a step toward making politics more accessible. It's taking a complex idea and boiling it down to the very basics. Bam, in 3 seconds it conveys an important message. It's the new political comic. I hear brevity is the soul of wit. This is one of the wittiest political commentaries I've seen.

Monday, October 15, 2012

Software compatibility with Windows 8

One of my clients, a local private school, runs Windows XP on its PCs. I am planning an upgrade to either Windows 7 or Windows 8, with the latter being more likely.

I've installed the 90-day Windows 8 Enterprise Evaluation in VirtualBox to test compatibility with software that my client, a local private school, uses. I want to share the list with you in case you're considering upgrading and worry about compatibility. The list I tested should cover the majority of users.

Software that appears to work without any issues
Software with minor issues
  •  Inkscape The installer took much longer than normal, but the program itself appears to work fine.
  • 7-Zip 9.20. I cannot create file associations to 7-Zip within the application. Selecting extensions and clicking Apply doesn't seem to create associations. (This is a problem also on Windows 7.) One way to open archives within 7-Zip is to open 7-Zip first, then to browse to the file within 7-Zip's built-in file browser. Also, there is no 7-Zip context menu, despite the option being checked.
Software that's incompatible
  • Fortres Grand' Clean Slate 6.5 build 3319. The installer pops up two error messages: "Error retrieving StorageType" followed by "Error retrieving StorageInfo" and gives up.  I emailed Fortres Grand about it. This is most likely an easy fix that I expect to see in the next minor release.
Discoveries and surprises
  •  Windows 8 does not permit Firefox to set itself as the default browser without the user confirming this choice within the operating system's Defaults window. On one hand it smells of Microsoft making it more difficult to switch away from Internet Explorer as the default browser, reminding me of the antitrust issues in the late '90s. On the other hand, it's nice that applications cannot willy-nilly change defaults without going through the proper channel and user interaction.
  • The new Start menu (with live tiles) prominently displays stuff that's not relevant for me, such as Maps, SkyDrive, Weather, and other apps that came with Windows. Stuff I installed myself is off-screen, requiring me to scroll to the right to view it. The discovery: if you know what you want, just start typing. Just like in the Windows 7 start menu, all programs that match your substring will jump out. No scrolling needed. You can also remove the tiles you don't plan to use by right-clicking them, freeing up space for ones you will.
  • For Java support inside a browser, install Java Runtime Environment 32-bit even if you're running on the 64-bit version of Windows. This is because both Firefox and Internet Explorer run as a 32-bit process, so they don't see the 64-bit Java. Windows 7 offered Internet Explorer in both 32-bit and 64-bit versions (selectable in the Start menu), but I don't see the same selection on Windows 8.

Thursday, October 11, 2012

Law analysis of 99 Problems

Thanks to the blog Cheap Talk, I found a great research paper: Jay-Z's 99 Problems, Verse 2: A Close Reading with Fourth Amendment Guidance for Cops and Perps. At just 19 pages, it's a brief yet informative read for everyone concerned with personal rights, privacy, and due process.

Friday, October 5, 2012

Wolfram|Alpha now solves free-form questions

John has 3 cookies more than Bill. Bill has half as many cookies as John. How many cookies does John have?
Everyone remembers a time in school when they were solving these problems by the pageful. For me this was less than 20 years ago.

Today, Wolfram|Alpha has support for answering these questions! It's an incredible development. (If you know about Wolfram|Alpha, you know this is merely the icing on the cake.) How many technologies have to be perfected and integrated for Wolfram|Alpha to exist? Off the top of my head, I can think of natural language processing (NLP), computer algebra system (CAS), and chemical, physical, astronomical, and other databases.

To me, Wolfram|Alpha is one of the marvels of our time. Give it a try, and be amazed.

Sunday, September 30, 2012

Minimum wage - to the roof!

The higher the minimum wage, the more profitable it is to automate jobs. Demand for automation helps hardware people, software people, system integration people, IT people, etc.

As a libertarian, I am against the concept of minimum wage.
As a software engineer, I am for raising it.

Saturday, September 29, 2012

RealCalc app for Android

Were you fortunate enough to learn Reverse Polish Notation (RPN) in high school or in college? I learned RPN in high school, for University Interscholastic League competitions. RPN is a more powerful and more predictable method of inputting expressions into a calculator. Imagine: no more parentheses, no more memory add/recall, and the ability to solve equations of arbitrary complexity in one fell swoop!

Very few handheld calculators support RPN, so it was difficult to dip your toes into RPN to see if you like it. Today it's easier than ever! Android has an app called RealCalc that allows both regular way of entering expressions and RPN! Beyond supporting RPN, it also has a nice list of constants and conversions for many disciplines (such as gravitational constant, Avogadro's number, elementary charge, and many more), and it's even aesthetically pleasing. And today only, it's on sale for just 25¢!

Give it a chance. It opens new horizons, and it makes using a calculator fun!

Sunday, September 23, 2012

My thoughts on Facebook

There are two reasons I closed my Facebook account. The main reason is that I don't even have most of my current friends on Facebook. We use Google+ or just instant messaging / texting. For instant messaging, I find that having an XMPP (Jabber, Google Talk) and an AIM account covers all my bases. You can find me on XMPP at pmw@qnan.org.

Second, I don't like how Facebook mixes one's wall with ads. Here's a normal update from a friend. Now here's "Your friend likes Megacorp Inc." followed by some inane update from Megacorp Inc that I couldn't care less about. A sweepstakes? A contest? A sale on something that's completely irrelevant to me? Not interested. The ads are both on desktop and mobile editions.

What's Facebook's value-add? It helps people find each other, to stay in touch, and to coordinate events. As an online identity management service, Facebook also makes it convenient to identify yourself to other sites.

I am in the minority in that I don't need Facebook to help people find me. Enter my name into any search engine, and my web site will be on the first page. My web site lists all the ways you can get in touch with me, and links to my social media. As far as events, I never liked Facebook for this purpose. Sure, it's convenient, but it's also a walled garden. I am partial to email-based invitations, with Meetup.com making it convenient.

As far as identifying yourself to other sites through your Facebook account, I believe that's a dangerous practice if you can fathom ever parting ways from Facebook. Now instead of parting ways from Facebook, you'd be parting ways from all the accounts that know your Facebook identity. You're putting all your eggs in one basket. Just say no. Isn't online independence valuable to you? Do you really want to be beholden to Facebook forever? I create a separate accounts on each site, and keep track of them all using KeePass, an encrypted password wallet. I share it between my desktop, my laptop, and my smartphone, so I always have all my passwords securely available.

I also use OpenID for sites that support it. OpenID is a decentralized single-signon based on open standards and supported by many sites. My provider of choice is StackExchange, but many other large sites can serve as free providers, including Yahoo and Google (I think). In my experience more sites support OpenID than Facebook for creating accounts.

All in all, I think Facebook serves its users very well. No doubt it's a revolutionary service, and it's always had to find and recalibrate the sweet spot between making "social" convenient and accessible vs. over-sharing. I think it's done well on that front. It has committed to remaining free, and the ads aren't all that onerous.

But my biggest concern is that Facebook tries to obsolete the Internet's openness. The Internet is based on open, decentralized standards which don't allow any one entity to have too much control.

There is no monopoly on email. Gmail is so good that most people have a Gmail account, but anyone can email anyone whether they use Gmail or not. That's openness. If an email provider goes down, it doesn't bring down anyone else. There is no one chokepoint through which all communication goes, monitoring, logging, and analyzing your traffic. That's decentralization. Does Facebook's internal email system have any of these benefits?

There is no monopoly on instant messaging. Google Talk is so good that most people have a Google Talk account, but (did you know?) you can communicate over Google Talk with anyone else who uses XMPP, whether they use Google for this or not. For example, on Google Talk you can add my identity, pmw@qnan.org, to your buddy list, and voila! That's decentralization. That's openness. XMPP even implements encryption. Does Facebook's instant messenger have any of these benefits? (Note: Facebook does allow the use of XMPP to chat with your friends outside of Facebook, but it's not federated: you cannot chat with anyone other than your online Facebook friends, and it's very much centralized.)

There is no monopoly on updates from friends. Many of you read this blog through a service or a program that uses this blog's RSS or Atom feed to "instantly" tell you that a new post is available. Google Reader is so good that many of you use this, but RSS/Atom feeds are open standards. You can use any program or service for this, and many exist. In fact, these allow you to have a "wall" of sorts with latest posts from people you care about. I have a "wall" of posts from journalists, economists, technologists, and friends whose blogs I follow. But it's all open and decentralized! As a result, almost all sites that have updates provide RSS/Atom feeds. Check NPR. Check your favorite web site. Check your own blog. (In Firefox, right-click the webpage, go to View Page Info, and see if there's a Feeds section at the top.) Could I follow your Facebook status updates with the same system? No, because Facebook doesn't make these available. There's technically nothing stopping them, but they want to keep it a walled garden.

All in all, Facebook sees open standards and decentralization a threat. Its business model is to have everything about you depend on it, and this is in conflict with what the Internet is all about! Facebook's goal is for the Internet to equate to Facebook. To me, that's not a utopia. It is my firm belief that the less people depend on Facebook, the healthier the Internet will remain.

To kick it old-school, why don't you send me a message outside of Facebook? I really want to hear from you! Post a comment here, add me to your Google Talk / Jabber account, send me an email, or heck, call me! We are still in control of this big thing called the Internet.

Sunday, September 9, 2012

Avis is a spammer

I received two emails, one day apart, from "Avis News Center." That's Avis, the car rental company. The emails were unsolicited. From the email address it became clear that Avis buys bulk email lists from the scum of earth—those who crawl web sites and collect every email address they stumble onto.

Here's a copy of the Avis spam email.

Spread the word: don't give Avis your business. There are more ethical car rental companies out there.

Saturday, September 8, 2012

Personal experience with Windows 8

I've read a lot of online reviews of Windows 8. At best, reviews of Windows 8 are cautiously optimistic; at worst, foaming with hatred.

Now, finally, I've had a chance to try Windows 8 for myself. I must say, it's not revolutionary -- and that's a good thing. Windows 8 makes total sense once you think of the live tiles screen as a larger (full-screen) Start menu. Each tile is a Start menu entry. Except dynamic.

What's the purpose of the Desktop anyway but to hold shortcuts to your commonly-used programs, and to show a cute wallpaper? I know you don't store documents on your desktop, because documents go into My Documents. So you're using a full-screen Desktop to hold your shortcuts. Well, now your shortcuts are on a full-screen tile grid rather than the Desktop, with the bonus that each program can provide you dynamic information. Nice.

To continue the parallel, once you're at the (old-style) Desktop, you can return to live tiles by clicking on where the Start button used to be.

There is now also a new type of application: Metro-style. This application is written to take advantage of multi-touch inputs and the concept of live tiles. For now I am unclear if those two are the only differences between Metro-style applications and regular WPF/XAML applications that are compatible with Windows XP onward.

Windows 8's window management of Metro-style applications is causing some gripes for now. You can have either one full-screen or two side-by-side Metro-style apps. That's it. Then again, considering Metro-style apps are designed for tablets, having two apps side-by-side is revolutionary. On a 27" monitor, however, the limitation becomes more apparent.

Long term, I believe Windows will continue supporting old-style desktop applications for many years to come, but Microsoft wants the tablet interface (the Metro paradigm) to be the default for new applications. Microsoft's vision is for every modern application to be multi-touch equipped, and to be easily portable to any form-factor. I fully support this, and this may well set Microsoft apart from Apple's and Google's platform offerings.

The next few years promise to be exciting!

Saturday, August 25, 2012

Windows 8

I do not yet run Windows 8. It hasn't been released to retail yet. Though it is available on MSDN and TechNet, I am not a subscriber to either.

I do, however, read everything I can about it, thanks to following many tech sites. I've come to the conclusion that Windows 8 is unconditionally better than Windows 7. Why?

For system administrators and power users, there's TechNet's "Explore Windows 8". It's quite an impressive list.

For power users and regular users, there's a great recent article, Windows 8 productivity: Who moved my cheese? Oh, there it is. It explains the most likely hurdles a new user will face, how to easily overcome them, and what new features Windows 8 offers to make day-to-day work easier.

Oh, there's also the small matter of unification between Windows 8 (on the desktop), Windows 8 Phone, and Windows RT for tablets. It's Microsoft's goal that new apps1 run on all three platforms! How amazing would it be to run the same app on any form-factor?

There has been a lot of interest in running Android on the desktop. People want the unification of apps and settings between their Android phone, tablet, and the desktop. I've not heard of anyone actually running Android as their primary operating system, however. Maybe it's that Android runs only Android apps—and Android apps have always been designed for a certain form-factor. Are there any Android apps that benefit from a 1920x1200 monitor? Probably not.

Similarly, iOS mobile apps cannot run on MacOS X.

Today's Windows landscape, however, would allow developers to create apps that, without any modification, can run on devices ranging from a smartphone to a powerful desktop machine with multiple giant monitors. Microsoft would be a first2 to make this unification a reality.

Devices and availability:
  • October 26th: Windows 8 for the desktop becomes available for all. Anyone running Windows XP or above can upgrade for $39.99.
  • Windows Surface: expected to be the first tablet running Windows RT. It's developed directly by Microsoft.
  • Windows Surface's release date is uncertain, but Engadget expects it on October 26th for as low as $199.
  • Lenovo, HP, Dell, and Samsung are also planning to launch their own tablets running Windows RT.
  • AT&T already offers at least one smartphone running Windows Phone 8, while Verizon, Sprint, and T-Mobile are preparing to launch them this year. Nokia Lumia 900, a WP8 handset on AT&T, has very positive reviews.
While iOS and Android are today's media darlings, let's not ignore Windows just yet. The triumvirate of Windows 8, Windows 8 Phone, and Windows RT has a lot of potential.

1 Metro-style, with certain limitations
2 May I ignore Java?

Friday, August 17, 2012


Overheard at work:
- Hmm, I have a troyan?
- That's troJan.  For trojan horse.
- What the hell is a trojan horse?
- You know what a trojan horse is, don't you?
- It's something from the gothic days, isn't it?
- You don't even know what a trojan horse is?
- Isn't it something that they worshipped?
- No!
- Oh, didn't they use trojan papers to smoke marijuana?
Now I want to never put my headphones back on.

Thursday, August 16, 2012

Android 4.0 on older hardware

Unlike a PC, cell phone hardware is very proprietary and differs widely between handsets. While it's possible to install Windows 7 or Fedora Linux on any PC, it's not possible to simply download and install Android Jelly Bean on an arbitrary handset. You're relying on the kindness of both the manufacturer and your carrier to provide updates specific to your handset. Yet traditionally, manufacturers and carriers refuse to release Android updates for existing handsets. There's usually no technical limitation for this; they just prefer that you buy a new handset and renew your contract, while blaming each other for the lack of support.

One of Virgin Mobile's top-tier Android handsets is the Motorola Triumph. (It's the first time I've seen the ™ character in a URL.) It's the phone I use. This phone was released in June 2011—a bit over a year ago. They still offer it online and in stores; today it's listed online for $229, after a $50 rebate. (These days you can snag it on eBay for just about $70.) It came with Android 2.2 (Froyo), and that's the official version to this day! Motorola+Virgin ignored Android 2.3, Android 4.0, and now Android 4.1.

However, thanks to the hard work of the developer community, I now run Android 4.0.4 on it. This is a volunteer effort to integrate the new releases of the open source Android operating system with existing hardware. These developers breathe new life into existing hardware; this deserves my admiration and support. (I donated to the project.)

The phone's hardware remains powerful enough to run this version quickly and smoothly. The only downside that affects me is that the camera doesn't work yet. Supposedly HDMI doesn't work either. But everything else appears to work!

This is one of the reasons that I went with and remain with Android, rather than iOS or Windows Phone. All three are very capable mobile operating systems, but Android is unique in that it's open source and very well supported both by Google and by outside developers. It reminds me of the developer friendliness of WebOS. (Does anyone still remember it?)

If you have a Motorola Triumph, I recommend the MT-DEV CM9 ROM, which gives you Android 4.0.4. Flashing the ROM is very straightforward; I've already flashed a new version of Android onto my phone no fewer than three times without any issues.

For $70 one time plus $30/mo, you can end up with a great phone running Android Ice Cream Sandwich (or Gingerbread with a working camera; take your pick), 300 voice minutes per month, unlimited texting, and 2.5 GB/mo of Sprint's 3G data—all with no contract.

Friday, August 10, 2012

Smart Ass Cripple

I am vacationing along the US west coast, but I need to take the time to recommend the blog of Smart Ass Cripple, a man writing about the trials and tribulations of being crippled. This blog originally came to me by way of Roger Ebert, whose blog I also follow and read.

Thursday, July 26, 2012

A great experience with CenturyLink

I've read many horror stories on The Consumerist about customer experiences with ISPs, in particular Verizon and Comcast. I've not read any about Qwest/CenturyLink, though I am sure they exist. In my case, however, they exceeded all my (low) expectations.

I started running a backup server at my apartment for my Moonlit Consulting clients. For this to work, I needed faster speeds than 1.5 Mbps down / 768 Kbps up. So I called CenturyLink.

First, CenturyLink surprised me with how reasonable their rates are. While I was paying $40/mo for the aforementioned slow speeds, they actually offer 7 Mbps down / 5 Mbps up—a five-fold upgrade—for only $10/mo more. So I signed up.

Second, CenturyLink offers the choice of buying or renting the modem. While some companies (cable companies in particular) require customers to rent the equipment, CenturyLink offers the modem for only $100—comparable to retail prices, without the huge markup I was expecting. So I bought it.

Third, the provisioning went without a hitch. My modem shipped on time, I received it a day sooner than promised, and my new speeds went into effect before I even woke up on the day promised.

Last, the actual speed is even better than advertised, as checked with Speedtest.

Thanks, CenturyLink. That's the way to make lifelong customers!

Saturday, July 21, 2012

A naming overhaul

In my lifetime, I expect us to overhaul the way we refer to people, at least in writing. In a book I am reading, I just read the following sentence and laughed:
Michael Jackson has developed a systematic theory of requirements called "problem frames" that explains how to structure and reason about software development problems that involve interaction between a system and its environment.
Michael Jackson must've developed this theory between his album Dangerous and becoming busy with his child abuse allegations.

Unless it's not the same Michael, son-of-Jack.

But surely there cannot be two of those... Granted, there are many Michaels, but the author of the book disambiguated him for us by clarifying he's Jack's son!

The current naming scheme doesn't appear to be sustainable. Or rather it is, but for only shallow and trivial tasks.
  • "Michael, want to go to the movies?" as asked by a friend — sustainable.
  • "Michael Jackson, are you present in the classroom?" — sustainable.
  • "Michael Jackson needs to start receiving social security benefits." — not sustainable. Google search results are eclipsed by the artist, not the researcher.
Heck, there are two Philip Whites at my company. Both of us have one L in our first name. Our middle initials are different, thankfully, but we still get each other's mail, email, and instant messages.

And with inevitable globalization, the number of people we know of and who might share someone else's name continues to rise.

The Social Security Administration (and every other organization that conducts business) have known about this problem for a long time. That's why we have a slew of identification numbers: a Social Security number, a driver license number, a passport number, a university / school ID number, an employee ID number, etc. Is that our future? Is a book from 2033 going to read, "Michael Jackson, SSN# 142234221, has developed..."?

I believe the most likely outcome to be short URLs. A URL can point at a social media page like my Facebook or Google+ profile, or at a personal homepage (like mine). My homepage disambiguates me from other Philip Whites, links to my profiles on social media sites, and lets the reader contact me. It's an extended version of a business card.

The ideal solution might be a service similar to tinyurl, specializing in mapping IDs to a URL of the user's choice, and allowing the owner to change the URL at any time. (The equivalent of a CNAME in DNS.) If a responsible, long-term company starts this, we could include those IDs alongside a name. Its owner would choose whether to send visitors to the owner's homepage, or to a Facebook profile, or wherever else.

Friday, July 20, 2012

Wiping gym equipment

At the gym, there's a social contract that once you're done with a machine, you're supposed to wipe it down with a towel and a disinfectant solution.

I'd love it if this social contract disappeared.

All else being equal, it would be exactly the same amount of work for a person to clean a machine just before using it, rather than just after. But there are additional benefits from cleaning the machine before using it.

For one, you would not be counting on the stranger who came before you to have fulfilled his part. Plenty of people forget or don't bother to clean their machines. Now to be sure, you have to clean your machine twice: once before, once after your workout.

Second, some people (including me) do not care whether a machine is cleaned ahead of time. I don't think U-Iowa students are all that disgusting; a little sweat (which has evaporated a long time ago anyway) has never hurt anyone. (Has it?) So, the stranger who came before me wasted his or her time.

Third, some people want to switch off with you between your sets. Then there's the scripted exchange where I get the spray bottle and make like I'm about to spray the machine, and the person generously stops me and saves me the effort, implying "Don't be silly, stranger! What's a little sweat between kindred spirits who've chosen the same machine at the same time?"

Fourth, there's just something a little too pious about thoroughly spraying down a machine after yourself. If you feel the machine needs ten sprays from the bottle after your set, please stay home until the contagion passes.

Maybe Niles Crane was onto something after all.

Thursday, July 19, 2012

The many ways of programming Arduino

Arduino is arguably the most popular portable hardware development platform of the year. It's never been easier to create your own little device that scratches an itch. (Perhaps literally.) From controlling the temperature of a beer keg to unlocking your front door after a correct knock sequence, Arduino makes it possible, and best of all, cheap.

At its core, the Arduino platform offers reading analog data (0–5V) such as a temperature reading, reading and writing digital data (0 or 5V), pulse-width modulation for motors and such, and memory for your program. In essence, a typical Arduino program reads a pin (whether digital or analog), compares it to some value or a range, and writes some values to some other pins. Then repeat.

For example, suppose you have a mini-fridge that cools to 40°F, but you need to maintain 50°F, and the temperature dial doesn't go that high. (Problem courtesy of Jeremy.) Arduino to the rescue. Use the Arduino to combine a temperature sensor with a powerswitch. At a high level, your program would read the temperature from an analog pin (or a digital pin for a digital temperature sensor), then decide: if current temperature is below 48°, cut the AC power to the fridge by sending 0V to the pin that controls your powerswitch. Else, if the temperature is above 52°, re-enable the power by sending 5V. (Or whatever the manual for the powerswitch says to do.) Voila.

The programming tools I describe below support these basic operations like reading and writing pins. These operations appear either as functions or graphical "blocks" within the tool/language. So once you come up with the basic logic of what you want the Arduino to do, you can pretty much use any of these tools. The differences in the tools revolve around the programming methodology, strengths/weaknesses, and cost.
  1. Using Wiring, the official language of Arduino. It's basically C++. You can write this code in the official Arduino IDE.
  2. Using the QP Framework + QM modeler. Here, you design your software using UML Statecharts, then autogenerate code from that. It is free for non-commercial use, and surprisingly reasonably-priced for commercial use.
  3. Using the combination of LabVIEW and LabVIEW Interface for Arduino (LIFA). LabVIEW is a rather expensive ($1,200–4,500 for a single perpetual license) graphical development environment, and LIFA is a free add-on. The students in my Hardware/Systems course this summer used this programming method to develop fun Arduino projects.
  4. Using Simulink, a very expensive ($3,150, or $5,250 with MATLAB) graphical development environment.
Wiring is the most straightforward way to program your Arduino, if you have at least some experience with imperative programming. It's also the most "portable" way in that you can publish your code, and others can use it without any investment in tools.

The QP/QM method is my personal favorite. I am a big fan of software design, and I love having the implementation naturally flow out of the design. QP/QM, as I wrote earlier, makes it easy to develop complex yet maintainable and reliable software. Its reasonable price also makes it easy to move your hobby into commercial production. But, in my humble opinion QP/QM has a higher learning curve than the other methods I describe.

LabVIEW is a good introduction to programming. Its graphical ways are less intimidating than text-based programming. You have two screens, a front panel and a block diagram. The front panel has UI elements, and the block diagram expresses business logic. The business logic involves blocks, and wires that connect them. Data flows from one block to another. Blocks are either UI elements (source or sink) or programming constructs (such as arithmetic or Arduino commands). This approach makes two very important things easy:
  1. A versatile graphical user interface. More generally, it ingrains the separation of GUI and business logic.
  2. Understanding types, and type safety. (Thanks to wires and blocks of different colors.)
For a non-programmer, or a casual programmer, I believe LabVIEW offers the best mix of power and friendliness. My students this year, having no prior programming/robotics experience, developed some pretty impressive programs. The downside of LabVIEW, as I already mentioned, is pretty significant: the Arduino must be tethered to the PC at all times, since that's the only way to run LabVIEW programs on the Arduino.

I created a one-page LabVIEW Quick Start to help my students and anyone else who's exploring this route.

Finally, Simulink. I have not yet used this method of programming an Arduino. Simulink offers a similar graphical environment, with blocks and wires, except there is no user interface—only the equivalent of LabVIEW's "block diagram" for business logic. This is offset by the advantage that Simulink is able to deploy native code to the Arduino, so you can disconnect from the PC and run your Arduino on battery or AC power.

That's the overview of all the ways I know to program an Arduino device. If after reading the above you're still unsure which method to choose, here's a brief summary:
  • Are you already a programmer, or do you want to become one? If yes, start with Wiring and migrate to QP/QM once you feel comfortable.
  • Is a graphical user interface important for you? If so, use LabVIEW.
  • Do you need your Arduino to run standalone on battery or AC power? Use anything but LabVIEW.
  • Do you have money to burn? I mean, are you doing math more complex than I can think of a use for—on your Arduino? Use Simulink. (In all seriousness, I am not a Simulink user. If you know where Simulink outshines the alternatives, please comment here.)
Have fun!

That Moment™

That moment when you realize that it's not a valid sentence.

Tuesday, July 17, 2012

Friends of a Certain Age

I really appreciate this article: Friends of a Certain Age: Why Is It Hard to Make Friends Over 30?

It matches my experience. I had several "best friends," but these days it's more difficult. I have many acquaintances, but I no longer have people in my life that I have a tight bond with.

Monday, July 16, 2012

McDonalds sausage

Damn the English language. At McDonalds, I accidentally ordered a "sausage burrito and biscuit" instead of the more correct "sausage burrito and sausage biscuit." I ended up with a plain biscuit.

The sausage biscuit costs $1.00. Turns out, the plain biscuit costs $1.19. McDonalds pays you 19 cents to eat their sausage.

Gym challenge

Sue and I are leaving for the west coast in two and a half weeks. (edit: For a vacation, not permanently.) Between now and then, I've made a vow to go to the gym every day.

Vows don't tend to work for me, but this one's different: it has a definite end date.

For posterity, here are my current machine settings, at three sets of 10 reps:
  • Pull-up assist: 50 lbs
  • Dip assist: 40 lbs
  • Pec fly: 65 lbs
  • Lateral raise: 50 lbs
  • Elliptical: level 1, 1.3 mi in 15 min

These used to be much better when I had a routine in college. Andreas and I would go to the gym twice or thrice a week. The biggest difference, as I recall, was that I was able to do 30 pull-ups and dips without any assist. Andreas and I also got to the point where we could do 100 push-ups in sets of 10. I miss those days.

I am not going to waste time on leg exercises because my legs for some reason have always been sufficiently developed. I can do hip adduction at 150 lbs and abduction at about 130 lbs, and that's good enough for me.

I'll post my new machine settings on the last day of this challenge.

Wednesday, July 11, 2012


I like everything about whisky other than its taste and smell.

Does this mean I am not refined?

Monday, July 9, 2012

I am excited about Windows 8

I agree with the most recent Coding Horror article: Windows 8 is the most exciting and revolutionary version of Windows since Windows 95.

As a programmer, I am excited all the more. Microsoft has made real strides and innovations in the ease and flexibility of developing for Windows (from .NET to Expression Blend), and developing a Windows Metro app is on my to-do list.

For an IT professional, the list of Windows 8's New and Improved Features is likewise very impressive.

And at the price of $40 to upgrade from as far back as Windows XP (now 11 years old!), it should be a no-brainer.

Will you upgrade? If not, what's holding you back?