Seth Holloway's Blog

Feed Rss

TL;DR: If you see “PWAT N AUSTIN MOTO AUSTIN TX” on your statement, it’s probably Painting with a Twist (PWAT).

Looking over my credit card statement I saw “PWAT N AUSTIN MOTO AUSTIN TX” and had no idea what it was. The random words made no sense to me. To make it even more confusing, my bank was categorizing the company as “Organizations – MISC SCHOOLS / EDUCATIONAL SERVICES”

Searching for the entire string led to results that were really keyed in on “MOTO AUSTIN” for some reason, which led to a lot of dead ends (we did not pay for motorcycle lessons or rent a motorcycle!).

After more searching I realized this charge is for Painting With A Twist! With that said, Painting With A Twist is a lot of fun. Andrea and I were able to quickly create some decent looking paintings in a relaxed environment.

There are 10 types of people in this world: those who understand binary and those who don’t. 10 in base 2 (binary) is 2 in base 10 (decimal–our standard number system) because 10 = 1*2^1 + 0*2^0 = 2, so the statement means there are 2 (base 10) types of people.

Can you describe the weather? If you take this question literally, the answer is “yes.” If you read into it, your answer will describe the weather.

What’s half of 13? 6.5 is one answer, and 1 or 3 is another.

Geniuses are more likely to think differently. How do you think? How do the people you admire think?

I was recently browsing a list of programming languages on Rosetta Code (there’s a larger list on Wikipedia) and realized I have played with a lot of languages over the years. I decided to make a list here:

  1. AppleScript
  2. Assembly (I forget the exact flavors, but there have been a few embedded chips like the Motorola 6812, the LC-2 teaching language, and some in-line C on some AMD or Intel chip)
  3. AutoHotKey
  4. AWK
  5. BASIC
  6. Batch
  7. C
  8. C++
  9. CoffeeScript
  10. Objective-C
  11. Gnuplot
  12. Groovy
  13. Haskell
  14. Java
  15. JavaScript
  16. LabVIEW
  17. LaTeX
  18. LotusScript
  19. Lua
  20. Make
  21. Mathematica
  22. MATLAB
  23. MySQL
  24. Octave
  25. Pascal
  26. Perl
  27. PHP
  28. Python
  29. R
  30. Ruby
  31. Scratch
  32. Sed
  33. SQL
  34. TI-89 BASIC
  35. UNIX Shell (sh, Bash) and UNIX Pipes (grep, cat, etc)
  36. VBScript
  37. VHDL

I haven’t written extensively in all of the languages and I doubt I could do much more than ‘Hello, World!’ (if that) in most, but those are the ones that I remember.

There are a few more that I didn’t see while quickly browsing the languages list. For example, I have automated video game playing in the past using languages like UOAssist, Razor, AC Tools, and MMOGlider. One summer at Texas Instruments I wrote statistical algorithms and data mining routines for a specialized spreadsheet language called Informix Wingz/HyperScript Tools/DataPOWER (which now seems to be owned by IBM).

Looking back, I’ve written in a fair amount of languages, but there’s so much to learn and do! I continue to learn and grow as I add links to my craftsman’s chain. My next step is to complete the Programming Languages 101 online course from Nathan’s University. Very cool stuff!

Update: added Assembly and UNIX shell specifics.

Note: This post got buried and I never posted it. I haven’t played with R in several months, so I’m not sure if this works anymore.

 

This assumes you have R downloaded and installed.

Download, install, and configure GSUtil (http://code.google.com/apis/storage/docs/gsutil_install.html)

Load R. You should see an ugly console :) In the window type

install.packages(c("RCurl", "rjson"))

You will be prompted to select a mirror; find something close to you and continue.

You might be frustrated that there’s no success message:

trying URL 'http://www.revolution-computing.com/cran/bin/macosx/leopard/contrib/2.13/rjson_0.2.5.tgz'
Content type 'application/x-gzip' length 133138 bytes (130 Kb)
opened URL
==================================================
downloaded 130 Kb

The downloaded packages are in
	/var/folders/I3/I3YZ8e5tGOK9CY9LQ98ix++++TI/-Tmp-//RtmpFrtdp3/downloaded_packages

However, if you fail there will be an error message:

> install.packages("seth", dependencies = TRUE)
Warning message:
In getDependencies(pkgs, dependencies, available, lib) :
  package ‘seth’ is not available (for R version 2.13.0)
