January 2004 Archives

William Grosso

AddThis Social Bookmark Button

Related link: http://www.google.com/adsense

I put adsense on my personal website a while back. I did so more out of curiosity than anything else. My site gets very little traffic and it’s no big surprise to learn that I can’t retire, or even go to the movies, on the advertising revenue from it.


But I’ve been checking the results anyway. And today, what lept out at me was that Google is tracking the number of visits to various pages with a reasonable degree of accuracy. It’s easy for them to do so: adsense is implemented as a piece of javascript that requests an ad from a google server. Every time a page loads from my personal site, Google gets a ping (that’s not quite true, but it’s close enough). What’s more, when search bots and other automated tools hit my site, Google doesn’t get a ping (because very few automated tools or spiders execute the javascript on a page). Google is, or could be, getting the equivalent of webserver logs, across a large number of websites.


This is very useful information. Google made their reputation, back in the early days, using PageRank, which they described thusly:


PageRank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page’s value. In essence, Google interprets a link from page A to page B as a vote, by page A, for page B. But, Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves “important” weigh more heavily and help to make other pages “important.”


The reason this might have worked is simple: the effort involved in creating a link made the vote worth something.
But, for a long time now, the speculation around the web has been that PageRank has been abandoned by google (see also: a google search on ‘pagerank is dead’). The most common reason people propose for the alleged death is that the existence of link-farms effectively spammed the results and forced Google to ever more elaborate ways of computing results.


Now suppose that adsense achieves reasonable penetration into the web. What Google will then get is a reasonably good measure of traffic (and something much better than the Alexa Toolbar) for a large percentage of the web. Which will effectively enable it to resuscitate PageRank using people’s browsing as a discriminating factor.


What’s more, the information that Google gets from adsense is something that competitors won’t be able to easily replicate. Adsense not only gives Google revenue, it could give Google an enduring competitive advantage.


Which is a pretty cool side-effect.

Of course, since I don’t work at Google and don’t really know much about what they do, this might be sheer nonsense. But I think it’s an interesting line of thought. What do you think?

Russell Miles

AddThis Social Bookmark Button

Related link: http://sofa.ouvaton.org/

Every now and then you get a piece of software, or an addition to something already pretty good, and you think …….. what’s the point? Thankfully, the software being developed under the Sofa Project is NOT one of those tools. It’s free and it is a simple addition to iTunes. But what we have here is no simple applescript frenzy … this one gets up in front of iTunes and uses Apple’s music management system as it’s puppet, with some interesting new features thrown in that just might work their way into the main tool in the future.

So, what does it do … on first look, not a lot (back to my initial reactions of ‘what’s the point?’) but once you get under the skin you start to feel much more encouraged.

For a vanilla install of iTunes with no iPod you will probably at first be looking at a simple application GUI that does no more than launch iTunes and provides a simple controller. However, the secret goodies are in the Web Services. Once these services are enabled appropriate web sites are searched for corresponding album artwork and then a conduit is set up between iTunes and Sofa to share the artwork that is found. No more scanning each page of that album cover collection again! The artwork for a particular album title from a specific source site is displayed and can be shared with iTunes or kept separate depending on your preference.

There are a few problems and ongoing issues with the version of Sofa tried for this blog. The application takes a long time to startup with a significant iTunes library or when an iPod is plugged in. In fact the tool crashed twice - but hey, it’s early days yet and this is not yet version 1!

Also, the software is free but …. free as in freedom? - well, actually, no … it’s free as in beer which is not the same thing but probably enough for most people. Although the program appears to be free there’s no source available so unfortunately this doesn’t appear to be an open source effort, let alone a free software one. This is a shame as I’m sure with a little community support the project could really come on in leaps and bounds by opening up the source using whatever licensing is appropriate.

My honest opinion of Sofa is that this version (0.6 v219) is still a little clunky and certainly doesn’t have the panache of a commercial product yet. Basically Sofa is just missing that feeling of ‘of course, that’s the way it should work!’ that you get from best of breed products on the Mac. If you can get past that criticism, and it’s a pretty minor one, then Sofa is a top notch helpful addition to iTunes. It won’t replace the iTunes front-end for this Mac user but for the lazy guy who simply can’t be bothered to scan in those album covers (myself definitely included) it’s a great energy saver all round and perhaps offers a capability that Apple might consider including in iTunes in the future.

Any comments from the guys (or gals) working on Sofa are more than welcome. If anyone’s using the tool and got a comment that’s good too…

AddThis Social Bookmark Button

Related link: http://steve-parker.org/articles/others/stephenson/holehawg.shtml

