Log in

No account? Create an account
A Yearning, An Expectation [entries|friends|calendar]

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Friends Only [21 Dec 2012|11:11am]
This journal has been friends only for some time now. There are still entries floating around from when it wasn't, but to see much of anything current, you'll have to be friended.

But as of 29 Oct 2007, content of more general interest and less personal nature will be made publicly available.
post comment

Training versus Education [27 Apr 2009|12:52am]
keith418 points to the distinction between training and education. He has at the ready here Nock and Leo Strauss, and likely many more names, words, and hours of thought and study besides. I have only my lived experience and my habit of attempting to draw meanings from words themselves to bring to bear on this topic. Worse, I write this as I think it, not after much consideration.

The distinction is regardless critical and plain to see. I am well-trained; I am also decent at training myself. And after plowing through a large amount of material and even applying it here and there, I can tell, at the end of the day, that this is simply training.

Training, as I think of it, is something you put on, like a shirt or a pair of pants. Vocational training is something you wear along with your profession's uniform. It will in time become as familiar and worn as that uniform; you will also experience some discomfort as you break it in.

Just as you dress yourself in the morning and disrobe at night, so training can be put on and put off again. It is itself superficial. This is not to say that putting on the same ideas, thoughts, and approaches day upon day will not shape something more fundamental, but this shaping is accidental. The substance of training is to provide you with the necessary equipment to accomplish some task.

Education, on the other hand, is not a putting on, but a process of nurturing the heart and drawing out what lay hidden there. It is making explicit and submitting to question what was before inherent and unquestioned.

Education is long, hard, and requires significant effort. Training can require great effort as well; it is not by effort alone that these are distinguished. If you think a while, you will likely find that you know the difference already. The two feel different, as they differ in kind.

Training is fast and rushed. You seek to throw as much in your toolkit as possible as quickly as possible.

Education is by necessity slower: it is slower not only to bear results, but slower because it requires pausing in the stream of thoughts and circling and recircling the same issue. Education happens when something yields up a kernel of truth; when a question resolves itself, rewarding you with a previously undiscovered insight, and generates yet more questions.

There is also a difference in direction: training is primarily, in both its effort and ornament, an external process; education, while relying on external stimuli, also relies on internalizing, transmuting, and re-envisioning those external stimuli.

Ultimately, training amounts to consumption and appropriation: education, to production and generation.

I am thinking about this tonight because I am frustrated by how easy it is for me to train myself, how readily and rapidly I assimilate new facts, and how bad I am at producing anything of value. Like a dog, I perform tricks for treats, but there is nothing there but flash, and when no-one demands anything, there is nothing.
1 comment|post comment

Cross-compiling gcc-4.3.3 under Mac OS X 10.5.6 [20 Mar 2009|09:14pm]
[ mood | frustrated no more ]

I had a devil of a time cross-compiling gcc to be able to work on MIT 6.828 Operating System Engineering.

During compilation, it couldn't find the MacPorts-installed libgmp or libmpfr, which I installed after it complained it couldn't find them in the first place. After I fixed that, it complained about not finding libiconv during linking. So, I told the linker to look right around where it was. It failed for another reason, so I focused on building just the C compiler. I found that I should be building in a separate directory, and tried that. It got pretty far, but then complained of not finding symbols that I knew should be there while building libssp.

More poking about revealed that that doesn't ever really build out of the box for cross-compilation, but it's also likely not needed. So, I omitted it. Finally, I was able to build and install my cross-compiler.

