September 02, 2004
US Broadband Sucks Saw
Fixing American Broadband on SlashDot and it just made me foam at the mouth again. Most Americans are unaware of the plentiful broadband in places like Japan, South Korea, and else where. I was lucky enough to enjoy
stable 8Mbit DSL in Japan not too long ago, but now I'm Cox land where our service cuts out at least once a day. Our connection has been inspected several times, so I attribute the outages to incompetence at headquarters.
Here's a shining example of how poor the state of broadband is in Rhode Island, and I expect elsewhere. My dad connects to his work using a VPN. While at home, he gets disconnected every couple of hours so it eventually became just another fact of life. Recently he traveled to a refinery in the far western part of China. He showed up in a small town where his cellphone had no coverage and his long distance calling cards didn't work. But lo and be hold, this tiny town at least had a broadband connection. So he connected to his VPN, and found out the connection to his office network in Massachusetts was more stable half way around than in Rhode Island.
To sum it up: even a remote region in a communist country half way around the world has better connectivity to a Massachusetts office than one of America's leading free enterprise cable corporations only 50 miles away.
So I've been eager to sign-up for Vonage or a similar service, but there is no way in hell I'm going to reduce my phone service to the same level quality as my broadband connection.
Posted by Dudley at
02:53 PM
August 27, 2004
The Colbert Factor New York Times profiles Senior Correspondent
Stephen Colbert. He's a very funny man. I can't believe that he actually tried to work on Good Morning America. What a sell out.
Posted by Dudley at
11:44 AM
August 02, 2004
RI Serial Killer Aces Full of Links
points to Boston.com article about the
Woonsocket Serial Murder. This is a tad too close to home. Again, I really should start watching the local news, but these days I get all my news from the web or from The Daily Show.
Posted by Dudley at
03:37 PM
Photoblog So the executive decision was made to move our photos to a separate photo blog:
I've seen better. There was a lot of going back and forth whether or not to continue posting the pictures here or not.
The advantages of moving to a dedicated photo blog is that we could present the images in a larger format. Most of the images on
I've Seen Better will have a maximum dimension of 600 pixels, but on GN they were limited to 450 which seem just low enough to lose a lot of the detail captured in the full image (this may have worked in my advantage on more than one occasion).
In the spirit of great compromises, we'll post more photos to the photo blog, but once in a while post pictures to good-old Going Nowhere. This of course means that we'll have to start posting more regularly to GN since we can't really use the images as filler anymore.
Posted by Dudley at
12:04 AM
August 01, 2004
Lodi, CA and Stanford Andy returned from California just the other day, and wasted no time getting the pictures from Lodi and Stanford up on his web page. Take a look at the awesome
California pictures. Andy said that the weather was gorgeous while over there, and I think that's pretty evident from the beautiful blue sky in most of the pictures.
Posted by Dudley at
09:11 AM
July 16, 2004
Downtown
Posted by Dudley at
01:11 AM
July 11, 2004
Nerds Gates and Jobs, Together at Last. A musical called "Nerds" about Bill Gates and Steve Jobs is dubbed "a musical software satire." Sounds kind of interesting. I guess I'll wait for some reviews before rushing down to NY.
Posted by Dudley at
01:44 AM
June 23, 2004
Your rights as a photographer BoingBoing's
Photographers' bust card" post links to a
The Photographer's Rights PDF document describing everything from the legal rights of a photographer to how to handle security guards trying to confiscate your film. I've been wondering about this recently, and this certainly cleared up a thing or two.
Posted by Dudley at
03:26 PM
May 28, 2004
Flash: Fun with setInterval If you've ever written your own scrollbar you've had to deal with the behavior of clicking on the up or down arrow which causes an immediate scroll, followed by a pause and then continually scrolling.
So typically you would want to call a scrollDown method for example immediately, then setup an interval for the pause, and then setup another interval for the continuous scrolling.
Usually your code would look something like this:
function onPress() {
//scroll immediately
scrollDown();
//setup pause
_scrollID = setInterval(this,"initDownScroll",350);
}
function initDownScroll() {
clearInterval(_scrollID);
//scroll immediately again
scrollDown();
//setup continuous scrolling
_scrollID = setInterval(this,"scrollDown",50);
}
function scrollDown() {
//handle scrolling here
}
Thankfully there is a easy fix that lets you only have to use one function for both intervals:
function onPress() {
//scroll immediately
scrollDown();
//setup pause
_scrollID = setInterval(this,"scrollDOwn",350,true);
}
function scrollDown(first:Boolean) {
if(first) {
clearInterval(_scrollID);
//setup continuous scrolling
_scrollID = setInterval(this,"scrollDown",50);
}
//handle scrolling here
}
So just by passing an extra parameter to the first interval, the scrollDown function can detect that the pause is over and setup the next interval.
Posted by Wes at
12:30 PM
May 11, 2004
Subversion