The other day a buddy of mine asked if I heard of a “whole hog”. My response, “I always wanted to host a pig roast.” Of course, he is not talking about a pig, but a Milwaukee Tool drill named the “Hole-Hawg”. Here is a classic article comparing the Hole-Hawg to Unix in terms of natural selection.

Please note that I do not intend on starting an OS war. This is purely for entertainment.

Here is a Hole-Hawg.
image

What other power tools can you relate to software?

AddThis Social Bookmark Button

Related link: http://www.intellij.net/eap/

Project management in IDEA 3.0 is simple and easy. I can typically setup a project and start coding in less than five minutes. When I decided to play with Java generics I downloaded IDEA’s lastest beta (through the free early access program). Immediately I was stuck trying to create a project. That bad experience led to me write a weblog discussing my frustration. Well it has been a few months and a lot of beta releases later and I have to say that IDEA 4.0 is going to rock. The current beta release is build 1120, which is the first release candidate.

For starters, project management is a lot better. I was able to setup a project and start coding in less than five minutes again. WHOOHOOO!

Here are a few reasons why you should upgrade or become an IDEA user:

  • Generics support

    The syntax highlighting and code completion work great.
    There is also a cool refactoring feature called ‘Cook Raw Types’. This refactoring analyzes existing code and attempts to provide a parameterized type. Here is an example:

    Before ‘Cook Raw Types’ refactoring

    private Map stuff = new HashMap();
    
    public void addValue(String name, Integer value) {
        stuff.put(name, value);
    }

    After ‘Cook Raw Types’ refactoring

    private Map<String,Integer> stuff = new HashMap<String, Integer>();
    
    public void addValue(String name, Integer value) {
        stuff.put(name, value);
    }

    There is one problem I found, though. The refactoring did not work if the Integer was changed to an int.

  • Enhanced Debugger

    You can change code and reload the class without restarting the debugger.

  • It runs great on Mac OS X

    I really wish that they would add “-Dapple.laf.useScreenMenuBar=true” to IDEA’s VM parameters. I am getting tired of having to change this with each beta release.

  • Split Editors

    This totally rocks! I can now view multiple files at the same time. Running at a high resolution really helps to cram all the data you can on the screen, too.

  • GUI Designer

    I personally do not like GUI designers. I actually dispise any attempt for an IDE to provide code generation (except for simple skeleton code).

  • Better CVS integration

There are a lot of new features and subtle changes that you just have to experience. I know that I plan on purchasing the upgrade (hopefully for $149 as previously advertised at jetbrains.com).

What are your favorite IDEA features? How about things you would like to see changed?

Russell Miles

AddThis Social Bookmark Button

Related link: https://atrack.dev.java.net/

J2EE and enterprise solutions, particularly middleware and support libraries, are supposed to be the ‘killer apps’ for Aspect Orientation. In an effort to promote the advantages of AO in a real world example the aTrack project was born as the brain child of Ron Bodkin a leading evangelist of the AO aproach.

So what is aTrack? aTrack is an open source project and is managed as a Java.net community project being written in Java with AspectJ providing the aspect oriented capabilities.

In terms of the functionality that is being developed aTrack will be an online bug tracking facility. But wait! before you switch off whilst muttering something along the lines of ‘not another bug database’, that’s not the important thing at all. aTrack is built on top of technologies such as Jakarta Struts (and in turn servlets), Hibernate, and other open source server-side libraries. But even that’s not really the important thing. The key thing about aTrack is that it offers an example of AspectJ integration with these technologies as well as an example of a ground-up design solution, and the real gems are to be found in the code…

So what exactly does aTrack offer and why should you think about getting involved? Because aTrack is being developed by some of the most experienced AO people around it offers a great opportunity for beginners and advanced users alike to see how things should be done. By joining the effort you can get visibility of some of the bleeding edge design patterns and idioms in AO that constitute the projects codebase. Even if actually working on the project may be a little out of your comfort zone, aTrack at the very least offers a place to learn about AO in a real world application. aTrack is an ideal example for those new to AO and AspectJ who have questions like ’so what can I do with this thing?”.

Because the project is open source you can contribute as much or as little as you like. For example, your contribution may be as much as submitting source code and fixing bugs, or contributing to the mailing list discussions, or just keeping visibility of the project as a learning base. I myself have been getting up to speed on the codebase of aTrack and other areas of AspectJ and hope to begin submitting work in the near future, but the sheer wealth of learning that can be found from examining even the existing incomplete aTrack architecture is worth the effort tenfold.