The steps, as best I remember them:

  • Download binutils, configure, build, and install. (I believe that configured, made and installed with no problems using ./configure --target=i386-jos-elf.)
  • sudo port -d install libgmp libmpfr
  • Download gcc (the GNU distro, not Apple's) and unarchive it.
  • cd gcc-4.3.3 && mkdir objdir
  • cd objdir && $PWD/../configure --target=i386-jos-elf --with-gmp=/opt/local --with-mpfr=/opt/local LDFLAGS="-L/opt/local/lib" --enable-languages=c --disable-libssp
  • make
  • sudo make install
You should now find you have a /usr/local/bin/i386-jos-elf-gcc.
post comment

Enums are not ints [05 Oct 2008|02:26pm]
I'd always been under the impression that enum values were interchangeable with ints. I was thus quite surprised by the behavior demonstrated by this code:
#include <stdio.h>
#include <stdlib.h>

main (int argc, char *argv[])
	enum LeftOrRight {left, right} dir;
	dir = left;
	printf ("dir = %d, dir == 0? %s\n", dir, (dir == 0)? "YES" : "NO");

	dir = -1; /* not in enum, but a valid int */
	printf ("dir = %d, dir < 0? %s\n", dir, (dir < 0)? "YES" : "NO");
	printf ("(int)dir < 0? %s\n", ((int)dir < 0)? "YES" : "NO");
Running this produced the following output:
dir = 0, dir == 0? YES
dir = -1, dir < 0? NO
(int)dir < 0? YES
It was only when I turned to the C99 standard that I began to suspect the problem: the underlying type is not necessarily an integer, rather, "Each enumerated type shall be compatible with char, a signed integer type, or an unsigned integer type. The choice of type is implementation-defined, but shall be capable of representing the values of all the members of the enumeration." Indeed, playing around with dir in gdb quickly revealed that the underlying type was unsigned – hence the failure with the less-than-0 test without the cast to int.

I discovered this when I set an enum variable to -1, ran it through a loop that might change it, and then tried to test afterwards if it still had the invalid (not in the enum) value -1. Casting worked to test this, but the better solution was to redefine the enum:
enum LeftOrRight {neither = -1, left, right} dir;
post comment

Why I don't like Java [24 Sep 2008|11:44am]
Another reason for the unpleasantly large size of modern language [sic] is the need for stability. I wrote C++ code 20 years ago that still runs today and I'm confident that it will still compile and run 20 years from now. People who build large infrastructure projects need such stability. However, to remain modern and to meet new challenges, a language must grow (either in language features or in foundation libraries), but if you remove anything, you break code. Thus, languages that are built with serious concern for their users (such as C++ and C) tend to accrete features over the decades, tend to become bloated. The alternative is beautiful languages for which you have to rewrite your code every five years. (Bjarne Stroustrup, creator of C++, in an interview with Computerworld; emphasis mine)

Every time I've looked at Java, I've ended up scratching my head and looking elsewhere. I just find it unbelievably ugly and bloated. C++ I find quirky and massive, but I don't feel it's bloated; just big. That's likely due to the somewhat anemic – from the point of view of an application developer – standard library: since it's not coupled with a particular platform, as Java and the JVM or Objective-C/Cocoa and Mac OS X, this is unavoidable.

A good part of my dislike of Java likely stems from its Sun-provided libraries, but the language itself feels verbose and inelegant. If I ever end up using Java in any form, it won't really be Java but some other language targeting the JVM, whether it's some other language reimplemented in the context of the JVM, like JPython, or a language designed from the start to run on the JVM, like Scala or Groovy.

One good reason why I like working with Cocoa is that I feel the solutions embodied in the framework are often elegant and sometimes even surprising. I feel like learning the framework is going to improve my abilities to structure a solution; whenever I look at Java, I mostly feel like I'm seeing the negative example of what not to do in a large system.
1 comment|post comment

Google Chrome [13 Sep 2008|01:06pm]
Google Chrome
Google recently publicly released a beta of its open-source browser, Chrome along with a comic book explaining some of the reasoning behind the project. Unfortunately, it's Windows-only (Vista or XP SP2) right now; while Linux and Mac versions are in the works, it will likely never support PowerPC, so my old PowerBook has taken one more step into obsolescence.

Still, I just tried it out using my fiancée's computer. While I was impressed by how snappy it felt, what I really liked was the way it succeeded in getting out of the way of the content I was trying to view. I've always hated the status bar at the bottom of my browser window, but I can't bring myself to get rid of it because I rely very much on the context it provides when I mouse over a link. I never want to click on a hyperlink without seeing first where it will take me. So, the 99% of the time I'm not about to click on a link, it's just dead space. Chrome avoids this problem by displaying what's conventionally status bar information in a transient box fit to the text at the lower left of the window.

It also puts the location bar inside the tab, where it belongs, rather than above the tab. If you click from tab to tab, you'll notice the address there changing with the tab: it's a property of the tab, not of some omnipresent bar.

Still, in the couple minutes I used Chrome, I didn't see a ready way to hide the omnibar (location/search/history bar) beyond turning a webpage into an application. At least in Firefox on OS X, I can hide the buttons and search/location bars with a single click on…whatever that gray oval bubble in the upper right is called. There's probably a full screen mode, though I didn't think to look for it then.
post comment

For software projects, "Download" should directly fetch a usable file [21 Jul 2008|11:58am]
Downloading software is often made more difficult than it should be. A long list of files should not be presented when users expect a download to simply begin. If a list is used, it should be short and the choices clearly differentiated. The download process should favor immediately usable downloads over source code.
Try this: pick a freely available program you use regularly. Head to its website and try to download the current version. What happened?

If you couldn't download the current version from the main page with a single click, the website has failed at one of its fundamental tasks: to deliver the program to the interested user. It's failed by making this simple step needlessly complex. There are a variety of complications out there, ranging from the slight pothole of "which mirror do you want to use?" to the unsightly chasm of "umm, I know you clicked the button for version 2.0, but, uh, here are all the project's files! Enjoy!"

Over the past several years, most software projects have realized that giving you a long list instead of a file is a bad idea. SourceForge, which now hosts over 180,000 open source projects, was an early offender; its default project homepage is confusing and buries the download off the main page in a list of files with icons that never do what I think they should. But, a quick survey of some projects hosted by SourceForge shows that most successful projects have worked around it. Some projects, like Growl, a notification system for Macs, make downloading even easier by providing a large button dominating their front page.

But others somehow continue to needlessly complicate downloading their software. PHP continues to make you select a mirror in a less than intuitive fashion on a page two clicks away from the main page. You still have one more click to go to start your download – once you figure out where to click. (And you can only download source code unless you want the Windows version!)

It gets worse, though. Joomla (whose name officially ends in an exclamation point), a content management system I learned of recently, was a pain to set up (thank you, dependencies). But before I could worry about setup, I had to download the darned thing. Clicking on the big download link near the top of the page takes you to a big, confusing list of files for several different versions and flavors, each available as three different kinds of archives. If you scroll down and click on "download" in the version 1.5 box off on the side, you get…the first half of the big confusing page, which is slightly less big and still confusing. For another example, see the Apache project; I don't think I need to say any more about that mess.

Users should demand, and designers should supply:
  • A single, large download button that starts a file download immediately if at all possible. Growl does this well, though you'll have to click to About to figure out what the program does.

    Multiplatform support provides no excuse for a hard to navigate download process. The Mono project's download page is a great example of providing multiple download options without causing confusion. The downloads are segregated by platform; each platform is identified by name and symbol and clearly distinguished from the others.
  • Directly usable downloads. The Mono project's download page also gets this right: source code is available, but the page focuses on making it easy to download something that will work out of the box.
  • No separate page purely to begin the download. This is unsightly, confusing, and likely most commonly encountered when downloading something from SourceForge. There, the download page looks nothing like the project page that linked to it, and the fact that the page tells you to click something if the download can fail to start must make you wonder why they don't simply link directly to the file. If they want to automatically redirect you to a mirror, rewriting the link target on the download page dynamically would be better than bouncing you through another page.

Next time you go to download something, think about how many clicks it takes to start your download and how long it takes you to figure out where to click. It's time to demand simple things be simple.

SourceForge Projects Surveyed
The projects I checked on SourceForge were:
  • BibDesk, an excellent bibliography management system for Macs
  • Chmox, a good-enough Windows help (extension .chm) file reader for Macs
  • Azureus, a BitTorrent client for the Java platform.
All of these are my go-to programs for their designated purposes, except Azureus. My friend Ed recently introduced me to Transmission, which works very well on things that aren't Windows; on Windows, I've come to prefer µTorrent to Azureus. Azureus always feels sluggish and bloated; maybe it's my five-year-old hardware, maybe it's the lingering curse of Java, but either way, I'd rather use something else.

Exclamation Points in Names Are Bad
I know it's officially named "Joomla!". I also know that a name with an exclamation point looked ugly in text when Yahoo did it and still looks ugly today. Question marks would also be bad, but for some reason no-one wants to name their product something like "Whizbang?" or "SuperTorrent?".
post comment

User Input Validation [20 Jun 2008|11:31pm]
While investigating Adium bug #9757, "User Permitted To Enter Negative Time To Idle", I discovered that Adium was not really doing much user input validation in their preferences. There are only a few places where the user is allowed to supply more input than checking a box or selecting an option from a drop down list. These all involve entering numbers:
  • After how many minutes of inactivity should Adium start broadcasting that you're idle?
  • After how many minutes of inactivity should Adium switch your status to some message of your choice?
  • How many messages from the log should Adium supply as context in newly opened message windows?
  • For a given account, what port should Adium try to connect to?
In all of these cases, you can do really weird, nonintuitive things without Adium appearing to complain. For example, I've temporarily configured Adium to try to connect to AIM using port -41.5. Sometimes, you can get around the max on the number of context messages to supply; sometimes, you can't; regardless, the error sheet sucks. I don't know what I can do about that now, though; I believe Adium is string frozen at this point (no rewriting or adding any user-encounterable text) so the localizers can finish their work in time for the 1.3 release.

It turns out there are a lot of subtleties to make sure user input is properly validated and feedback provided. Cocoa (Apple's primary framework for application development) makes a lot of things easy, but it doesn't quite succeed in fixing up all the issues here for you, though NSNumberFormatter does provide most of what you need to get the job done. Fortunately, this sample chapter of Cocoa Recipes for Mac OS X treats the subject pretty thoroughly, so after some playing around, I think I'll be able to fix this up. I would say more, but I'm somewhat rushed right now.

Anyway, what actually brought me here was the accidental discovery of a repository of books on Mac OS X at ProMac.ru. (Note: The site is in Russian, but it provides links to Google translate, and most (at a glance, it looks like all but one) of the books are in English.) There's a reason why, whenever I'm looking for something somewhat dodgy with Google, I give it a go with site:.ru appended to the end. More often than not, that cuts the list of results down to a short list of truly relevant ones.
post comment

Temporarily escaped the .NET only to roll in the MUD [18 Jun 2008|01:07pm]
C#, MonoDevelop, and IronPython
I'm slowly crawling through C# 3.0 in a Nutshell. I think reading speed decreases roughly linearly with time already spent reading, at least when it comes to reference material. I had installed Mono through MacPorts, but I really shouldn't have bothered. The Mono site itself has a more Mac-friendly and better package of precompiled binaries available directly, including their IDE, MonoDevelop.

When I first fired up MonoDevelop, I was impressed: it didn't look like a Mac application, yes, but it was snappy. This is a sharp contrast to Eclipse, which runs like a dog on my laptop, to the point that I find it unusable. On closer examination, I was disappointed: the GUI designer, Stetic, that was touted on the Wikipedia page for MonoDevelop as well as by MonoDevelop's site itself was nowhere to be found! To me, it's really in graphics that an IDE can distinguish itself. It might come with better editing support out of the box – no need to write my own make (or, I guess here, nant) scripts, built in interface to the debugger – but, until it starts doing something clever with the fact that it's got a truly graphical interface, it's not much beyond what I can do with vim. And vim is a snappy little bugger on every machine I've ever used.

This lack was mentioned nowhere except some Mono forum postings, so I edited the Wikipedia page on MonoDevelop to add a new section on its support for non-Linux platforms. Stetic isn't shipped on Mac OS because GTK doesn't yet have working drag-and-drop in its Mac OS native incarnation, and drag-and-drop is kind of essential to a process that consists in dragging widgets and dropping them into place on a window. A good reason, but it would be nice for the documentation to mention this somewhere, anywhere.

Now that I'm getting past the part on C# and more into the part on the .NET framework, writing throwaway C# programs and then compiling and running is getting in the way of simply exploring the framework, so I grabbed IronPython. I'm still amazed whenever I manage to run a .exe on my Mac, but ipy.exe worked out of the box. Not without problems – hitting backspace gives me a visual display of control characters rather than actually backspacing, and hitting the up arrow key to move back in the command history after I've used System.Console.Clear() actually moves me up a line and starts writing over the already used part of the buffer, which gets really hard to read, it can take it a while to realize that some operation is not supported or not implemented, and the clr.AddReferenceByPartialName('blah') trick to get access to, say, System.Xml took some searching – but it's usable and makes playing around with things a lot easier, though there is something of a mismatch between reading about doing stuff using C# and doing it with IronPython.

A Tch of Mudding
When I lay down last night, I had fantastic thoughts going through my head in MUD-style, and since I couldn't sleep, I figured, what the hell. So I made one last stab at finding a decent Mac OS X MUD client, ended up with Atlantis (::shrug:: it's no Zmud), and logged in a bit as guest on MuddyWaters. It's been about, oh, six to seven years since I really played; it looks like they're going through record lows in the number of players. A good number of the people who were wizards back then are still wizards of some sort now, though some new names have moved pretty high up in the hierarchy.

The wizards, for those unfamiliar with this sort of thing, are the ones coding the world; since this is an LP MUD, it's actually coding, too, not just filling in forms, which seemed to me to be the entire act of world creation in Circle MUDs and Diku MUDs and the like. LP MUDs are named after their creator, Lars Pensjö, as is LPC, the language the elements of the MUD's world are programmed in. LPC is a (normally interpreted) variant of C that adds a prototype model for objects, like JavaScript, using a strictly 1:1 file-object relationship (the name of the object in /dir/foo.c is /dir/foo), as well as support for maps (associative arrays, dictionaries, whatever else you might call them) and dynamic typing in the form of a mixed type.

Anyway, the wizards might still be active, but the players mostly aren't. The most I think I ever saw on was twenty, but frequently even back then, you'd find only five to ten. Now, it's more like one to five. I'd attribute the decline to the fact that there are a ton of MUDs out there, LP MUDs tend to be harder to get started playing than other sorts because they are more individual and have more ways to be difficult than just throwing strong mobs at someone with low stats, skills, and crappy eq. Also, many of the people who would be playing MUDs, and many more who would never have considered playing MUDs, are now playing the graphical MMORPGs that are available today, such as World of Warcraft. I'm afraid Muddy Waters might be on its way out: sad, but I don't think I'll be there to prop it up, either.
1 comment|post comment

LJ Clients [08 May 2008|03:52am]
Is it just me, or do all LJ clients suck? Most of them don't even appear to be feature complete. Many of those listed by LJ have since died or are at least being seriously neglected (and it will take some digging to determine this in most cases). Every client I've ever tried has never had anything that made it better than LJ's standard web interface. It was frequently more awkward to use than the simple online form.

The key to a killer LJ client would be to provide some new way of interacting with LJ that LJ itself does not provide or even cannot provide because it's "too heavy" – too resource intensive, requires moving too much information, or simply isn't doable in a web setting using the (un?)holy trinity of XHTML+CSS+Javascript. No-one seems to have implemented anything along these lines.

Too many LJ clients simply attempt to reproduce the online interface. The online interface has already been done. Maybe there are some user interface improvements you could bring to the table, but it's still mostly unnecessary duplication of effort. Not to mention that reimplementing the online interface is not exactly exciting, which might go some way to explain why most LJ client projects shrivel up and die.

Am I mistaken? Have I missed something? Do you use an LJ client that provides some killer feature that would make you hate to go back to LJ's online interface?

Brainstorming is in order. Four a.m. thoughts as spare bulleted list...Collapse )
6 comments|post comment

