Software Art Thread

Three great links to two artists (Aaron Koblin and Daniel Alfonso Massey) and one project of thousands.

Created at 2009-03-17 12:19:22 UTC Permalink
Flickr as a photography portfolio

I Hardly Know Her (witty!) is a Flickr viewer. It approaches the problem I'm asked about often: How do I make a photography album online if I'm a professional photographer? Well, I got mines, now it's time to make yours. I'm working on the details.

Created at 2009-03-01 20:23:38 UTC Permalink
Flickr Ruby API client

Interesting. Yahoo's page on API clients results in a set of three that are written in the Ruby language. Like most web "API" libraries, I click on all of them and figure out the pieces later.

Results!

  1. FAIL!
  2. ALPHA!
  3. BETA!

Well then. Let's try the beta...

Created at 2009-02-26 23:09:37 UTC Permalink
Sounds and Emotions Radio

Sounds and Emotions is a pretty good radio show put on weekly by Nico Bogaerts in Brussels. Their tag line is "Experimental music for experimental people". Unfortunately, their distribution format is 180 degrees from "experimental". It's quite conservative and restrictive, limiting their distribution using format obsfucation. Since I like their show so much, I have composed a script to use mplayer to save a copy of the streaming mp3 to disk. I'll be uploading them weekly to a drop, as I listen to them. The script is also present in the drop, if you are so inclined to rock the steez yourself.

Discover Simple, Private Sharing at Drop.io

Created at 2009-02-24 14:47:40 UTC Permalink
Shitfone Logo

Created at 2009-02-23 00:47:55 UTC Permalink
Misspelling Generator another good idea, another failure

Misspelling Generator is amazing...in concept. In the long line of cool conceptual concepts that have unintended consequences, Erik Borra and Linda Hilflings's Firefox plugin claims to intercept searches to Google and generate a set of misspelled terms based on your proper terms. Cool concept, but a bit of an implementation fail from all ends. In the 10 times I used it, every time I used more than one term it would crash firefox because the script took too long. After these 10 uses, the public wifi network I was on mysteriously began reporting that all my search terms were blocked because it was suspected that I was a robot trying to abuse Google.