aTrack is still in it’s early days and is definitely looking for contributors. If you can spare the time, and especially if you are looking for a practical real world example of why people are getting excited over AO, then it’s worth taking a look at aTrack.Through the aTrack project the Java development community is finally being offered a great foundation example on which to build a better understanding of AO and AspectJ.

If you want to know more about aTrack, AspectJ etc. or just share your AO experiences then I’d be glad to hear from you.

Russell Miles

AddThis Social Bookmark Button

Related link: http://www.theserverside.com/articles/article.jsp?l=AspectOrientedRefactoringPar…

I’ve been involved in AspectJ as a user for some time now, but I can still remember my initial confusion when it came to taking what was obviously a very powerful approach and applying its advantages to my existing systems.

I could easily see areas where aspects could help. My systems exhibited cross-cutting concerns both on the macro/system-wide and micro/class-wide scale that would definitely benefit from an aspect oriented approach to the design and implementation. However, I was put off by the sheer impact to an existing system (i.e. working and often large and complex) in order to incorporate this new approach, not to mention the effort involved. I could see the advantages, largely due to a talk given by Adrian Colyer’s to the BCS in London (thanks Adrian!), but I was definitely put off by the potentially damaging refactoring operation that would need to take place. Having no obvious tools to help in the process was the final nail in the coffin for some of those older systems.

Refactoring is a big deal when promoting adoption of a new technique or approach. Refactoring is something all systems are subject to but was officially recognized as such a necessary technique in the seminal book by Martin Fowler, “Refactoring: Improving the Design of Existing Code”. When done right refactoring tools and guidelines can grease the wheels of adoption by making it easier to bring the advantages of a new approach to existing and ‘under development’ systems. When refactoring aids are done wrong, or not at all, the benefits can be limited to new systems, delaying the adoption and limiting the overall usefullness of the approach.

For these reasons the linked article written by Ramnivas Laddad provided an extremely interesting examination of refactoring for AspectJ when I was pointed to it by a posting on the AspectJ mailing list. The article shows how refactoring with aspects can be done in a prescriptive and practical manner. Ramnivas carefully considers the automated capabilities that could be incorporated as well as the more manual steps in the process. Basically, it feels that if the author himself is not working on a tool that does this for the AspectJ community then anyone who is considering doing something like this would get a very large helping hand from reading this article.

In the future refactoring with aspects in mind will hopefully be taken for granted as much as OO refactoring is today, perhaps even more. Tools such as Eclipse and the other leading edge IDE’s already incorporate varying degrees of OO refactoring aids. AspectJ is currently the most widely adopted tool for AO development with Java and is accompanied by a set of maturing tool suites such as the AJDT for Eclipse. Work is already being looked into within this rich development community and I hope that as the tools mature we will pick up on what Ramnivas has formalized in his article. In time, Aspect Orientation, and specifically AspectJ, will hopefully gain the key refactoring tools that will speed adoption of the approach by facilitating a reduction in the amount of effort needed to incorporate aspect orientation into existing systems.

It’s always interesting to hear the pitfalls that people have experienced when taking on an AO approach.

If you have any comments on what I’ve said in this blog, or even better a link to people who are already coming up with the solutions to refactorization where we can all chip in, then please post here.

“A problem shared is a problem that is at least visible.”

Marc Hedlund

AddThis Social Bookmark Button

Related link: http://www.decaffeinated.org/archives/2004/01/16/summarie

Chris Clark at decaffeinated.org advocates for full posts in RSS feeds. I agree; enough that only Dan Gillmor remains in my feedreader without providing full posts.

Rafe used to provide only summaries but responded to my request for full posts, and is one of my favorite RSS-enabled authors. Nelson falls into the “really want people to see [his] great web design” category (and his blog is awfully pretty — I disagree with Chris that he’s flattering himself!), but he still lets me read full posts, if a little grumpily. Duncan recently turned off full feeds and lost me as a subscriber. I didn’t even bother trying to turn his opinion back to the right side — I just voted with my feed, as it were. People who don’t provide full feeds lose me, and I bet they lose plenty of other people, too.

The problem is simply one of time consumption. I use SharpReader even more than I used trn in college — and I need SharpReader to be as much or more efficient if I’m going to keep up. I want to read feeds from many different sources and I want to be able to keep adding feeds as I discover the beautiful outliers; but I also want to get work done. I can cruise through five or ten full-post feeds in the time it takes me to launch a window for each new post from one summary feed. It’s not worth it.

I think that feed reader developers could make this situation a little more tenable for both sides by supporting per-feed CSS. Let the feed author specify a stylesheet that formats their feed in the reader, and the author won’t care as much about forcing a new window for design reasons. It all boils down to HTML in the end — why should authors or reader developers force a usage pattern because the transport lets off one stop too early?