Typeweeny Idea [19 Jan 2008|10:11am]
Add decent justification/ragged right support and auto-ligaturing to text display in Firefox. For extra credit: enable tweakable character protrusion.

Mac OS seems to already do pair-kerning decently enough already, at least.

(Maybe I should file this under, "You might have been using LaTeX too long if....")
post comment

Program Transformation! That's the key! [19 Jan 2008|09:50am]
My baccalaureate thesis is proceeding apace. I'd be much further already if I'd realized earlier that I can get a ton more work done by sitting in a coffeehouse all day than by sitting at home and falling asleep in a quiet apartment while trying to read. I hope to get another ten pages written today.

I'm writing about compiling functional programming languages against the backdrop of compiling the more conventional imperative programming languages. I'm not going to get into the difference here just now. What's been important for me is that my background in computer science (CS) is not as deep as I'd like, and since compilers unify practically every subject in CS into one big almighty combination, I've had a lot of catching up to do. I was trying to understand the parsing part better, the part that takes in source code and understands how it fits together "as a sentence." (Parsing is an old word for what we call now sentence diagramming, when we even bother to teach it to grammar-school students rather than having them take multiple-choice standardized tests that are supposed to prove they're learning something. ::deep breath::) And I found that it's completely fascinating.[*] It's also similar to a lot else that goes on in a compiler. Compiling is just a continuous process of translation from one form into another; take in characters, spit out parsed text, sanity check it, transform it into a more optimal form, then transform it again to code that your computer can run.

