CSS Layouts: More trouble than their worth.

No comments:
CSS is Wonky

There is nothing more frustrating than to see a gap in a CSS layout and
not know where it comes from. This is a fundamental problem with CSS.
Ideally the way you express a problem (e.g. "there's a 3 pixel gap
there: make it go away"), is related to the way you solve it. But with
CSS it becomes a whole thing (e.g. "well, the bottom div has a
clear:both on it but there's a line break between it and the previous
div which IE is (correctly) interpreting as whitespace, so I have
to...."). In a way, this is the story of a programmer's life: taking a
problem described in the most natural way, and making the correct
change to make it go away. But with programs, you can always fall back
to bits. With CSS you have to fall back all the way outside of CSS
(into a paint program) to fix things.

No-one denies that CSS is great for styling a document: setting fonts, background colors, and even working with margins, padding, and things like that. The problem is when you try to use CSS for page layout, things go a bit wonky. A lot of the problem is browser incompatibility; but I think CSS has some intrinsic "issues", both in it's syntax and in the way it's (not) debugged.

CSS Wonky Syntax

Consider what you have to do to center a div: you use #mydiv {margin: 0 auto;}. I find this counter-intuitive. What's wrong with #mydiv {align: center}? You could also separate "center" into "center-horizontal" and "center-vertical" if you really want to be pedantic. You will run into this problem literally in the first 2 minutes you try to use CSS for anything real.

It's also too bad CSS doesn't have any higher level constructs. Often when defining a layout you'll have a group of related selector/property pairs (for example, defining the properties of "#nav" and then the properties of "#nav a") but, except for comments, you have no way to group these selectors together. In fact, I think it would be cool to support nested selectors. Something like "#nav { background:blue a{border:none}}. This means that anchors in the nav context get no border. But that syntax doesn't work. This lack of grouping makes CSS messy.

CSS "NIH Syndrome" Wonkiness

CSS is trying to solve a problem that has been solved like a million times before. The problem is: how do you map from some plaintext to a pretty raster image? It's been solved by TeX, Postscript, RDF, and lots of others. CSS isn't even as good as these it can never have pixel level control over the display. In that sense it's a true partner to HTML which has always delegated pixel level control to raster formats.

CSS Debugging Wonkiness


For a programmer, one real problem is that we can't debug CSS like we
would debug anything other program. When something subtle goes wrong, I want to step through the layout program's steps to
find out what's going on. Yes, this might require that I glean some insight into how the layout engine works. Wow, what a concept! AFAIK there are no browsers that support
stepping through the browser layout process. I think that alone would
make people happier than they are today, where they are forced to treat
the layout engine as a black box to be felt out by experiment. So, in
many ways my frustrations with CSS mirror my frustrations with Swing,
but CSS is infinitely worse: I can always debug my Swing layouts, I
don't have that option with CSS.

(Of course, it took forever just to get a decent set of tools that could inspect the static state of a DOM (Firebug). I'm not holding my breath for a DOM renderer debugger that doesn't require you to have the source for the browser under test!)

What can fulfill the CSS Promise?


To me, CSS promises something good: a concise, textual way to describe how my documents should look while keeping the original document small and machine-readable. That is a wonderful promise, but it's not what CSS gives you. CSS gives you a world of hurt. The only reason people endure the pain of CSS layouts is because a) they have to or they'll lose their job or b) they think that because it's a standard it must be followed. I don't know about you, but I've tried pretty hard and I can't describe how my documents should look with CSS. I just can't. I can describe how they should approximately look on one browser pretty well. The amount of effort one reasonably intelligent person must expend to even get this far is too much.

When looks matter, use a raster. Photoshop is a really good way to specify pretty pictures: use it! Use tables for layout! Be happy!

Or replace the program that maps from HTML to raster image; replace CSS. For example, create a full page Flash "browser" that reads the HTML it's embedded in and renders it according to some rules. In this way, machines would still have access to the data, but now rendering is done in a full-blown programmer controlled environment. History and bookmarks would work - the swf "browser" would just have to load again on every page. It could even be "built in" to the browser via an add on. The host rendering engine (gecko, webkit, etc) would be there just for backward compatability, and perhaps to render short sections of old-school HTML.

Canvas/SVG could be used as a Flash equivalent when it matures.



Is Java a Worthless, Piece-of-Shit Language?

23 comments:
Two recent articles got me thinking about this subject. I don't mean any disrespect to Java when I, too, wonder aloud: is Java a completely worthless piece of shit language that should never have seen the light of day?

How to begin this exploration of Java's weaknesses? Certainly there is no lack of options! Perhaps we can work backward from overwhelming evidence of Java's immenint self-destruction: the complete inability to compose libraries into useful applications; Java's inability to express even the simplest of programs without jumping through arbitrary hoops; EJB 2; or most damningly (in this author's opinion) Java's complete and utter lack of iPhone support.