Update: Oh, the irony! It turns out O’Reilly’s weblogging system only provides RSS summaries, not full posts. I’ve manipulated the system to provide a full post in my feed; but I’ll have to talk the O’Reilly folks into reading the above and see what they think about changing their feed system. If I fail, I guess I’ll stop reading my own feed!

Owen Densmore

AddThis Social Bookmark Button

Recently I needed to create a megabyte file full of random bytes in order to test network bandwidth with an uncompressible file.  I decided to try using Java, it was simple and had a reasonable random number generator.  So here’s the resulting script:

        #!/bin/sh        # testbandwidth host login passwd        host=$1; login=$2; pass=$3

        echo "Building mbyte file"        cd /tmp        cat <<EOF> test.java        import java.util.*;        class test {            public static void main (String args[]) {                try {                    Random r = new Random();                    byte[] data = new byte [1024*1024];                    r.nextBytes(data);                    System.out.write(data,0,data.length);                } catch (Exception e) {                    System.out.println(e);                }            }        }        EOF        javac test.java        java test>mbyte

        echo "Upload Test"        ftp -i -n -v $host << EOF            user $login@$host $pass            put mbyte        EOF

        echo "Download Test"        ftp -i -n -v $host << EOF            user $login@$host $pass            get mbyte        EOF

Well, that’s sorta nifty, but boy is the java a verbose hunk of the code!  Lets enumerate some of the irritations:

  • Have to create the temporary .java and .class files somewhere (here we used /tmp) rather than have it simply execute the commands in place.
  • I’ve got to make a class and a static void Main method in the class, the Java cliché for building an application.
  • Then it all gets wrapped with a try/catch construct due to possible I/O errors.
  • Testing is tedious, requiring compilation and running rather than more immediate feedback.
  • The flow of the Unix script is broken up .. its hard to tell, for example, what the point of it all is!

Well, I often use

BeanShell

while hacking because its so easy to test a piece of code w/o the compile/run steps.  (See

this article
) I just keep a shell running and cut & paste code pieces from my project.  So being somewhat comfortable with BeanShell, I decided to replace the Java part of the above script w/ the BeanShell equivalent.

        cat<<EOF>/tmp/temp.bsh            r = new java.util.Random();            data = new byte [1024*1024];            r.nextBytes(data);            System.out.write(data,0,data.length);        EOF        java bsh.Interpreter /tmp/temp.bsh > mbyte

So we’ve replaced 17 lines of Java code with 7 lines almost identical code, but without the verbosity.  Very readable and appropriate, and quite readable.  (Note that we still had to create a temporary file due to BeanShell not coming with a “wrapper” shell script that would handle stdin as program text.  Minor.)  The treat for me was the ability to use the standard, well documented (JavaDoc) classes easily from scripts.  Note that I did not bother with an import statement, I fully specified the Random class.  Due to “loose typing” allowed by BeanShell, I could avoid the equivalent

        java.util.Random r = new java.util.Random();

..which seemed to warrant the use of the import statement.

Wanting to fuss with this a bit more, I rewrote this all in

PNuts
, a Java Shell written with a slightly different set of goals (see

this article
).  It uses incremental compilation for speed, and has a Java-like syntax but with several differences.  For example, rather than Java’s


        import java.util.*


form, PNuts uses a procedure form:


        import("java.util.*")



So the PNuts form of the Java code is:

        pnuts<<EOF>mbyte            r = class java.util.Random()            data = byte [1024*1024]            r.nextBytes(data)            class java.lang.System::out.write(data,0,data.length)        EOF

Slightly shorter due to being able to use a “here file” for stdin.

There have been several articles on Java scripting languages,

this one

includes these two and several others.  And

this article

collects all the languages that run on top of the Java VM.

Have you had good luck w/ these or other Java scripting languages? Jython seems interesting, for example.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.tbray.org/ongoing

Since I praised Google for being so on-topic with its ads, I guess I’m now obliged to either retract the praise or draw some hithereto unexpected conclusions. In case the ads change, I’ve enclosed a screenshot, below.



image

Seen any other strange ads lately?

Owen Densmore

AddThis Social Bookmark Button

Related link: http://ccl.northwestern.edu/netlogo/

In our

earlier look at NetLogo
, we saw how to execute simple commands in the command center, how patches and turtles/agents work, and how to run models such as the Schelling Segregation model in the Models Library included with NetLogo.




In this

latest release
, the NetLogo team have added the ability to add graphs (collections of edges and nodes) to a model.  (Note that NetLogo 2.0 requires Java 1.4) This opens up the possibility for more sophisticated models.  For example, the agents can now live in a