Well, today I figured I might want to cite some papers on a certain kind of parsing, so I went searching for citations. And found some really interesting stuff, but it was what I didn't find that really mattered: when I couldn't get access to a paper through my university, I ran a web search and came up with Program-Transformation.org. It's a wiki founded by one of the researchers whose paper I was searching for, and it's got more than enough information to, say, let you spend a good part of your graduate school years having a lot of fun....

So, that's what I'm interested in, here: not compiling, as I first thought; not parsing, as interesting as that is; no, it's program transformation that subsumes all of these, and that's what I find so totally awesome. It might also go some way to explain my interest in functional programming (and even, gods help us all, logic programming, or, worse perhaps, their bastard child, functional-logic programming...): it eventually gets turned into an imperative program to run on your computer (unless you happen to built a custom dataflow machine, in which case you are awesome), but it's an entirely different way of thinking about and performing programming that requires, well, transforming the way you think and your entire approach.

ETA: On the other hand, this still doesn't explain why I think abstract machines are just the cutest and coolest little things since sliced bread. I want a pet pushdown automaton (PDA)! I'll take a pet finite automaton, too, but only if the PDA won't pick on it for being weaker. I think that might be more tied into why I think embedded programming or assembly is neat: you have to do a lot with very little. (And then it turns out you can do a lot more than you might think, and our hero (Church-Turing-Kleene?) saves the day.)