In summary, this software is a failure because it literally fails to evaluate (or halt, I'm not sure which), then it submits a false positive to it's far-end. Like ABSML, its a good idea with a bad execution.

Created at 2009-02-22 22:57:03 UTC Permalink
Shitfone meme continues

Miss Heather has been very nice with our little dialog. But wait! There's more shitfones being documented. This one is pretty amazing, though the Queens shitfone wins, literally.

Created at 2009-02-10 23:37:14 UTC Permalink
Sh*tfone. "make the call"

FOR IMMEDIATE RELEASE

Sh*tfone. "make the call"

Much like a mountain, shitfone has features. Also like a mountain, you are not in control of these features. You can only set out on an adventurous expedition of shitfone's features. Call. Experience. Grow.

shitfone is inspired. Using cutting edge new media web sites, shitfone gets it inspiration from it's users, like you. shitfone's features were created in it's user's likeness.

Shitfone is inspired by Miss Heather's New York Shitty Monologue Machine series.

Shitfone will have desktop software available in the spring of 2009.

Created at 2009-02-07 21:59:26 UTC Permalink
Proxying Strophe to Nginx to Ejabberd via a BOSH cluster.

Wow! How many words did I just use up there? Too many. But they all have meanings. BOSH is the latest-greatest method of using a stateless protocol, like HTTP to keep a connection open to a stateful protocol, like XMPP. Jack Moffitt has written the most useful information on the web on this subject. But even with a complete description of how to pull off this "hack" there's always something that can sneak up on me. Here's my architecture right now.

Client (strophe) --> Nginx (rr balancer)--> ejabberd cluster (mod_http_bind)

Simple enough, and pretty much documented by Mr Moffitt. BUT WAIT! After deploying this to staging, user testing produced some very strange results. About 1 in 5 connectionswould be one way. I'd see you log in but you couldn't see my words. Bizarre, and usually the result of an inconsistant state. After a day of reading, drawing and poking around I discovered what I believe to be the source. The Mnesia database table for http_bind. I forgot to configure the database table to be shared across all nodes in the cluster. So I believe that each node had their own database for http_bind connections, which would explain the inconsistant yet unpredictable state.

Created at 2009-02-06 20:18:10 UTC Permalink
More on ABSML

Exactly what I thought, ABSML attacks the hard problems...poorly. I'm sure it's possible to run custom markup without errors, but that success is based on one's tenacity. The source code is a zip file of the web application at Turbulance. The parser is a bunch of PHP using regexs and string matching (re-inventing the wheel, perhaps?) and the user interface is a web page. Here's what I propose:

Created at 2009-02-05 00:24:40 UTC Permalink
A Bullshit Markup Language

Excellent idea, poor execution. The death knell of so many grant funded art projects. ABSML will generate cliche text using XML.

At the moment, a real ABSML implementation is impossible, as there's no DTD nor even a list of supported tags in plan english. Only a retro looking form on their web site and a little AJAX glue to print your creation on your own webpage. There is also a black box around their parser, which is only available in the form of a "web service". No source code for you thank you very much.Source available here

Anyhoo, I'll be hacking through their site to see if anything can come of it.

Created at 2009-02-04 22:46:16 UTC Permalink
Bass Master

I will attempt to be the bass master tonight.

Fish are fun!

Created at 2009-01-31 21:07:14 UTC Permalink
Beauty

I got into an barroom argument about god, athesim and the pope last night. I began to argue on the side of athesim from a naturalistic world view. Funny part is I know nothing about what the word athesim actually means aside from what my friends who identify as an athesit tell me. We argued, we agreed and he arrived at this statement: "what scientist can describe beauty? And dont say beauty is molucules because that's missing the point." I was a bit taken aback but then I was tounge tied. I had no quick phrase to turn, no way to make him eat his words. So perhaps I'm truly a scientist? Perhaps not since we were under the influence of 10 year old liquid vegitables. Good part is this morning I thought of the phrase.

Beauty is a sudden stillness

Created at 2009-01-30 13:09:53 UTC Permalink
Tags, Comments, Archives?

Wouldn't these things be cool? I think so. Perhaps I'll make them.

Created at 2009-01-29 19:15:42 UTC Permalink
More information in the DNS load balancing saga.

I thought everything would be simple if I just did it the Google way. But looks can be deceiving. Due to an ambiguity in RFC 2821, MX and CNAME records should not be mixed for the same FQDN in production. Oh well. So how does google do it? Watch this and remember my CNAME example from the previous post:

google.com.		6919	IN	MX	10 smtp1.google.com.
google.com.		6919	IN	MX	10 smtp2.google.com.
google.com.		6919	IN	MX	10 smtp3.google.com.
google.com.		6919	IN	MX	10 smtp4.google.com.

Four MX records for google. But IIRC, I can type http://google.com into my browser and I will not reach an email server, will I? Of course not. So what's going on? Check it:

google.com.		240	IN	A	209.85.171.100
google.com.		240	IN	A	74.125.45.100
google.com.		240	IN	A	74.125.67.100

Okay, so google has three A records for their top level. Cool, that makes sense. But diffing that against the query for www.google.com returns different results. Let's open up that browser again, this time reading HTTP headers.

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Wed, 28 Jan 2009 22:41:49 GMT
Expires: Fri, 27 Feb 2009 22:41:49 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219

Booya! Google's running a little cluster of HTTP redirect servers at the top level and forcing everyone to land on www.google.com, which is aliased to the larger cluster and load balanced with a CNAME. Whew, that was exhausting.

Created at 2009-01-28 19:47:20 UTC Permalink
DNS load balancing survey results

I'm one step away from implementing network wide DNS load balancing for drop.io. Like any good researcher, I don't act until I have enough data. Here's my canonical list of references and examples on best practices.

References

Examples

After reading through that I went over to a shell and looked at three very popular companies that have prominent URLs.

Google

www.google.com.         434882  IN      CNAME   www.l.google.com.
www.l.google.com.       213     IN      A       64.233.169.104
www.l.google.com.       213     IN      A       64.233.169.147
www.l.google.com.       213     IN      A       64.233.169.99
www.l.google.com.       213     IN      A       64.233.169.103

Google has a single alias with a very long TTL, followed by four A records with a 5 minute TTL. Coincidently, 5 minutes is the length first mentioned in RFC 1794. My assumptions about this method is that systems can fall offline and an external notification services can act based on that failure either by putting a new host online in the window of the TTL or updating the DNS record with a fresh IP address. A hot standby would be excellent for this.

Yahoo!

www.yahoo.com.          162     IN      CNAME   www.yahoo-ht3.akadns.net.
www.yahoo-ht3.akadns.net. 11    IN      A       69.147.76.15

Yahoo is much more aggressive than Google with their TTLs. They also use an alias but in this case its TTL is 5 minutes and points to a domain that looks like it could be in a cluster of similarily named hosts. The following A record is even shorter than the alias, 60 seconds. I can imagine that they get good distribution from their cluster of real IP addresses with a maximum outage window of 60 seconds. There's also a margin of error in the alias, as it can be misconfigured and updated within 5 minutes. This feels a bit over engineered to me but I can imagine two wheels, one 5 times as big as the other spinning in unison. The big wheel makes one rotation for every 5 of the little one. But in this case the little wheel is swapped out each time it rotates. There can be more than 5 little wheels available to be coupled to the big one. The big wheel is rarely swapped out.

Amazon

www.amazon.com.         12      IN      A       72.21.207.65

Amazon is the simplest and most aggressive of them all. A single A record with a TTL of 60 seconds. Quick, efficient. Not too nice to the root servers but whatevs, Amazon is in the high bandwidth business and they know that bandwidth is only getting larger, so who cares about a few hundred bytes flowing around every minute? On the backend, Amazon probably has the most elaborate system. Their DNS server should be testing for the availability of each IP that's "on deck" in a stack of IPs, first in first out. If that IP proves that it's ready, the DNS server updates the A record for the next record, repeat this pattern every 60 seconds. If an IP is not ready, skip it and move to the next one. Then there must be some way of flagging an IP as "wasted" and removing it from the stack.

In conclusion, I'm going to use the Google method. It gives the most "for free" by distributing load among a group of IPs that have decent uptime. An outage will cause at most 5 minutes of unavailability.

Created at 2009-01-28 14:49:43 UTC Permalink
Realtime things. Desktops. Radio.

I like soft realtime communications. I like distributed object databases too. I'm also interested in couches. Really.

Also, I haven't touched more than one desktop computer in over a year. When I sit down in front of a computer, I feel uncomfortable if it's a desktop because that feels wierd. What do we use desktops for now? I can see six laptops from where I'm sitting RIGHT NOW!

Also, also. I'm going to implement campcaster as a front end to XMMS2 this weekend.

Created at 2009-01-27 23:18:39 UTC Permalink
Digits, where are they?

Did something new this weekend. It's...very...prototype. Be nice.

Where My Digits At?

Twilio provides an excellent REST interface to telephony. It's really amazing what they have done.

Created at 2009-01-26 23:58:59 UTC Permalink
Laptop web server

My previous post wrote in words what I can now show in pictures.
Uncompatible systems web server

It's coming along nicely. I even got a second NIC and a HiFn crypto accelerator card in the minipci slot I discovered this evening (god knows what I'll use that for). I'd like to make this laptop do some wacky stuff based on this web site's usage, or even other web services I can think up. Suggestions welcome.