Small World

graph, as described in

Six Degrees

by

Duncan Watts
, or in Power Law networks as described in

Linked

by

Albert-Laszlo Barabasi
. See this

Power Law Study

for an overview of these networks.

One example is the

Travelling Salesman

(TSP) route problem: how to choose an optimal route among several cities. To prove this new NetLogo facility worked for complex problems,

Seth Tisue
, one of the NetLogo developers, converted a Repast TSP to run in NetLogo!  Click on the image to the left to see a picture. 

This TSP model was done using an

Ant Colony Optimization

algorithm, where several ants placed on home nodes (red nodes in the image) traverse the graph nodes, laying down pheromones which evaporate over time.  The ants preferentially chose “warm” paths .. those with more pheromones.  This evolutionary algorithm quickly evolves toward near-optimal solutions.

To learn how edges and nodes all worked in the new NetLogo, I wrote a simple

Graph Layout

model, which uses springs and forces to take an initial random collection of nodes and edges, and have them evolve toward a more “pleasing” or understandable form. 


The model used for edges is fascinating: an edge is simply a “turtle” that is very long and skinny, connecting two other turtles of type “node”.  This requires the “patch coorinate system” used by NetLogo to allow fractional values.  Thus a node can be on patch 1.5, halfway between patch 1 and two.  In the TSP images and the Graph Layout example, the edges are numbered at the edge turtle’s patch position, the center of the edge. On the left, we see two nodes connected by an edge.  The numbers are printed at the turtle’s position, so the edge turtle is halfway between the two node turtles and is long enough to connect them and has the correct “heading” to do so.

Give NetLogo a try and let us know what you think, its fun to play with and getting more mature every day!

William Grosso

AddThis Social Bookmark Button

Related link: http://www.alligator.com/artists/bio.cfm?ArtistID=031

It’s become a holiday tradition. A big meal on New Year’s Eve (no parties anymore; they became brunches on New Years Day instead a few years back) and then, approximately a week later, gimlets at Mark Hummel’s Blues Harmonica Blowout (where he brings in 5 or 6 legends to play 3 or 4 songs each).


Last night, Cephas and Wiggins played. I’d never heard of them before, never heard anything by them before. And I liked them so much that I went into the lobby and bought a CD (something I rarely do at concerts, simply because after you buy the CD you have to carry it around and that can get annoying).


And it got me to wondering. Somehow, I no longer buy CDs. I don’t download music either (arguments like those propounded by Aaron Schwartz strike me as hopelessly sad and juvenile). Somehow, I’ve just completely gotten out of the habit of acquiring recorded music. And the more I think about it, the more it seems that the reason is simple: buying music has become a political act. I don’t mind the monetary price of a CD (it seems high, but not out of line with other things I sometimes buy). I just don’t want to do business with the music industry.


This isn’t breaking news or anything; we’ve all known for years that the music industry has some moral and ethical challenges in front of it.


What’s intriguing to me is how I made the decision. I don’t recall making a decision to stop buying CDs. Let alone anguishing over it. And I can’t remember the last time I even thought about buying a CD.


I just, quietly, in the back of my brain, made a decision to drop a long-standing habit when the moral overhead got too high.


At the concert, I knew who would get the money, and I knew it was a good deal for both of us. And, since I was wearing my coat with the really big pockets that can easily fit a CD, it was a no-brainer.

Do you still buy CDs?

Ron Hitchens

AddThis Social Bookmark Button

Related link: http://www.pcanswer.com/articles/oldmac.htm

I attended Steve Jobs' keynote at MacWorld this morning. I didn't realize it until he flashed a huge slide on the screen, but 2004 is the twentieth anniversary of the introduction of the original MacIntosh.