For the sake of argument, let's begin with shockingly poor support Java has for the iPhone. It's so bad, in fact, that even the simplest Java programs will not run on the iPhone. Even as an applet Java won't work in the iPhone's browser. How could Sun be so obtuse as to not just make Java work? Did it not occur to them to make Java work on the iPhone? What sort of talentless monkeys does Sun have working for them anyway?

...

(If you couldn't tell, this post is a parody of the kind of rhetorical nonsense that seems to be making the rounds about Java these days. If you want to dis Java, that's cool: do so. Don't be a wussy and couch your attacks as inflammatory questions. Bruce Eckel doing it is bad enough, but then you have that Shawshank Redemption guy trying to ride on Bruce's dishonest coat-tails. Shame on you, Shawshank!)

"You're Delusional!"

No comments:
Occasionally in arguments someone will say "you're delusional!". This is usually a rhetorical device that merely indicates that there is a basic flaw in some assertion of fact. The interesting thing about this argument is that it can always be symmetrical: the same claim can be made by the other party, creating an "is not! is too!" impasse.

The rhetoric of "You're delusional!" is particularly worrying because of the difficulty in actually resolving a genuine claim (which I get into later). Furthermore, attacking someone's very connection to reality in the context of some (usually minor) conflict is often a variation of an ad hominem attack - it's a more sophisticated sounding form of "You're wrong because you're an idiot." I don't deal with that usage in this post; I only deal with the case where the accuser genuinely believes that the accused is actually delusional.

So how does one breach the "is not! is too!" impasse that a genuine, heart-felt accusation of "You're delusional!" creates?

To find a solution, let's start with a hypothetical case of simple delusion. Let Alice and Bob be friends, and let Alice be delusional about the weather: it's raining and cold, but she keeps saying, "Look how sunny and warm it is!". Bob tells Alice, "you're delusional!" As expected Alice makes the counterclaim, "Bob, you're delusional! It's sunny and warm!" Assuming that Alice is an otherwise a rational person, can she be convinced that she is, in fact, the deluded one?

The answer is yes, but only with certain preconditions. The primary thing is that Alice needs to listen to Bob, and be convinced that, at the very least, he's not being malicious and actually trying to help her. She also needs to have an open-mind such that, no matter how ridiculous it sounds to her in the moment, that she may be wrong. Third, she needs to care enough about the assertion about the weather to take the (possibly substantial) time fixing the delusion. Fourth, in general, both parties have to enter into a symmetrical agreement to take the time to resolve the matter: Bob will get a chance to convince Alice, and Alice will get a chance to convince Bob.

Once these 4 preconditions are met, Bob begins. The first thing he might do is probe the limits of Alices delusion. For example he might ask her, "do you believe that when it rains it makes things wet?" This can eliminate misunderstandings with language and "common knowledge". He can then start verifying the commonality of their physical experience: he might ask "Is my hand wet? Is this ground wet?" He then needs to verify her ability to evaluate basic syllogisms: when it rains, the ground gets wet; the ground is wet; therefore it's raining." (That's not a very good syllogism, since ground can be wet for many reasons, but it's good enough for this example)