[*] I was also lucky enough to scare up the work of Dick Grune....Collapse )
3 comments|post comment

Managing Post Visibility [13 Nov 2007|11:29am]
LiveJournal gives you a lot of control over who can see your entries. Every time you make a post, there's an option to make it visible to everyone, those you've friended, only yourself, or any collection of groups of friends that you've defined elsewhere. But if you change your mind about who should be able to see a whole lot of posts, you're in a pickle.

If you're a paid user, you can take advantage of the edit journal privacy tool that LJ finally introduced a while back--if you know it exists and can find it. It's not listed in LJ's site map, and searching Google for security mass-edit, edit security, or the like for LiveJournal will find the many times that users have suggested LJ implement something similar or wished they could find such a tool, but it won't ever actually turn up that page. And if you're not a paid user, you won't even get to be tempted by the interface: you'll only be told that, shame on you, you haven't paid up. If you want to even see what's behind curtain number one, you have to pay first.

I was a paid user for a year, but I never discovered this tool. I tried to scare up something similar a couple times and didn't have much luck, so I figured, whatever, it's not so bad to have all those juvenile writings from high school hanging about for the world to read, right? Recently, though, I decided I'd rather not have those hanging about. I tried a few LJ clients, but their support for managing security settings was no better than what I got through LJ's own web interface. After looking and looking, I found a collection of Perl scripts under the name of LJ Tools, and among them was ljsecedit.pl. This got the job done, but it's pretty crufty (particularly when it comes to date-handling), required some hacking at to make it do what I wanted, and connects to LiveJournal in an insecure fashion. The hacking I did at it would be beyond a fair number of users, and never mind the assumption that they'll even have Perl installed.