>I remember that, I was there. I was on staff at the href="http://www.cs.utexas.edu/"
>University of Texas at Austin
> back in 1984 and Apple was marketing the Mac heavily to the college market. They visited campus more than once to demonstrate MacWrite and href="http://whythemacissogreat.com/en/machistorian/macrelics/20021002.shtml"
>MacPaint
>. The most frequent remark I remember overhearing was "wow". Apple setup an on-campus computer store where students and faculty could buy cool new Apple computers at deep discounts. Deja Vu all over again.
>
>Apple also sold Macs directly to the University at even deeper discounts. I would up with the title of The Mac Guy. I was in charge of setting up and configuring the several dozen new Mac 128k machines we bought to replace the old Lear Siegler ADM3 glass TTYs in the student labs. I dove into the Mac. I bought my own Mac Plus (which I still own). I became an early Mac developer. The early Mac OS was primitive, buggy and deeply weird, but the user experience it produced was electrifying. >
>The Mac was cool. It was easy to use and you could do things with it you couldn't do on any other system under $10,000. But then I bought a $10,000 Sun workstation. >
> I was already deep into Unix by that time and was more often being referred to as The Sun Guy. The Mac was cute, it was ground-breaking for a personal computer system, but the Sun did everything the Mac did and more. It had a far better OS and a more capable windowing system. The Sun was a grownup - the Mac was the kid brother. >
>I drifted away from Macs. I never upgraded beyond my old Mac Plus. When my Sun workstation started getting long in the tooth, I bought an Amiga 3000 (now >there > was a sweet little system). I eventually capitulated and bought a generic Intel box (a blazing Pentium 90!) and moved over to Linux. A few years later I bought a P3 866Mhz replacement, which is still running today. >
>I remember, during Apple's darkest days, having a conversation with someone who asked what I thought about Apple's chances. "They're toast," I said, "Too far gone. Nothing can save them now". And I was saying this while standing in the Silicon Graphics (SGI) booth at a trade show.

My, how things have changed. A few months ago I bought a 15" Powerbook. Twenty years later I've returned to the Mac. I left the Mac behind many years ago because I didn't think it was a serious, professional grade system that I could use to earn my living. Today, I wouldn't want to use anything else. The amazing thing to me is that the Mac is essentially targeted at consumers - people who are interested in >what > it can do, not >how > it does it. >
>Which brings me to the new product announcements in the keynote today. There wasn't much in the way of new hardware. There's a G5-based XServe, a new mini version of the iPod and a few other things. Nothing earth-shaking. A large part of the session was devoted to detailing forthcoming updates to the href="http://www.apple.com/ilife/"
>iLife
> suite. Appreciative noises were heard from the crowd about enhancements to href="http://www.apple.com/ilife/iphoto/"
>iPhoto
>, href="http://www.apple.com/ilife/imovie/"
>iMovie
>, href="http://www.apple.com/ilife/idvd/"
>iDVD
> and href="http://www.apple.com/ilife/itunes/"
>iTunes
>. But the most significant bit was the inclusion of a new member of the iLife family: href="http://www.apple.com/ilife/garageband/"
>GarageBand
>.
>
>My first impression: huh? My second thought, after listening for a few minutes: cool, but how generally useful is that? My thinking by the end of the demo: Steve Jobs is a freakin' genius. >
>Just about everyone has strong feelings about their music preferences. And for most of us, those feelings swirl around our formative adolescent years. The GarageBand app is just the thing that teenagers raging against the machine need to express themselves. For serious musicians it will make a terrific practice tool. But whether it's head-banging metal or chamber music, it's a terrific way of making a creative, emotional connection to people during their formative years. When you're young, everything you try to achieve is desperately important and the tools that help you find your voice will leave a lasting impression. >
>I think GarageBand could turn out to be the most significant addition to the Mac since iTunes. And I think the concept of iLife is a good one - relating to people in ways that are meaningful to their lives. Technologies come and go, but the things people care about haven't changed much. >
>I'm glad Steve Jobs brought Apple back from the brink and I hope he continues to surprise us with things we don't expect - but should have.

What do you think about the Mac turning 20?

Eric M. Burke

AddThis Social Bookmark Button

I am sick of this. I live in O’Fallon, MO. In my estimation, about 75% of all web applications are broken. They refuse to accept the apostrophe, forcing me to type “OFallon” or “O Fallon”.

This is ridiculous. I see this constantly. I get messages telling me my city does not match my ZIP code. Or better yet, the page completely CRASHES as just happened when I tried to activate my TurboCad license. Taking out the apostrophe corrected the problem.

The problem goes beyond web apps. People don’t seem to understand how to store quotes and apostrophes in database tables, either. I hardly ever see “O’Fallon” on any bills from various utility companies, on catalog mailing labels, etc. I’m sure there are big ZIP code lookup data files out there with my city name stored incorrectly, and these data files are sold and copied from company-to-company, further spreading incorrect information.

Here’s a tip. Test your applications with “unusual” input data. Don’t just try Jones and Smith. Try names like O’Reilly or O’Fallon, and throw in some hyphens, ampersands, less-than characters, and quotes.

William Grosso

AddThis Social Bookmark Button

Related link: http://www.sdforum.org/SDForum/Templates/CalendarEvent.aspx?CID=1279&mo=1&yr=200…

Ever feel like there’s been too many inflection points in the recent history of the web? Like there’s something huge brewing, but you’re not sure what it is? I sure do. While on a daily basis, it might seem like the web is fairly static, there’s been a ton of change over the past 18 months. For example:

None of these bullet-points are news to anyone reading The O’Reilly Network. But when you put them all together, and you look at the content that’s on the web, and the way we access it, and how often we access it, it’s amazing how many things are changing, and how different the web is, from a year ago.


The hard question is: where, if anywhere, does all this all lead?


Does anyone have a grasp on some piece of the big picture?


Scott Rafer, CEO of Feedster, might. That’s why I invited him to speak at SDForum’s Emerging Technology SIG on January 13.
Here’s the abstract from his talk:


Since the Internet bubble burst in 2000, always-on consumer broadband hit critical mass and the mobile Internet got going in earnest. As online usage habits in South Korea have repeatedly shown, pervasiveness of connectivity matters and matters non-linearly. The US, while well behind the last-mile broadband deployment curve, has hit sufficient critical mass to foster significant new innovation in Internet applications: social network software, the social networks themselves, and most significantly, weblogging. All these applications, plus ones we will see within a couple years but can not yet predict, are predicated on hyperlink schemes that are persistent, metadata rich, and characterize geometrically denser link meshes than anything assembled before 2002. These new Internet applications are far more valuable (Reed.com), both in terms of economics and utility, than the prior generation of Internet applications which were architected when connectivity was primarily intermittent. Beyond the applications themselves, a whole new generation of utilities, including transaction engines, directories, and search engines, are necessary to rationalize the web for users.


If you’re in the San Francisco Bay Area, you might want to stop by and hear what he has to say.

What do you think Scott should be talking about?

Owen Densmore

AddThis Social Bookmark Button

Related link: http://www.harmonyremote.com/

I’ve recently setup a new suite of TV and related peripherals: Cable box, VCR, and DVD player. Although this is fairly modest, it resulted in 4 remote controls, one for each component. It was driving me nuts to remember to do this just to watch TV:

  • Turn on TV and Cable Set Top Box (STB)
  • Change TV to channel 3
  • Change TV input to antenna 2
  • Use STB remote for channel selection
  • Use TV for mute and volume

Then, to record a video tape, I had to:

  • Turn on VCR
  • Change TV input to antenna 1
  • Use VCR remote for channel and menu
  • Use TV remote for mute and volume
  • Use VCR remote for tape record, pause etc

It sounds trivial, but as you know, you constantly forget which remote to use for what, and indeed constantly confuse the TV remote for the VCR remote and so on. It was driving me nuts!  What to do??

Standard “universal remotes” did not help. They were the equivalent of wrapping all the remotes together with a rubber band!  I still had to change between the VCR mode and TV mode etc.  So basically all the universal did was reduce the clutter.  And they never really worked right .. they constantly lacked features needed by my particular component.

Harmony RemoteWell, naturally, I turned to the web. Would you believe there is an entire website (Remote Central) devoted to remotes?!  Their extremely detailed tutorial/review, along with several other fine reviews such as Don Norman’s and this ZDNet one, led me to try the Harmony SST-768 Remote.

Now, to give you an idea how desperate I was, this remote costs quite a bit: $299 from the Harmony site! There are other Harmony remotes that cost less, and it is easy to find the 768 for less that $200 on the web.  But none the less, that’s not cheap!  But boy is it worth it. (Click image for larger view)

I won’t go into all the details (the above links are great) .. suffice it to say, you plug the remote into your computer via USB, beam into the Harmony web site, create your user account, and configure your remote using a “helper application”.  Works fine for Macs and PCs both.  Alas, no Linux at this point. The device has an LCD screen for programming and custom menus. And most of the customization takes no programming, just parameter setting via the Harmony web site.

ActivitiesWhat makes this device unique is the “Activity Centered” (or task oriented) approach it takes.  For me, the standard activities are “Watch TV”, “Use VCR”, “Watch DVD”.  Sounds simple, yes?  But only weeks ago, these brought fear to my heart!  Which TVInput?  Which remotes?  Which controls volume etc?  But now I fearlessly pick up the remote and charge ahead.  I’ve even started wiring up my system in quite complex ways: different video paths for “premium” (i.e. encrypted) video and “standard” (i.e. non-encrypted) cable video, and record one channel and watch another.  The wad of cables and splitters behind my TV is truely impressive now!  But again, no fear, Harmony can easily handle it all. (Click image for setup page)

Now to be fair, not everything went quite that smoothly.  My cable box would not turn on correctly initially.  But an email to their support staff got the answer: the Power On Delay parameter for the cable box needed to be a bit higher than the default.  But between the Harmony site’s support team and the Remote Central Chat Forum, I found the answers I needed.