Presumably if Alice's delusion doesn't extend too far (for example, if she didn't except the existence of water, it may be hard to convince her of rain!) she may be convinced that she is delusional. Of course, once convinced of her delusion, she's bound to be genuinely puzzled and maybe a bit miffed. "I accept that it's raining, but why didn't I think it was?" she asks, genuinely perplexed. Good question, but the possible reasons for delusion are beyond the scope of this post. Maybe it was a bump on the head.

(It was fortunate that Bob went first; if he had gone second, it might have taken Alice a very long time to become satisfied that she could not get Bob to the desired conclusion, despite her best efforts. For this reason this process needs a time limit!)

Alice may go beyond being miffed and have an unhealthy reaction and become angry. She wanted to be right, and was proved wrong! It hurts the ego to admit "defeat". She's ashamed. Acting emotionally, she may be tempted to throw a wrench into Bob's program: she may "forget" one of the syllogisms parts, or suddenly reverse an earlier agreement, for example. If Alice does this, Bob either has to patiently wait for the fit of pique to subside, or he may just decide to walk away forever.

(This unhealthy response from Alice is even more likely if the delusion is about something she's attached to: the classic example is the mother clinging to her dead baby, hysterically claiming that it's asleep. Her mind cannot accept the reality of her loss. In this case, an intellectual approach is obviously wrong; it would require someone of great emotional skill and wisdom to find a solution.)

Assertions of verbal (or emotional) harm are very common, and very commonly defended against with some variation of the "delusion" defense. Let's create another situation: Alice and Bob have guests over, and during dinner Alice reveals that Bob has a hairpiece. Bob is mortified; he is very sensitive about it. He's vain, and he knows it, and so does Alice, but he can't help it. Alice, says, "Oh Bob, his hairpiece fell off the other day and he bought an expensive hat just to cover it up! He's so silly!" and has just shattered Bob's precious "natural hair" image in the minds of their friends, and Bob is crushed. Bob passes it off, but confronts Alice later on: "Alice, how could you reveal one of my closest secrets to our friends? I was deeply embarrassed and am very angry with you!" There are a couple of possible delusional responses from Alice: "Bob you heard wrong, I never revealed your secret!", "Bob, I revealed your secret, but it didn't cause you any harm!", or "Bob, I revealed your secret, and I caused you harm, but I didn't mean to cause you harm." In every case Alice's motivation is two-fold: first, she doesn't want to disturb the image that she has of herself as a good person (after all, Alice The Good Person would never harm anyone!), and second she's defending herself against Bob's anger by avoiding responsibility for her action, hoping to cause confusion in the mind of her accuser.

At this point Bob calls Alice delusional, (and, of course, because of symmetry, Alice responds in kind). Emotions are high, so it's not likely that such an impasse can be fixed immediately. But once things have cooled down, Bob confronts Alice again: "Alice, why did you hurt me like that?" (Why is Bob confronting Alice? In the first case it was out of goodwill; he wanted to "fix" his friend worrying delusion. In this case, he either wants revenge (unhealthy) or succor (healthier). Revenge is easy to understand; for succor he may just want Alice's acknowledgment of the reality of his suffering, an apology, and the small dose of positive feelings from Alice). Let's say Alice has also cooled down, but remains defiant: "I didn't hurt you. It's all in your mind, you're delusional!" This is a tough one because the fact of the harm really is only in Bob's mind. How then can he "prove" that her action caused him pain? The fact is that he can't! However, he might make a merely convincing argument. He might do so by describing a similar situation that she can relate to, or he might poll for a consensus view (e.g. ask a bunch of people if they think it's "reasonable" for Bob to feel harm). For the former approach, perhaps Bob knows some vain secret that Alice would not want revealed: Alice puts cheap wine into more expensive-looking bottles when guests come over. He might ask her: "How would you like it if I revealed your wine secret?" She may understand the analogy, or she may protest, "Bob, that's completely different." Of course, it isn't different, but if Alice takes this position, Bob might be able to break it down for her and show the similarities. It would require Alice to be quite calm, cool, and particularly self-aware. These are difficult attributes to have in the best of times, and more-or-less impossible to have in the heat of emotional conflict. The difficulty of obtaining the preconditions for conflict resolution explains why so many of these conflicts never reach satisfying conclusion and fester for years.