I'm no great shakes at Perl, so it's beyond me to hack that script up into anything resembling something full-featured and user-friendly. User-friendly really means having a readily runnable executable with a GUI, which is a notorious pain to pull off in any portable fashion. Sure, there's GTK and wxWidgets and such, but none of those come preinstalled with either Mac OS X or Windows. You're lucky if the Mac user's bothered to install X, and I imagine getting X to run under Windows is not exactly painless. It's things like this that drove people to Java and then to the Web.

I don't know Java, either. But I can do Webly things. So, with that in mind, I've been eyeing Adobe AIR, which lets you create an application that sits somewhere between desktop application and in-browser web application. I'm looking into it, and I think it might just be possible to throw something together that can actually make managing post security relatively painless.

So, if this is something that would interest you, I'd like to know: What have you wished you could easily do to manage your post security? How have you wished LJ would support this?
1 comment|post comment

UPDATE: Wish: Journal Article "Package Manager" [29 Oct 2007|11:03am]
Recently, I wrote that, "One of the things I would like to see happen with the burgeoning open access movement is something that would let me do things like visualize "dependencies" and pull up articles at will...." Today, I'm catching up on OpenAccess News (OpenAccess newsfeed here), and lo and behold, it seems some enterprising researchers have already started working on this:
PaperScope is a graphical tool for exploring the data holdings of the Astrophysics Data System (http://adsabs.harvard.edu/). It enables the user to explore the relationships between Astrophysics papers and locate papers of research interest.
You can read more about PaperScope, or if you prefer pictures, just check out its interaction example. How long till this comes to other services? For example, arXiv, the humongous math-science preprint repository formerly hosted by Los Alamos National Labs, has recently opened its API.
post comment

Download a Firefox, Build a Thunderbird Optimized for Your Mac [28 Oct 2007|12:32pm]
I open Thunderbird whenever I decide to check my college-provided email account. It doesn't do me any good to leave it open, since I never have anything terribly time-critical coming through there and, eventually, the IMAP server seems to get annoyed with Thunderbird checking for new mail every several minutes and stops responding, so I immediately close it. Opening always took what I'll broadly estimate at 10 seconds, and closing took a seemingly random amount of time varying from immediate to, "I've had enough of this spinning rainbow wheel, I'm sending your process SIGTERM right now and you better like it. And if not, I've got a special SIGKILL saved just for you."

Firefox, on the other hand, I leave open forever. I'd leave it up the whole 45 days or more my computer is up, reboot, and open Firefox again. At least, I'd leave it up that long if I could. But it eventually runs slower and slower and responds worse and worse, till, finally, I find I either can't bring the window into focus or can't switch out of it. The rainbow wheel starts spinning again, trying to quit out of the application doesn't work, and, finally, it's SIGTERM time. Then, I immediately restart it, and the process begins again. Only it gets to that unusable stat sooner. Eventually, I just restart, and I'm back where I was.

Over time, this got more and more annoying to me. I moved to Firefox because it was better than Safari, so I'm not going back there. Omniweb is best left as part of early OS X history. I still remember Opera as this ugly browser that showed adds, and super lightweight Dillo doesn't do secure HTTP. I tried Camino. It was okay, but with it, I saw an ad, and I wasn't able to nuke it. I need AdBlock Plus. So, I've got to stay with Firefox.

But, looking into Camino, I found builds optimized for various Macs. G3, two flavors of G4, G5, Intel—I'd never heard of these optimized builds. So, I was off to find an optimized Firefox.

ElFurbe does nightly optimized builds of Firefox 2 and Firefox 3 and posts them at firefoxmac.furbism.com. If you're using a G3, G4, or Intel Mac, are you ever in luck. The optimized Firefox of his that I'm running now starts up in no time, responds faster, and, so far, has given me none of the problems its ungainly official brother did. (It's only been up for half a week so far, though, so we'll see if that keeps up. Regardless, it's more responsive.)

But I couldn't find an optimized build of Thunderbird anywhere. I looked everywhere and had no luck. So, I finally decided to build my own. Getting ready to build a faster ThunderbirdCollapse )An optimizing .mozconfig template...Collapse )Building is easy!Collapse )A brief word on branding...Collapse )

I'm uncertain of the legal issues related to distributing an unofficial build of Thunderbird, and I don't have much of the way in webspace, anyway, so I'm not planning to post this anywhere now, but if you want a copy of the PPC 7450 version I'm using, I can likely get one to you. I can say that my optimized build of Thunderbird starts up in a flash, is more responsive, and quits when I ask it nicely to do so.
1 comment|post comment

Wish: Journal Article "Package Manager" [26 Oct 2007|12:46pm]
A lot of the time, when I end up looking into a subject, I find myself chasing back through the citations. Sometimes, I run into dead-ends. Like today: everyone cites this one paper from 1972, but there's not a copy to be found online. It's locked inside of a Springer journal my university doesn't pay for. One of the things I would like to see happen with the burgeoning open access movement is something that would let me do things like visualize "dependencies" and pull up articles at will, as well as something that would let me do the equivalent of "pkg_add <article>" (or "apt_get <article>" or whatever other sort of package manager suits your fancy) and pull in all the dependencies of a given article, readily localizing an entire "tree" of knowledge. Combined with data visualization and annotation tools, this would be very powerful.
5 comments|post comment

[ viewing | most recent entries ]