And as I got more expert, I found other difficulties.  For example, when I wanted to record one channel and watch another, I would start the recording via the Use VCR activity, and then “change Activity” to Watch TV.  But that turned off the VCR (Harmony turns on/off all your required devices for you)!  A quick fix was to have the Watch TV activity also use the VCR.  But way, way better was Harmony’s Customer Service folks adding a new Device Power Option and posting it to the Chat Forum.

It is interesting to see how the internet fits in.  First of all, Harmony has a HUGE database of device controls, many of them contributed by users “training their remote” in the usual way: aim the remote at the Harmony device.  But this gets uploaded to the Harmony site so that by the time you and I get there, the device codes are pretty solid.  And naturally, the Chat Forum and support pages help debug problems.

But another way the Internet works with the harmony is that it can store several weeks worth of program listings right on your remote!  Yup, sorta TiVo-ish.  So you pick up the remote, and look at the channel listing which can toggle between “26-ESPN” to “26-Sports Center” on the LCD display for the remote. And you can look ahead an hour or so as well.  Very nice.

Have you found good solutions to the “Remote Madness”?

William Grosso

AddThis Social Bookmark Button

Related link: http://www.wgrosso.com

For over a year now, I’ve really wanted to update my personal web site. I first created the site to serve as support site for a my book on RMI. But I’ve learned a lot since I created it and the purpose of the site has changed too. These days it’s more of a single place you can go to find links to everything I’ve written or given a presentation about in the last 5 years.


So I took advantage of the holiday downtime to redesign the site. In doing so, I completely restructured it and took it from approximately 70 pages to 9 pages. The upside is that the site looks nicer, is easier to navigate, and actually has more content (primarily because I added my talks from 2003 to it; they weren’t on the old site).


The downside is that I’ve broken almost all the external dependencies. Old links to interior pages on my website won’t work (including search engine result sets). And, since I went from 70 pages to 9 by saying things like “these 8 pages should really just be one page,” I was a little worried that I might have made things harder for search engines (since many of the pages are probably harder to precisely categorize).


The final thing I did as part of the redesign was incorporate Adsense. This is more of a learning exercise than anything else; I’m certainly not expecting the level of traffic I get to generate significant revenue. But it’s also been interesting, and a little bit scary, to watch over the past day as Google “learns” about the new site.


The first time I looked, the ads were generic. Two of them seemed to be served based on the fact that my first name is “William” (a name I share with William Firestone, who owned one of the ads that showed up). Another advertised “Compelling stories of faithful dedicated Christian men and women” which doesn’t even come close to making sense from a site-content perspective.


Over the past 24 hours, the ads underwent a series of alterations as Google started to “figure out” what the site was about. Scarily enough, the first page Google started serving relevant ads for was the about me page. An ad from Laszlo Systems (claiming they have “J2EE’s answer to Longhorn” and directing people who clicked to their developer site) showed up there within a couple of hours.


Soon after that, other pages began getting relevant ads. Ads from Borland and Sybase started showing up. Symtier showed up in a number of places. I learned that Bea uses Google to place ads too, and that Google thinks my personal website is a good place for them.


At this point, I understand why all of the ads are there. Some (like the one for NTP Time Servers make less sense than others. And I’m not clear on why that’s on my front page unless it’s keying off the headline saying “Recent News”). But they all make sense.


Let me repeat that, because it’s pretty darn astounding:

Within 24 hours, Google went from being completely clueless about a new website to serving up relevant and on-topic ads on almost every page.


What’s more, some of these ads are for things that I have never heard of, but am interested in. I found that very surprising. On the one hand, you might think “Well, duh. It’s his personal website, it has references to the articles he wrote and the presentations he’s given. Given that he’s interested in the content of the site, OF COURSE he’s going to be interested in the ads.”


On the other hand, well … wow. From this slice of what I’m professionally interested in, Google is smart enough to show me ads that I want to click on. That’s just stunning. Going to my website and looking at the ads is a little bit like doing a google search for “What might Bill be interested in?”


Okay. That last sentence was over the top. And, in any case, it’s more like Google is really serving up the answer to “What should Bill be interested in?” Judging by the number of ads, model driven architectures are more interesting than I would have guessed. Guess I need to do some reading there. And, hmmmm, I’d really like to slap Adsense on this weblog and see what Google thinks is related to it….


Anyway. The point is that, even though I’m less impressed by their search engine these days, I’m now pretty much stunned by how well Google’s ad-serving application works.


And it just tickles me pink that I’m clicking on my own ads.

Do you think Adsense adds to, or detracts from, a website?