What should you do in this situation if you're the accuser (Bob)? What if you're the accused (Alice)?

From a practical point of view, if you're accused it's best to simply believe accusers who say they've suffered harm from you. You may not understand the precise mechanism; and the person harmed may also not understand it. But the harm exists. Sometimes it can come as rather a shock to realize you've harmed someone, especially if you have a particular view of yourself as a good, harmless person. (Of course, there may be some ulterior motive for a victim claiming harm; but in real emotional situations this is rare because admission of suffering harm is seen by many as an admission of weakness, and people when they lie tend to lie on the side of strength not weakness. Some passive-aggressive people make a big show of suffering, but that's less common than people hiding suffering.)

If you cause suffering unintentionally but you understand the mechanism of harm, what is the right course of action? In other words, what is articulatable solid nugget of wisdom that you can write down and remember for next time? If Alice says, "Bob, I'm sorry I said that, and I'm sorry I hurt you; I got caught up in our conversation over dinner and completely forgot that you were sensitive about your bald spot. Can you forgive me?" what does Bob say? This shows a lot of love from Alice to Bob; he gets his succor. It also shows that she's ready to accept herself as imperfect, AND to take responsibility for her imperfect actions and to strive to do better (in this case, to avoid getting so "caught up" in a social situation that she makes harmful verbal blunders.) And Bob? He might be gracious in response, "Alice, of course I forgive you; it was an honest mistake. Thank you for your apology; it's just what I needed and I feel better about the whole thing already. [laugh] Can you forgive me for being such a vain fool?" And the love flows once again.

If you suffer, and accuse someone of causing it, first realize that you will be revealing a weakness of some sort: if you didn't have the weakness, you wouldn't have been harmed! In Bob's case, his weakness was vanity, but it could be anything. Second, be clear on what you want from the accused. With verbal harm you probably just want the accused to acknowledge the reality of the harm, accept responsibility, and apologize, as in the above example. (However, you may want more, such as some sort of restitution. Be careful though and make sure you're not looking for revenge). Stay factual, and try to remain aware of the fact that you're probably accusing someone you care for and want to continue a relationship with (if you didn't you wouldn't bother accusing them!). Pay attention to the accused's face and see how they react to the accusation; expect hackles to be raised when their self-image is threatened. Recognize that accusation of verbal harm is never the ideal path; the act of accusation itself is always somewhat harmful to the other's ego. Recognize it has an imperfect request for a form of succor from the accused. Be careful that you don't use accusation as a retaliatory weapon; the accused will sense it, emotions will run hot, and no resolution will ever occur. If the accused uses the "you're delusional" defense, and you're not cool enough to handle it, have them read this post!