We've been using
Subversion on and off for a while. Since the 1.0 release, we've used it as our primary source code control solution. It works with well with my other favorite pieces of software:
Python and
Apache.
O'Reilly has a really nice
introduction to Subversion by the authors of Subversion. The O'Reilly
Subversion book is also really handy, thorough, and free.
Subversion comes as both a client and a server portion. The client is a command line based which is fine for some, but on Windows I certainly prefer something a little more integrated. Thankfully, there's
TortoiseSVN which allows you to do all the source code management by right-clicking on Windows folders.
At this point SVN is already a great solution, but you can get more bang for your buck by installing
Trac. Trac is a web-based service that allows developers to collaborate on Wikis, track change sets in your SVN repositories, and do bug reporting / ticket requests. To boot, it has a really nice interface and of course it's written in Python. My only complaint with Trac is that it doesn't allow me to just view all the changes at once for a single file. You can only view the diffs for all the files in a change set. Anyway, it's only at version 0.6.1 so there's plenty of time to get things polished. Here are some nice looking Trac
screenshots:
Posted by Dudley at
07:52 PM
May 05, 2004
An author's dream come true Actionscript.com is now opening it's doors to contributors, and the best part is, you can earn some extra cash. They are using Google's Adsense, which can now track individual pages. So the more popular or more often you write, the more you can earn.
Details here if you're interested.
Posted by Wes at
06:04 PM
A Ringer for a Ringer