> install.packages("googlepredictionapi_0.1.tar.gz", repos=NULL, type="source")
Warning: invalid package ‘googlepredictionapi_0.1.tar.gz’
Error: ERROR: no packages specified
Warning message:
In install.packages("googlepredictionapi_0.1.tar.gz", repos = NULL,  :
  installation of package 'googlepredictionapi_0.1.tar.gz' had non-zero exit status

Download the Google Predictions API for R

https://code.google.com/p/google-prediction-api-r-client/

Install it

$ mkdir -p ~/R/library
$ mv googlepredictionapi_0.1.tar.gz ~/R/library/
$ R_LIBS_USER="~/R/library"
$ echo 'R_LIBS_USER="~/R/library"' >  $HOME/.Renviron

 

R CMD INSTALL ~/R/library/googlepredictionapi_0.1.tar.gz

Source your libraries

library(rjson)
library(RCurl)
library(googlepredictionapi)

Some useful links

http://mjaniec.blogspot.com/2011/05/google-prediction-api-v12-for-r.html

https://code.google.com/p/google-prediction-api-r-client/

http://code.google.com/p/r-google-prediction-api-v12/

http://csg.sph.umich.edu/docs/R/localpackages.html

 

 

  • Load R
    • Note: You will see an ugly console.
  • Install the pre-reqs
    • > install.packages(c(“RCurl”, “rjson”))
    • Note: If you have not installed a package from CRAN before, You will  be prompted to select a mirror; find something close to you and continue.
    • Note: A successful install will not yield a success message–it will simply not show an error message.
  • Download, install, and configure GSUtil: http://code.google.com/apis/storage/docs/gsutil_install.html
  • Download the Google Predictions API for R from https://code.google.com/p/google-prediction-api-r-client/
  • Install the plugin
    • Note: I had to do it from the command line because the install failed inside R
    • $ R CMD INSTALL your/path/to/googlepredictionapi_0.1.tar.gz
  • Now, you should be able to restart R and see the API listed in the Package Manager
  • From here we source our libraries
    • > library(rjson)
    • > library(RCurl)
    • > library(googlepredictionapi)
  • If the data is already in your Google Storage account, you can begin training the model. I do not have data in GS yet, so I’ve stopped here.

Near the end of 2011 I decided to try a vegetarian diet for a few reasons, including the fact that I don’t really care for meat, red and processed meats may cause cancer, I generally wanted to eat healthier, and it’d be nice to lower my carbon footprint. Okay, technically it was not vegetarianism, rather my diet was pescatarianism, and more accurately, flexitarianism (I’ve been largely vegetarian, but chosen to eat meat a few times–mainly when I was really hungry).  After three months, here are some observations (in no particular order):

  • Everyone has thoughts on food and diet. Many people want to understand and define your diet, and they are quick to point out when you’re inconsistent (“Sushi?! Aren’t you a vegetarian?!”). Several overweight people told me that my choice was wrong or bad.
  • A lot of people mocked vegetarianism, which is somewhat understandable because only about 1/30 people in the US are vegetarian.
  • I actually prefer veggie burgers to traditional meat patties. Veggie burgers can have better flavor and texture than meat patties. As with the old stand-by (beef), there are good and bad versions, but veggie patties have more complexity (probably because of the mixture of ingredients).
  • Most of the time it’s pretty easy to be a vegetarian; it is far harder to be a healthy vegetarian. Several times I found myself eating queso or french fries instead of a lower calorie, arguably healthier entree with lean meat. There are a lot of vegetarian options around Austin and most restaurants will provide some meatless alternative, but eating roasted veggies or a bland salad while others chow down on a scrumptious entree just sucks!
  • Sometimes it’s nearly impossible to be a vegetarian. A few places just have no vegetarian options! BBQ places may leave you eating nothing but bread–and some only have bread made with lard, so you’re left with pickles and onions. In general, ethnic food seems friendlier to the meat-averse. If you’re really disciplined you can pack your own food, skip a meal, or demand that you go somewhere else.
  • Animal derived products exist in unexpected places! For example, one of my favorite local Tex-Mex restaurants, Chuy’s, uses chicken broth in their queso. As I alluded to above, some places use lard in their bread. A lot of soups and sauces use chicken or beef stock. There’s meat or meat flavoring in beans–even traditional caesar salad dressing (anchovies). I rarely inquired as to how vegetarian food items were, choosing instead to go off my previous knowledge as well as the food’s appearance and description.
  • Meat eaters also like vegetarian meals. If you eat a family-style meal a lot of people will eat your food even though you choose not to eat theirs! For example, everyone orders a pizza (most have meat) then cheese is the first flavor finished.

That’s it for now. Did I miss something? Has anyone else experienced something different?

Joel Spoelsky’s article on what developers should know motivated me to learn a bit about Unicode characters. To explore this awesome encoding I wrote a little JavaScript to print out all the Unicode characters. It is interesting to note where you have significant gaps of blank white blocks with black borders (this shows what character sets you lack–sorry, I have not noted which set is displayed in the page). Be patient: the page takes a few seconds to run.

 

A taste of unicode

A taste of unicode

 

In the past couple months I have received numerous emails to post a link on the site. I am confused by the emails and wonder if others have received similar inquiries. Based on the emails, it seems to be coming from a single person or company who will not reveal themselves–shady!

The emails are very similar:

  • the emails refer to a post and provide a subtle compliment
  • the emails are sent from a generic name with an email address that is in the form <first name>.<last name>@gmail.com
  • the emails offer $25-$50 paid via PayPal to post a link on the site
  • the emails are asking for a link to an education site
  • the emails close with a quote from a famous person

Here are a few examples:

Hey,

I just finished reading your post , ‘Learning HTML/CSS (web design)’ and really enjoyed it!

Do you do advertising? I’m marketing out a site and can pay you via PayPal for adding a few text links to an old post. These links would go to resources on education and topics related to the theme of your post.

Let me know if we can work something out! :)