(It's not related to the "You're delusional!" topic, except tangentially, but it's worth noting for both the accused and the accuser: recognize those times when you intended to cause harm, and why. A lot of people in this culture rarely think that they intended harm. While it's true that confusion and thoughtlessness counts for far more harm than malice, the latter must be acknowledged. Be open-minded about your own capacity for genuine malice! I think that all too often in this "enlightened" time we're trained to forgive and ask forgiveness, even when we don't mean it. This helps us maintain our delusion about being "good". We are trained to deny our darker sides, and by ignoring the dark we let it flourish. The specific problem with "false forgiveness" is that the value of forgiveness is not only wasted, but then compounded and made worse with the lie, making it very dangerous. A repressed grudge is more deadly than an open one because grudges, like mushrooms, grow in the dark. They shrivel in the light. No grudge is best, but you don't have direct control over the growth of a grudge (and may you be blessed with mental soil inhospitable to grudges!))

Goodbye Heath Ledger

No comments:
Heath was a great actor. One of those actors I badly wanted to pigeon hole into "pretty boy heartthrob" status. I very much wanted to dislike him but his sheer acting ability earned my admiration despite myself. (Leonardo DiCaprio and Johnny Depp fit this category, too). His passing is a loss to the art of acting.

Android on the iPhone

No comments:
When I read the newly leaked "Little Bear" iPhone SDK 1.1.3 docs, my eyes cross. I have an iPhone. I love it. I want to hack it. But I don't want to code in C++. Please, Google and Apple, please tell me that you plan to implement Android on the iPhone.

Two choices for controlling data: control the box, or control the pipe

No comments:
AT&T wants to control the pipe (video below). DRM wants to control the box.


Props to Joel Johnson for bring this up on an AT&T sponsored tech show; it's rather nefarious to hear the "HOLD PLEASE" on the loud speaker that ends this video.

I cannot recommend Pulse

No comments:
In a previous post, I waxed enthusiastic about Pulse. I have to regrettably retract that enthusiasm. Pulse is a great idea, but it's not ready. There aren't enough plugins available to make it useful; it's own installation is a bit iffy (you cannot install into a custom directory; there is NO uninstallation option).

EasyEclipse.org is a superior alternative for those looking to control their Eclipse stack.

When Google's Parents leave town for the weekend

No comments:

Idea: Google Calendar-to-iPhone synchronization on Windows.

No comments:
The problem has already been solved on the Mac. Apart from being inaccessible to Windows users, it is not the ideal solution.

There are three ways to approach the problem for Windows users:
  1. Google Calendar -> iCal -> Outlook -> iTunes -> iPhone (Google Calendar supports the iCal data standard)
    1. Pros: Simple to do if you know VBA; has utility outside of the iPhone sync problem.
    2. Cons: Keeps you tied to two proprietary pieces of software; probably fragile; requires two steps to sync.
  2. Google Calendar -> iCal -> iTunes -> iPhone
    1. Pros: eliminates the two-steps to sync problem; reduces amount of local software
    2. Cons: hard to implement (I don't know how to extend iTunes, although iTunes has been extensively modified)
  3. Google Calendar -> iCal -> iPhone
    1. Pros: eliminates the need for a PC entirely
    2. Cons: very hard to implement (possibly even illegal to implement, if Apple continues to insist on their ridiculous claim to control the iPhone); not appropriate for users who still want to use Outlook.
The third option is the best for me - if I can remove Outlook from my computer, that's all to the good. It is not the best for people who want to use Outlook.

I'm almost certain that people at Google and Apple are working on this. After all, it's very similar concept to the iPhone's wonderful Maps integration (Google provides the great service, Apple provides the pretty interface). However, if they aren't, there's an opportunity for someone to address a real need. I would probably pay $30 for this.

Game: portal video

No comments:
Check out this amazing solution to Portal Chamber 13 in only 12 seconds!

(Also, this site, wegame.com, is really great. Thanks to Veronica for the link!)

Coffee Shop Wisdom: The Drug Rep

No comments:
"It's hard to break into an industry dominated by hot women. I have to make up for it with job experience."

"Pfizer is particularly known for the attractiveness of it's drug reps."

Twist of Irony: an unusable site on usability

No comments:
Load up this site from a "user experience master" on Firefox:

http://www.billbuxton.com/

:)


Ah, and he has also published a remarkable number of videos. Here is one from 1981.

An example of true craft

No comments:
An older man patiently hand-crafts vaccum tubes in this truly remarkable video. I can only hope to have that sort of skill in anything. I am in deep awe.

Learning Scala

No comments:
http://feeds.codecommit.com/~r/codecommit/~3/212445924/scala-for-java-refugees-part-1
http://alblue.blogspot.com/2007/10/scala-introduction-to-scala-interpreter.html

A router lesson learned

No comments:
I've been having strange, intermittent problems with my router, uncluding strange, inconsistent dialogues from the Windows Zero Configuration tool.

After looking at this and that, I finally figured out the problem: DHCP was confused. I had reserved some IP addresses for my systems for port-forwarding purposes, but the DHCP address pool included those addresses. By removing those IPs from the DHCP IP pool all of these weird problems went away.

I'm very pleased to have finally fixed this, but I have to say it was incredibly hard to find because the symptoms are so strange and looked like everything from a client software or hardware problem up through to a bug in the router firmware, or either side's ability to negotiate with encryption. The dynamic nature of DHCP did not help; it now becomes clear to me why the symptoms were so variable - it depended on the order in which devices joined the network!

One would think that the router would be intelligent enough to exclude known-assigned IP addresses from it's DHCP pool, but nope. One would also think that Windows (or even the router) would be more intelligent about reporting IP address conflicts.

But really, the flaw is with the router firmware, specifically with Netgear's DHCP implementation. What I think was happening is that DHCP was trying to assign a bad IP, failing, and then starting over with the negotiation (which caused a weird "network association loop" in Windows).

(Interesting factoid: my iphone helped solve this one. When it associated with the network, one of my computers FINALLY gave me a useful error: something like "duplicate IP on network". That was like a lightbulb going off, and it was smooth sailing from there.)

A good find: EasyEclipse.org

No comments:
I was researching a method to uninstall or disable Eclipse plugins (I was having problems with subclipse) and ran into this nice resource, easyeclipse.org. It reminds me of Pulse but it's open source and some of their plugins look really neat.

Procrastineering indeed

No comments:
Johnny Lee is a brilliant engineer (PhD student at Carnegie Mellon HCI) prone to making high-quality howto videos, including how to use your wiimote into a head tracking 3-D display. He has a blog called "procrastineering". Here's the wiimote video:

Amazon AMI list

1 comment:
I can never seem to find this handy list on the amazon site. So here it is:

The Amazon AMI list.

(For Elastic Compute Geeks only.)

Installing Bugzilla Part 3

No comments:
Previous posts on this were a bit confused, for the simple reason that I was a bit confused about the nature of Bugzilla, and I was also a bit too enamored with the prospect of a painless installation. Frankly if JIRA was free I would probably use it. Bugzilla is a webapp done in CGI, with a long list of perl and linuxy dependencies. Approaching it in this fashion, one can actually make headway.

The key to meeting Bugzilla's dependancies lies in getting perl on the command line to work. This means installing perl, which for me, meant cygwin. (There are other ways, including Activestate perl and XAMPP).

The other key is to get Apache and MySQL running. For that you need either WAMP or XAMPP.

I found that a bash shell was excellent for installing and managing the command-line dependencies, and that a cmd shell was excellent for checking that apache has access to the binaries. E.g. you run bugzilla's checksetup.pl from cmd, but you run perl -MCPAN from bash. Of course, the cmd shell has c:\cygwin\bin on the path so it can see the binaries.

Once this was established it was smooth sailing installing the perl packages that checksetup.pl indicated, except for the DBD packages. In those cases, I had to install the cygwin package (for postgres, in my case) before they would install. This is inefficient and potentially confusing, but acceptable for now.

I believe that there may be a market for a subversion/bugzilla AMI. :)