Oh yeah, and I'll get around to comments soon. Pagination too. Keepin' it ghetto, I dooos it.

Created at 2009-01-24 21:26:48 UTC Permalink
DNS load balancing

I noticed that Google talk does an interesting type of DNS load balancing. It goes like this:

This means that the talk.google.com domain takes a very long time to expire from caches, whereas the talk.l.google.com does not. 5 minutes in fact.

Now, let's say we have five erlang nodes, named A, B, C, D, and E. They all have IP addresses. I want to make all users connect to talk.foo.com and get some kind of decent distribution among the five nodes. If I use the Google talk method users that connect will get passed to a different server in five minute intervals. So: userA -> talk.foo.com -> a.foo.com (ip.address.first). Five minutes later userB -> talk.foo.com -> a.foo.com(ip.address.second). Brilliant! This will require a script that's controlling a DNS server which I own, since I'll be updateing a.foo.com's IP address every 5 minutes, though a more intelligent algorithm can be used to trigger an IP update. There's no need to load balance if the load isn't there to balance. In the case of Jabber, this can be easy to detect since each new user on the system has a persistant connection. They quite literally are "logged in".

So what if node B goes down? Well, all the users connected to that node will get disconnected, no doubt about it. But depending on how far in the 300 second (5 minute) count down we are they can reconnect and pick right back up where they left off. Then I can remove a.foo.com(ip.address.second) from my distribution script until I fix that node. This pattern is not high availability, but it would be possible to put a HA system on all of these IPs to make sure no node outage would ever do anything more than interrupt a persistent connection, at worst.

Created at 2009-01-23 19:55:41 UTC Permalink
Good hardware, crap software