Thanks
Jasmine Racino


‘No problem can be solved by the same consciousness that created it. We need to see the world anew.’ Albert Einstein

———-

Dear Seth Holloway,
I just got done checking out your “Learning HTML/CSS (web design)” and I found it really interesting!  Do you do advertising? I’m marketing out a few sites and can pay you $50 via PayPal to add a text link into one of your older posts.  The link would go to an education site and I’d make sure the site relates to your post’s content
Thanks and let me know if we can work something out!
Amy Wong

“People ignore design that ignores people.” -Frank Chimero

———-

Dear Seth,
I just got done reading your “A RESTful smart home” and found it really interesting!  Do you do advertising?  I’m marketing out a few sites and can pay you $50 via PayPal to add a text link into one of your older posts.  The link would go to an education site and I’d make sure it relates to your post’s content.
Thanks and let me know if we can work something out!
Ann-Marie Moss

 ———-

Hey Seth,

I just finished reading your post , ‘A RESTful smart home’ and thoroughly enjoyed it! I’m marketing out a site and can pay you via PayPal for adding a few links to an old post. These links would direct readers to resources on education and topics related to the theme of your site.

Let me know if you’re interested,  I’ll be happy to answer any concerns you may have :)

Thanks
Madison

‘Nothing was ever achieved without enthusiasm.’ Ralph Waldo Emerson

I try to be courteous and reply to emails, so I replied to “Madison” who ultimately replied as “Maxine” — whoops!
Has anyone else seen similar emails? Any idea who is behind this campaign?

I have received a ton of spam comments recently! These comments are almost always nonsense with a specific link. I can only think of two reasons for posting a spam link in a comment:

  1. transferring google juice from the host site to the linked site (SEO)
  2. hoping against hope that someone will read the nonsense and click your random, bogus link.

Of the options, (1) was a viable strategy in 2006! Google nipped that in the bud because of the popularity of this technique. Now, SEO is stifled by a simple rel="nofollow" tag, which my site automatically embeds in comment links. So stop spamming!

(2) above seems like a total waste of time. Sure, finding comments sections and posting a links is functionally free, but I’d guess that only 1/100 sites allow spam comments and maybe 1/1,000 people would click on a random link. With that back-of-the-napkin math, you’d need 100,000 comments to get one click! Even then, conversion rates of 5% are considered good, so you’d need 2,000,000 comments to get one buyer. On top of that, at least half the sites with open commenting will have Akismet or a similar spam-guard. What is your time, electricity, and bandwidth worth if you’re betting on those odds? Certainly your time is better spent elsewhere. So stop spamming!

(I’d have to investigate further, but I’d guess bot-nets are being used to post comments at a very affordable rate. At worst, some script kiddies are learning computer science so they may get a nice job later.)

Am I missing something?

I presented a brief overview of JavaScript at work last week. In only 30 minutes I was not able to cover a lot, so I tried to hit the high points. While the presentation was meant to combine with my speech, others may find it useful too.

Edsger Dijkstra, one of the most influential figures in Computer Science and the most famous Computer Scientist to never own a computer, had very strong opinions on Computer Science education. He expressed his feelings in an essay titled “The Cruelty of Really Teaching Computer Science.” You can read Dijkstra’s original, hand-written note as PDF, or the transcription, or the Wikipedia page. The piece was also covered on Slashdot with lots of nice comments. Here’s an excerpt:

Needless to say, this vision of what computing science is about is not universally applauded. On the contrary, it has met widespread –and sometimes even violent– opposition from all sorts of directions. I mention as examples

(0) the mathematical guild, which would rather continue to believe that the Dream of Leibniz is an unrealistic illusion

(1) the business community, which, having been sold to the idea that computers would make life easier, is mentally unprepared to accept that they only solve the easier problems at the price of creating much harder ones

(2) the subculture of the compulsive programmer, whose ethics prescribe that one silly idea and a month of frantic coding should suffice to make him a life-long millionaire

(3) computer engineering, which would rather continue to act as if it is all only a matter of higher bit rates and more flops per second

(4) the military, who are now totally absorbed in the business of using computers to mutate billion-dollar budgets into the illusion of automatic safety

(5) all soft sciences for which computing now acts as some sort of interdisciplinary haven

(6) the educational business that feels that, if it has to teach formal mathematics to CS students, it may as well close its schools.

Between my time in industry and academia I’ve participated in tens of discussions about CS education. You wouldn’t catch me hand-writing a single-pass essay like Dijkstra, but I can agree with academic’s long-term view that theory will allow students to understand and apply concepts throughout their career. I also understand the industry desire for real skills (like Java or C, for example) that would allow new employees to hit the ground running. This debate will continue, but I think the state of education is going to change very soon–particularly due to the rise of developeronomics.

What do you think? Is CS education valuable? Who is doing it well? How could we improve? If schools are failing, how can students augment their curriculum?