a bamboo mouse

No comments:
Good heavens, it's made of bamboo, in China. For $17. (It's here.)

The beatles: what joy!

No comments:
"Hello, hello! I don't know why you say goodbye I say hello!"

Genius.

iphone wants

No comments:

Stressed out Squirrels

No comments:
A researcher studied squirrels under stress and found that the key to success was found in neither too little nor too much stress, but just the right amount. It all has something to do with a hormone called cortisol. Fascinating stuff.

Ironman: a movie study in bad taste

No comments:
First, I like the idea of Ironman. It's a kind of romp, subtly criticizing the superhero genre for all it's juvenile testosterone laden fantasies.

But the timing could not be worse. Robert Downey Jr.'s character is taken captive by Middle Eastern bad guys and forced to build a missile. But instead he builds a robotic suit that helps him escape.

Excuse me, but there's enough bad blood between the West and the Middle-East right now, thank you very much. We have enough negative portrayals of Arabs and Muslims already. We don't need any more. And no, I don't care if this is a "work of fiction." It still sucks.

Actually what would be socially useful would be more peaceful movies about Middle Eastern cultures (and good heavens, there's more than Arabs over there!) - about families and individuals who resist violence in their own lives.

Idea: Sennhieser iPhone headphones; universal USB recorder; legit keylogging uses for authors

No comments:
To maximize PC performance, I listen to the music played by my iPhone snuggled in it's cradle next to my PC rather than iTunes. This is a nice arrangement, except I can't use last.fm, and more importantly when a phone call comes in I have to quickly unplug my headphones because they won't work with phone services (even though they work fine with iPod services). My Sennheiser HD560 headphones do not have a microphone, or an iPhone compatible jack. But they have a detachable cable at the headphone-end, and it would be a simple matter to manufacture a replacement cable with the appropriate plug and microphone. This would rock. I imagine this would be something of a niche market, but if you could build such a cable in China for $1 and sell for $30 over the internet, it might be worth doing. :) I wonder how many other headphones have removable cables?

The other idea came to me while playing piano: I want to jam on my keyboard and then sift through the MIDI results later, and I don't have a good way to do it right now. My keyboard does not have a built-in sequencer, and I would like to record my jams. It has a USB MIDI port though, and I was thinking it would be nice to attach a thumb drive, and transfer the data later to my computer with Ableton (this way I don't have to boot up into my computer to just jam and make ideas). But then I got to thinking, why not make it a universal recorder that just records whatever USB voltage wiggles it senses? You could use it as a keylogger, or a voice recorder, or whatever.