This week on the
Dewoblizer: What the heck does RSS have to do with eWeek's article on
Longhorn Trying to Gore Linux? How does Al Gore factor into all of this? The answers: nothing and in no way.
Scoble
preaches interoptability between his RedHat and Longhorn machines. I guess he's talking about Samba and Wine? Aren't those the projects that have been taking years to reverse engineer proprietary Microsoft implementations?
Not to worry, because RSS is to the rescue. RSS, for example, will make the whole argument about the mountain of patents disappear when future projects like Wine and Samba are blasted for reverse engineering Longhorn. Oh right, I guess interopt in the sense of Microsoft saying you're allowed to interopt. In the words of Michael Eisner on The Family Guy: bring money.
Just to flex some of my ignorance, but isn't the Avalon XML schema some kind of derivative of SVG? I'm sure they have great technical arguments for why SVG couldn't possibly do what they really wanted it to do. I guess we'll have interopt when others try to converge on the Microsoft specification. Nevermind, I forgot that Microsoft wants to interopt in the USA but
not in Europe and New Zealand. Can we add Canada to that list?
Let's talk about a real specification worth complying with -- CSS. How's that coming along? Can we at least be assured we'll have that? Will the "awesome browser" that I can build in Longhorn be able to just take good-old CSS and render it 100% properly without me having to resort to some kind of Microsoft specific hack?
Am I being to harsh? Didn't Microsoft
OneNote implement the OPML specification recently? Let me get this right,
OPML is the XML schema with essentially just one element and you get to pretty much pick whatever attributes you want for that element, right? Bravo, Microsoft. Bravo.
To be honest, the amount of squirming in Scoble's article makes me more nervous than the eWeek article. And by the way, RSS is not the antacid that I'm looking for in this case.
Posted by Dudley at
01:31 AM
May 04, 2004
Tempkin on the lost art of UI design I just noticed that
David Temkin, one of the founders of
Laszlo Systems has a blog. Looks like he started last month and is already covering some topics very dear to me. In particular,
he talks about how UI programming, once upon a time the place to be, came to be seen as trivial when the web took off. And now it seems that UI decisions are more of an after thought than anything else. I hope that when David looks at something like
Gush, that he realizes that there are still some of us who still care a good deal.
Posted by Wes at
10:51 PM
April 17, 2004
BloggerCon II -- The Return of Dave Wes and I are going to
BloggerCon II tomorrow because we're in Providence, Boston's backyard. The conference starts damn early, but we'll try to be on time. To be honest, I'm not too excited about the Dave Winer rendition of the
national anthem, but hopefully what follows will make up for it. Let's get one thing straight, the most compelling reason why Wes and I are going to Boston is because we'll be close to the only
Jamba Juice in a hundred mile radius -- it's going to make the yappity-yap-yap go over a lot easier in our sleep deprived state of mind. There's also the temptation to blog a blow-for-blow account of the conference, but then we don't really know for how long we'll be at Jamba Juice.
Posted by Dudley at
12:18 AM
March 08, 2004
Worse is better There's an
article by
Joe Hildebrand, Jabber.com's chief architect, at NetworkWorldFusion about the nature of XMPP. The paragraph that really stood out for me was:
XMPP serves as a universal transport layer for XML structured data. It embeds presence and context sensitivity into that data, which lets the data be routed efficiently to the most appropriate resource.
This made me think again about XMPP competing with other XML messaging middleware. There are lots of big players out there with very featureful and robust products, and of course the current XMPP implementations aren't exactly tailored for same types of tasks. However, XMPP's XML DNA and its seamless distributed nature are too compelling, and will eventually tip the scales in XMPP's favor if they haven't already.
If you don't believe me, take a look at what Sam Ruby is
trying to accomplish using XMPP for comment authentication. This is only the tip of the iceberg in terms of non-IM related functionality that XMPP can provide.
In this case, worse is way better.
(via
Jabber.org)
Posted by Dudley at
09:26 PM
March 06, 2004
JEP25 and Generators You've got to love
Python generators. Generators can make even an amateur programmer like myself look like I know what I'm doing.
, HTTP Polling, allows people behind overly restrictive firewalls to connect to Jabber networks via HTTP. JEP-25 has a smarter, better looking cousin, , but the Jabber.org sages haven't finalized it yet.
Both JEP-25 and JEP-124 require a key generation algorithm to make it difficult for people to hijack a HTTP session.
The formulation for the key sequence algorithm is:
K(n, seed) = Base64Encode(SHA1(K(n - 1, seed))), for n > 0
K(0, seed) = seed, which is client-determined
Python generators makes producing the sequence a breeze:
def JEP25KeyGenerator(sequenceLength):
kg = createSequenceGenerator(sequenceLength)
def generatorWrap():
return kg.next()
return generatorWrap
def createSequenceGenerator(sequenceLength):
sequence = generateSequence(sequenceLength)
while True:
key = sequence.pop()
if not sequence:
sequence = generateSequence(sequenceLength)
newKey = sequence.pop()
yield "%s;%s" % (key, newKey)
else:
yield key
def generateSequence(sequenceLength):
seed = random.randint(1,2**15)
sequence = []
key = str(seed)
for i in xrange(sequenceLength):
key = sha.sha(key).digest().encode('base64').rstrip()
sequence.append(key)
return sequence
Instantiating the generator and executing a couple of interations yields:
>>> keyFactory = JEP25KeyGenerator(5)
>>> keyFactory()
'EpEvcNDBlsi7A1g7WN7IM7HGxOs='
>>> keyFactory()
'BMZLLvKUQhHbh81aA36zJEzxpFg='
>>> keyFactory()
'4ONYMRixMwN6NLcKgzCSCTRVcBg='
>>> keyFactory()
'slhQAtISUUXvebLYb5IAb884Q3g='
>>> keyFactory()
'2kuSN7rMzfGcB2DKt67EqDWQELA=;nEz+8Cwjf+7gcKIELGBQBoHb6wE='
>>> keyFactory()
'i12uDskbdkkut6JL5OW1fvcSv98='
On the 5th execution of
KeyFactory(), the sequence is exhausted and a new key sequence is introduced. However, the change over to the new key generation is completely transparent to the generator client.
The strings produced be the key generator are suited for constructing the body of the HTTP request:
#sessionID;sequenceKey[; newSequenceKey],[body]
httpBody = sessionID + ";" + keyFactory() + "," + xmlStanza
response = urllib2.urlopen(proxyURL, httpBody)
Posted by Dudley at
04:54 PM
Beautiful Flash Design
The guys at ni9e.com have 6 wonderful typographic
animations set to music. Check out the main site for their entire collection.
Posted by Wes at
04:25 AM