I really love Apple laptops. They are pretty, functional, unique and have lots of cool hardware hidden in subtle ways. The software, on the otherhand is...not so much. What's someone to do with a brand new mac to turn it back into your computer, not Steve's computer.

Well, short of putting Linux on it, which is tempting but then a bunch of the hardware gonna be a pain to figure out I'm just gonna remove all the crap I don't care about. There are two little programs other's wrote to facilitate this task.

  1. AppZapper
  2. Monolingual
AppZapper is a bit retarded because the author believes that it's worth crippling the utility until his users drop a tip in his jar. It's a nice convenience but not worth $12. Shit, I can get a gig of online storage for less than that.

Grand total, > 5 gigs of space for applications I don't want.

screenshots

Created at 2009-01-23 18:52:22 UTC Permalink
Get ready for logstalgia

I have logstalgia running on the laptop. It's chugging along. Stay tuned for more pictures and simulations. It's a great art piece for the wall.

Created at 2009-01-23 03:29:16 UTC Permalink
Fishtail

Restaurant week was good to me this year. Ate at Fishtail, the month old spot with the David Burke lable. It's all sustainable seafood with a gourmet flair. $35 pre fixe menu. Three items for 1st and 2nd and four deserts. I began with warm oysters, followed by the calamari "mac and cheese". Both were excellent, though the only "mac and cheese" I could figure out was that the sauce had some cheddar in it. Otherwise it was calamari, pasta and an excellent cheese sauce. The desert was a pineapple tart. It was perfect. We also had a 2005 Cru Beaujolais Cote de Brouilly, T has a photo of the label. The wine list was extroidanary. Two pages of Boardeaux in all the cru's. They ranged from $90 to $4000 a bottle.

When everything was said and done, I felt great. Elated really. Good dining can definitely transform.

Created at 2009-01-22 17:29:09 UTC Permalink
Erlang + ejabberd

Ejabberd is the winningest of all wins. Oh man is this awesome. After much toil and fighting in unfamiliar waters, I have emerged victorious. I have a cluster of Jabber nodes. It doesn't matter which one I connect to, they are all the same. A hive mind if I've ever heard of one.

Created at 2009-01-21 16:41:19 UTC Permalink
For The Fucking Win!

(04:06:37 PM) Him: heard you got married, congratualations
(04:06:42 PM) Him: someone told me
(04:06:45 PM) Me: I get married every weekday
(04:06:46 PM) Him: i forget who
(04:06:50 PM) Me: on facebook
(04:06:56 PM) Him: yeh
(04:07:02 PM) Me: it's an ongoing process of constant commitment
(04:07:03 PM) Him: i got a message saying you got married
(04:07:16 PM) Me: over and over, I am reborn through facebook
(04:07:26 PM) Him: its a beautiful thing

Created at 2009-01-19 18:10:07 UTC Permalink
Web scraping!

Did an activity for a lazy sunday. Anthology Film Archives is a great place that I don't take advantage of enough. Perhaps I would if I could be delivered informations via the web rather than their cool zine-style paper schedule or their non-syndicatable online calendar?

Here's the public Google calendar.

Here's the script. Save File: anthology-cal.rb

Created at 2009-01-19 02:15:12 UTC Permalink
CSS is rad

well, since I've spent enough time doing web design for today, I have to admit that CSS is awesome. I'm able to take some badges from other web sites and place them on mine with almost complete control over how they look. Right now it's just last.fm music and links from del.icio.us, which is a lot of what I record during the married day. Oh yeah, and all the templates are in HAML. That's cool too. Woo hoo, married on weekdays, single on weekends!

Created at 2009-01-18 00:07:46 UTC Permalink
Problem with frameworks

People don't take much pride in them, and therefore take their content offline. I too am guilty of this. Currently I'm looking for the acts_as_textile plugin for Ruby On Rails. I can't find it.

Created at 2009-01-17 22:43:03 UTC Permalink
oops!

Blown fuse == laptop with dead battery shut down. Did not come back up. Strike one for the laptop as server idea.

Created at 2009-01-17 18:17:21 UTC Permalink
Linkdump

Cody's blog

Created at 2009-01-15 19:13:17 UTC Permalink

I have an honorary degree in software engineering from the university of the Internet. I propose to a different friend on facebook every monday. I'm single on weekends, which is when I hack on things like web programming, sound synthesis and databases. I hack on drop.io when I'm married.

Chat?



Photos

Music

lazzarello's Profile Page

RSS Feed

New post