Speaking of keyloggers, here's a novel, legitimate use for them: let's say you're an author and you're going on a long trip and don't want to write in longhand (it's too slow, too illegible, etc), but don't want to bring a computer either. So you bring your favorite normal PC keyboard, and type blind into a special thumb drive. The thumb drive would need to be powered, but it would be a pretty darn efficient way to type simple journal-style content. Of course, higher end versions might have a tiny LCD display on the top so that you could catch your obvious mistakes as you type them, similar to what old Brother style hybrid typewriters used to give you. If you are a travel writer, you could slip the thumbdrive into an internet cafe, and dump the text into a web-based client software that would help you organize and edit what is bound to be a pretty messy text stream.


(Unfortunately this device would not be suitable for digicam backup because AFAIK cameras don't PUSH their data down USB, the data is PULLED by requesting client software. I'm not sure there are standards on requesting data. However, maybe the "direct print" interface present on some cameras) could be pressed into service for this purpose.)

Editing an impatient web

No comments:
The Buddha was called "the prince of patience." Patience was his hallmark. I bet he would have liked our adages "Anything worth doing, is worth doing right" and "If you don't have time to do it right, you better have time to do it again".

And yet I find myself being a bit hasty, especially with my blog posts, and quality has suffered. That's very bad: It has always been important to speak clearly, honorably, and with an eye to benefit the listener. And with the power of technology, the need for care in writing has only increased.

It hits me like a ton of bricks: I need an editor. A lot of us bloggers do.We need to learn to have more patience, to accept that our posts need to take longer to wind their way into the public Internet. Fewer articles with higher quality content would benefit everyone.

As an author, I need an editor, but how can I get one? Who is willing to tell me when my work is substandard and how to improve it (tighten! clarify! bad transition! fewer words!). What about providing editorial services to another author in trade? Do such arrangements exist? Do they work? Please do contact me if this notion interests you, or if you've heard of such a thing being done (successfully or not).

Is there an opportunity for software innovation here? Definitely, in fact there are two such. First, there is a great editorial tool waiting to be written that is like Google Docs meets SharedCopy meets voice recording. Such a tool might make more available inexpensive, quality editorial services. This hypothetical tool would allow an editor to read a document, highlight problematic parts, and either type in or or speak their feedback.

The second opportunity is to offer readers a reliable system that would guarantee a minimum level of editorial quality. This could take the form of a difficult-to-forge "I've been edited" badge, perhaps even with some notion of how many revisions the text has been through, and how much time human beings have spent working with the text. Such a rating system would give the social media crowd great leverage to make better judgments faster, allowing it to bring higher quality content to the forefront. If there were a de facto editorial tool, then such a rating would be straightforward to introduce.

Until then, I'll just have to be more patient.

Use Ruby to do 3D animation

No comments:
I like embedded languages.

MS Office has VB.
Flash has ActionScript
Photoshop has JavaScript
Browsers have JavaScript
SketchUp has Ruby

That's right, SketchUp, a free 3-D authoring tool recently caught-and-released by the Goog, has built-in Ruby. Now that's learning Ruby in style! Forget this webapp junk! Go do some 3D animation!