Blog posts

  1. Where I'm at right now on 1Password

    1Password isn’t the only company doing things I disagree with. Twitch, where I work, is owned by Amazon, which does stuff I disagree with as a matter of business all the time.

    I have friends who work at 1Password.

    Nevertheless. I sent this Wednesday morning.

    to: support@1password.com
    from: the-email-address-associated-with-my-account@example.com
    subject: DHH and Omarchy

    Hi,

    Please add me to the pile of customers who are disappointed that 1Password is using the money I have been paying for the past 15 years for a good product to enable and promote DHH. I’ve already seen the macro you are going to send me in response to this and if you are keeping track of sentiment there too, you can also add me to the pile of customers who are unimpressed by the hand waving in it.

    If a few rich people want to pass money back and forth to fund each other’s perversions they can do so with their own funds.

    I assume you are hoping this blows over and for many it probably will but you’ve lost my trust completely. That’s a big bummer because the entire premise of your service is based on trust.

    Drop the funding in years two and three and re-earn my now-cautious recommendation. Drop the Kolide weirdo, even better. As it stands, I’ve stopped recommending or defending your stuff entirely.

    Grant

    Big talk, but I haven’t canceled my account yet. We’re all-in on the 1Password family sharing and this is kind of a lot of toil.

    Instead, I’ve been using Apple Passwords all week and it does the job enough that I’ve switched from Firefox back to Safari. I used Safari for years and it feels great to be back. So far, Passwords is fine? Not great, but I can get used to it.

    If I don’t hit any blockers in the next week or two we’ll switch the entire family over to it and bail on 1Password. If I do, I’ll deploy vaultwarden and give bitwarden a try.

    After I sent this, one of their founders, who I hear is in not very active in day-to-day activities at the shop, gave a gnarly quote to media. I know founders do this kind of thing and I’m taking that in stride as not really informing my decision here. The Kolide guy is much more concerning to me, so we’ll see what happens now that this has broken through.

    https://furry.engineer/@soatok/117208728768694788

    Soatok Dreamseeker (@soatok@furry.engineer)You're on the air. What's your question. > Hi, are you woke? Well, success in cryptography is largely driven by **not being asleep at the wheel**. So, you'd better fucking hope I am.Furry.Engineer - Duct tape, hotfixes, and poor soldering! (opens in a new tab)
  2. An imaginary mix

    Sometimes you hear something like a beat or a riff or whatever and think, well that’s nice.

    • Wayne’s World - Garth ‘I like to play the drums’
    • Steve Gadd - Playing in the pocket sample, youtube
    • Harry ‘Haywire’ McClintock - The Big Rock Candy Mountain
    • Jimmy Hendrix - And The Gods Made Love / Have You Ever Been (To Electric Ladyland)
    • Thin Lizzy - Return of the Farmer’s Son (drum and guitar intro)
    • John R. Searle - Philosophy 132, lecture 7 2010 - comments on heavy metal
    • The Beatles - Magical Mystery Tour (film) “If you look to your left, you’ll see nothing interesting. On your right thought…”
    • David Bowie - Station to Station (use the intro, samples and intro name drop / cuts over it)
    • Isaac Asimov - Interview with Bill Moyer - sample Asimov on scale
    • T Rex - Ripoff
    • Style Wars (1983) 45 minutes in, sample dialog re: “It’s all big steel”
    • Buzzcocks - Why Can’t I Touch It (obvious cut opportunity: Why Can’t I _____ It)
    • Harry Nilsson - Rainmaker - drum intro
    • Elvis Costello - Radio Radio (live, from “Get Emotional”, intro “Does anybody listen to the radio? Does anybody like the radio?”)
    • Queen - Dragon Attack (loop beat, mash with current popular MC)
    • David Bowie - Sound and Vision
    • The Cure - 10:15 Saturday Night
    • Donald Duck in Math Land - sample!
    • XTC - Making Plans for Nigel - just smidgens of “EOooohh!”
    • Randy Newman - Short People
    • Muddy Waters - Electric Mud - I Just Want To Make Love To You (drum intro)
    • They Might Be Giants - Ana Ng - intro guitar, no singing
    • Bubble Puppy - Hot Smoke And Sassafrass
    • Harry Nilsson - Jump Into the Fire - middle drum solo
    • Fugazi - Casavettes (intro) #damnit megatrip for already using this
    • Tracks from the Big Lebowski Soundtrack
    • Stranglers - Nice and SLeazy (break / noise)
    • Donovan - Barabajagal (first 45 seconds or so into the hook)
    • Harry Nilsson - Nilsson Schmilsson - Gotta Get Up (lots of parts, add backbeat, let it play)
    • Talking Heads - Born Under Punches (entire solo, into the chorus “goes on, and the beat goes on!”)
    • DJ Food - More Volts: The Funky Eno
    • The Who - Eminence Front
    • Tubeway Army - Steel and You (bridge through outtro)
    • Harry Nilsson - Ten Little Indians - entire track, break it up, lock the outtro
    • The Ghost of a Saber Toot Tiger (Sean Lennon) - Jardin du Luxembourg
    • Brian Eno - In Dark Trees
    • Brian Eno - Dead Finks Don’t Talk - intro beat, maybe weird “Oh Lord” chorus, and outro madness
    • The Abyssinians - Y Mas Gan - Horns!
  3. torrent applescript folder action

    I made an OS X folder action to move .torrent file downloads to a directory watched by my torrent client. It’s pretty clumsy.

    on adding folder items to thisFolder after receiving added_items
    	set DroboTorrents to "storage:New Media"
    	repeat with addedFile in added_items
    		tell application "Finder"
    			if (the name extension of the addedFile is "torrent") then
    				try
    					tell application "Finder"
    						move addedFile to DroboTorrents with replacing
    						delete addedFile
    					end tell
    				on error
    					display dialog "Unable to move " & (name of i) with icon caution with title "Welp,"
    				end try
    			end if
    		end tell
    	end repeat
    end adding folder items to

    14 years later I’m still pretty much doing the same thing, having moved from that old Drobo and Transmission to a qbittorent docker deploy on TrueNAS Scale.

    Updated for 2024

    on adding folder items to thisFolder after receiving added_items
        repeat with addedFile in added_items
            tell application "Finder"
                if (the name of the addedFile ends with "torrent") then
                    set qbt to "/opt/homebrew/bin/qbt torrent add '" & POSIX path of addedFile & "' 2>&1 | grep 'successfully added torrent'"
                    set fileName to name of (info for addedFile)
                    try
                        set response to do shell script qbt
                        set hash to word 4 of response
                        try
                            tell application "Finder"
                                delete addedFile
                            end tell
                        on error errMsg
                            display notification "ERROR deleting " & addedFile & errMsg
                        end try
                    on error errMsg
                        display notification "ERROR adding torrent: " & qbt & "error: " & errMsg
                    end try
                    try
                        set qbt to "/opt/homebrew/bin/qbt torrent list --hashes '" & hash & "' 2>&1 | grep Size"
                        set response to do shell script qbt
                    on error errMsg
                        display notification "ERROR: listing torrents by hash: " & hash & " Command: " & qbt & "error: " & errMsg
                    end try
                    display notification response with title "Torrent Downloading" subtitle fileName
                end if
            end tell
        end repeat
    end adding folder items to
  4. Stephen King on fiction

    JP: I’ll tell you what I responded to. In the last two paragraphs, the tears sort of jumped to my eyes, but I realized that it wasn’t the deaths, oddly enough, that I was responding to – it was the bravery of the old poet, staggering around.

    …

    SK: Yeah, but when fiction works for me it works on an emotional level first
    and an intellectual level second. If you say that tears jumped to your eyes,
    even if they were metaphorical tears –

    JP: They weren’t. They were physical tears.

    SK: Oh …

    JP: I sniffed a little bit.

    SK: (laughs) That’s good. Well, James, it was all made up.

    From an interview with James Parker at The Atlantic.

  5. Synecdoche and Metonymy

    Look:

    Because synecdoche is a concept intimately associated with metonymy, not
    calling metonymy by name, one could claim that synecdoche is a metonym for
    metonymy. By similar standards, because synecdoche is a subset of metonymy,
    synecdoche is also a synecdoche of metonymy. The converse is also true.

    http://en.wikipedia.org/wiki/Metonymy#Synecdoche

  6. Scream Like a Man

    Text Adventures

    You see an article or a twitter toot or whatever.

    read the thing

    You see a link that looks interesting.

    click the link

    You just made be Mike Arrington some cash.

    undo

    I’m sorry, I don’t understand “undo”

    damnit

    Swearing won’t help.

    Enough of that

    No thanks, right? I mean it’s all well and good to just close the tab, of
    course, when you go to a site you don’t want to work for, but the ads have
    already loaded. That’s revenue. Gross.

    So I made this greasemonkey script to zap all links
    to all the sites I don’t want to work for. If it’s too late—say
    a shortened url tricked me—I’d rather see a goat scream like
    man
    than see what a mistake I
    just made, so it does that too. You can edit it to do something less drastic
    of course, but where’s the fun in that?

    var url = location.href;
    // add all the domains here
    var natch = /(DOMAINS YOU WANT TO AVOID GO HERE)\.\w+\//; 
    
    // Serious options
    // var ohShit = 'about:blank';
    var betterLink = '#';
    
    // Comedy options
    var ohShit = 'http://grantstavely.com/evil/';
    // var betterLink = ohShit;
    
    // if it's too late
    if (url.match(natch)) {
      window.location = ohShit;
    }
    
    // if it's not too late
    list = document.getElementsByTagName('a');
    for (i=0; i<list.length; i++) {
      if (list[i].href.match(natch)) {
        var scream = document.createElement('a');
        scream.setAttribute('href', betterLink);
        scream.innerHTML = list[i].innerHTML + "<sup>✌</sup>";
        list[i].parentNode.replaceChild(scream, list[i]);
      }
    }

    Run that against the entire web and it turns nasty links into neuters, and
    adds ✌ to them so that it’s obvious.

    Well, I think it’s fun.

    Install the greasemonkey script

    (You need greasemonkey for it to work)

  7. The Thermostat Fallacy

    I’ve always called this collection of phenomena thermostat fallacies, but my dad does HVAC for a living, so, go figure. I’m not even sure that they are proper fallacies.

    The premise

    In our cars, the analog dial or lever spanning a blue triangle stacked on a red triangle presents an analog blend of temperatures. At least that’s how they used to work. But in analog home thermostats, and increasingly in cars, in multiple zones even, the temperature dial offers “now” and “target” temperatures.

    This can confuse the crap out of people.

    Anyway, in the car, with the old fashioned thermostat, most of us start out with the dial cranked to all hot or all cold and then adjust to comfort. Being uncomfortable is uncomfortable, we seek its undoing with a vengeance. We don’t want the inside of the car to be 85°F in February, we just want it to be 68°, or whatever, faster than if we asked the car vents to spit out 68° degree air.

    But home thermostats don’t work that way, and not letting that stop the mind from thinking that they do is what I call the thermostat fallacy. It has three faces. I’ll present them here as design patterns.

    Do not try to put significant figures into an binary bucket

    For example: Coming home cold, and raking the analog home thermostat dial up to 85°. If the house is already 64°, setting the thermostat target to 70° or setting the thermostat target to 85° make no difference whatsoever. That’s just how the things work. 85° doesn’t fit into the on/off bucket, it fits into stop when bucket. The heating and air conditioning is not working harder, it’s just running longer, and will eventually boil the frog.

    Do not represent a binary state with exclusively insignificant figures

    This is the inverse of standard thermostat fallacy and better demonstrated in other technologies.

    For example: Nearly every instance of numbered badges of unread email, unread RSS and atom subscription articles, unread twitter posts, unread whatever are representing “you have unread items” with “you have a specific-yet-useless number of unread items.”

    You see, if the badge says 43 now, and five minutes later, it says 44, it still only conveys “There is unread email”. The number lacks context but it still has to be parsed. More importantly, there is no unit-comparability. All of those messages could be spam, or one could be a life changing job offer, and so on.

    Do not expect insignificant figures to have unit-comparibility

    For example: Insisting thermostats at separate houses set at the same temperature are creating the same environment in spite of perceived differences in temperatures caused by room layout, thermostat placement, humidity, elevation, and so on.

    This is a big one. I consider it an instance of ceteris paribus, or the all else equal fallacy. It’s what leads people to wonder why Oscar the Grouch doesn’t just go to college and get a job, damnit.

    So?

    Significant figures matter, but when human perception is the target, and not scientific measuring apparatus — lossy compression isn’t just okay, it’s humane. The mind works better in some cases with fuzzy numbers than specifics. When numbers can’t be avoided, keep the thermostat fallacies in mind when working with them.

  8. The Paradox of Controls

    Given an effectively infinite set of behaviors, and a limited set of actors, the simplest and most common control strategy to restrict the behavior of actors seems to be:

    1. Deny any known forbidden actions.
    2. Permit all other actions.

    But consider the numbers involved.

    1. Deny finite known forbidden actions.
    2. Permit infinite unknown actions.

    Okay, so for a behavior control equaition that’s something like:

    For y equal to ∞ – n finite knowns: ∞ – y = ∞

    I’m not good with math. But that’s definitely an infinity over there. OK, so arguably it’s an infinity on both sides and we are playing with imaginary numbers, literally, but I hope the point is still clear.

    This actually works quite well in practice. Consider: An escape artist tied to a chair seems to be restricted by a strong control to prevent the undesired action of escape from a room. But the rope leaves the escape artist free to do anything, so long as that thing isn’t one of the many, yet finite, activities that the rope restricts, like, say, escaping, or doing jumping jacks, or square dancing.

    Two components of that are interesting.

    1. The control is restricting actions that aren’t forbidden.
    2. The control is allowing infinite unknown behaviors to continue without restriction.

    Doing jumping jacks in the room is not escape from the room. Neither is square dancing, however goofy it may be. In fact, forced jumping jacks or square dancing might be better controls than the rope — they are distracting, require dextrous locomotion, and in the case of square dancing, a guard could keep hold of the escape artist’s arm the entire time.

    You see, this is when many practitioners argue for defense-in-depth. OK, they say, we’ll lock the room, and we’ll use a strong chair, and we’ll put chains on top of the ropes, and fill the room with water to 8 inches below the ceiling, and so on until you get sick just hearing from them. Escape artists design their tricks to be loaded with defense-in-depth security theater, it makes the escape look less like a foregone conclusion.

    But no matter what, that pesky infinity is still sitting there on the right side of the escape artist’s behavior controls equation. Don’t forget that, because it’s very important. Actually, mind your mediations, it’s a Lemniscate of Bernoulli sitting there, standing in for infinity. Anyway.

    OK, let’s back up and try another thought experiment, with those two points in mind. Instead of wrapping an escape artist, or a prisoner, in controls; consider implementing controls to protect a cohort of data analyst workers at Acme Incorporated™ from risks, with the intent — and this is important too — with the intent that they best be able to spend their time data analysting, whatever that is. Pause for a moment and reflect that Acme’s data analysts are not prisoners becase too many people get tripped up on that. The intent is risk reduction in order to promote data analysting, not just pink and naked risk avoidance.

    Sure, sure, we’ll use all the standard controls from our handy principle of least privilege guide-book, restricting risky actions we have enumerated that Acme’s data analysts aren’t even interested in. We’ll use a roof and four walls to keep the analysts and their computers from getting wet every time it storms. We’ll put a guard at the door so that they don’t blow all their cash on cheap art prints from cube-to-cube rogue sales folks. We’ll block ports used by their desktop computer’s file sharing protocols with a firewall between their network and the Internet, because no one with good intentions wants to share files with them over the Internet. OK, you can even use your defense-in-depth principles and put more firewalls in different places, and put a roof over the roof, and put a guard on the guard, but please don’t go too crazy — controls add overhead, both in capital and operationally, because they aren’t free, and after all, what’s the point of a control if it isn’t monitored?

    But what about controls that start to affect the analyst’s data analysting work? If we determine that an inline proxy-based web filter is a control we want to implement, how should we configure it? Do we want to restrict the analysts from watching jumping jacks videos or learning more about square dancing? Sure, the naive security practitioner says. Square dancing isn’t data analysting! Neither are any damned jumping jacks!

    I promise I’m getting to the point here, we’re almost there. Skip ahead: our Acme data analyst is using the system we’ve designed.

    On the web, there are effectively infinite destinations, but most usage patterns start at a search engine and end at a popular media streaming site, popular news site, popular information site, etc.

    Consider the bizarre notion that our data analyst, might have some free time, between data sets, and want to learn about the Allemande Left, a square dancing call I had to look on Wikipedia to learn about.

    ‘Denied!’ say the prison wardens.

    ‘Denied!’ say the defense-in-depth practitioners.

    ‘Denied!’ say the principles of least-privilege.

    ‘Denied!’ say the curmudgeonly supervisors unable to suspend disbelief in ‘free time’.

    But remember that whole infinity part. The prison wardens and defense in depth folks can only block what they know about, and in this case, things they think are related to things they know about. They think they know that video sites are bad.

    Let’s exaggerate and pretend that last night’s The Bachelor had a long square dancing element to it, highlighting the Allemande Left. Attackers know this — they are depraved enough to watch The Bachelor too. They’ve spent all night hacking small blogs and turning them into sites about nothing but how great the Allemande Left goes with trojan botnet installers. Search engines have spent all night indexing these Allemande Left & Trojan Botnet Installer sites.

    Enter, stage left: An analyst.

    “With free time“ the choruses remind us.

    The analyst searches the Internet: “Alemand left bachlor“

    The search engine replies: “That’s silly, here, here are ‘Allemande Left bachelor‘ findings”.

    The analyst sees that the first search result is a video of last night’s The Bachelor on a tv streaming site.

    click

    DENIED! You are violating security policy!

    The analyst returns to the search results and sees the second search result links to a clip of square dancers doing something on another popular user-uploaded-content video streaming site.

    click

    DENIED! You are violating security policy!

    The analyst returns to the search results and sees lots of garbage sites that look kinda strange, but whatever. The search engine preview says something like: Allemande Left Alamand Left Square Dancing The Bachelor Allemendy Left The Bachlor The backlet Skware Dansing Allemen…

    We know this is the proverbial wolf in sheep’s clothing.

    An aside: ‘Clothing’ is a weird word choice for skin, or fur, or whatever, in that idiom, isn’t it? More importantly, our data analysts aren’t sheep, we are just really paranoid. The data analysts are human. Draw no further conclusions from the silly proverb other than the masquerade idea. Sheep are stupid, our analysts are just ignorant, busy, and have been yelled at twice now for no good reason.

    The analyst clicks on the third link, praying for no more DENIED! wastes of time.

    Pop goes the analysts browser. Pop goes the analysts acrobat reader. Silently the computer we are protecting joins a global criminal network and begins attacking websites to fill them with more Allemand Left stories and trojans.

    Another aside: The analyst returns happily to data analysting the next data set. Our mission is not impacted. There is a very interesting discussion to be had down this rabbit hole, and I think it ends in a tragedy of the commons mess that will cause us to reconsider if our mission actually is impacted, but that is neither here nor there.see 1 again

    Let’s cut our thought experiment off right there because we’ve come to the point: Controls become paradoxical when their restrictions drive actors to alternative behaviors which are equally risky, or in the case of square dancing video trojan botnet installers, much more risky, than the behavior they were implemented to control.

    Be ever mindful! Not only are square dancing videos, for the most part, harmless, but they are very much not the multitude of worse things the analyst could be doing with their free time.

    Returning to our behavior control equation:

    For y equal to ∞ – n finite knowns: ∞ – y = ∞

    For every harmless element of the set y removed from ∞, the ∞ of available behaviors ratio tips 1 unit more towards undesirable.

    As a design pattern, try to avoid doing that.

  9. Eggcorns in Technology: A list

    In linguistics, an eggcorn is an idiosyncratic substitution of a word or phrase for a word or words that sound similar or identical in the speaker’s dialect. The new phrase introduces a meaning that is different from the original, but plausible in the same context (“old-timers’ disease” for “Alzheimer’s disease”). This is as opposed to a malapropism, where the substitution creates a nonsensical phrase. Classical malapropisms generally derive their comic effect from the fault of the user, whilst eggcorns are errors that exhibit creativity or logic. Eggcorns often involve replacing an unfamiliar, archaic, or obscure word with a more common or modern word (“baited breath” for “bated breath”).

    The term “eggcorn” was coined by Geoffrey Pullum in September 2003, in response to an article by Mark Liberman on the website Language Log, a blog for linguists. Liberman discussed the case of a woman who substitutes the phrase egg corn for the word acorn, arguing that the precise phenomenon lacked a name; Pullum suggested using “eggcorn” itself.

    • labtop instead of laptop
    • mallware instead of malware
    • cusrser instead of cursor
    • aohell instead of AOL
  10. On the iPad

    What is interesting about the iPad?

    There are a bunch of technologies making interesting convergences in the iPad including search, mobility, task oriented Human Computer Interaction (HCI), and networks, but let’s just look at the HCI part.

    The iPad is all over the future of task-oriented-computing HCI, as were the OLPC XO, iPhone, Palm Pre, Android, etc. They make no attempt to even try to consider faking being a netbook, tablet, laptop, or any other general purpose Windows, Icon, Menu Pointer (WIMP) system. There is a bit of duck typing there, but make no mistake, the iPad isn’t a duck, er, a tablet PC, just like the Android isn’t just “a phone”.

    A history lesson

    Back when Led Zeppelin was still touring, and wizards flipped switches, punched cards, and built up circuit boards by hand, there was limited abstraction to computing. Users had to know what their computers were doing at a pretty low level to do, well, pretty much anything. Their hacking wasn’t mediated by much at all. There aren’t many metaphors to soldering on silicon.

    And operating systems advanced. Abstract command-line interfaces (CLI) became prominent. CLIs tend to user ‘verb, noun’ command oriented systems.

    rm -fr ./drafts/

    vi on-the-ipad.txt

    ping grantstavely.com

    less /var/log/httpd/access.log

    And they tend to have hierarchical organizational metaphors mediating the user experience.

    _/home/grant/mail

    /dev/modem

    /var/www/html/grantstavely.com/index.php_

    Then WIMP came along. WIMP tends employ ‘noun, verb‘ command oriented systems.

    Select all objects, drag them to the trashcan.

    Double-click header, click the Bold toolbar button

    When log file is on screen, drag scroll bar down to scroll through entries

    And they too are hierarchical experience metaphors with spatial orientation, and overlapping windows, and cursor and menu driven insanity mediating everything. Click here sort of stuff.

    Both mediations — both abstractions — have advantages, and over time, lots of us, never having to punch cards or solder boards, put PCs in our homes and businesses, and solved problems with them. Wow.

    But there are other mediations, other metaphors, other abstractions. Jacob Nielsen’s noncommand interfaces1 abandon these verb/noun, hierarchical, graphical intermediaries. They are what he calls task oriented. Like the iPhone.

    Launch phone app, task-oriented device becomes a phone.

    Return to task-selection “home” screen.

    Launch camera app, task-oriented device becomes a camera.

    This is deceptively similar to our trusty old world systems.

    Write daemon in c that will spit bits out /dev/modem. Fax from minicomputer.

    Or more recently.

    Load Windows IBM Fax Application from floppy disk and the big beige box, monitor, and printer can be used like a cumbersome fax machine with too many buttons and a terrible UI.

    Or even more recently.

    Download skype, extract and install. Launch skype. Webcam on desktop computer runs a video-phone-ish document on the desktop on the CLI system.

    It’s easy to forget that CLI and WIMP command interface experiences even are mediated, but at some point we learned how to pipe a stream through sed, to grab a scrollbar by carefully positioning a pointer using a brick of plastic with buttons on it, to layer windows, to manage running processes, to find hierarchically organized documents — we learned the syntax of verbs and nouns and adjectives. But don’t forget that these are metaphors constantly, always, mediating our experience.

    Mediated Experiences

    The menu is not the meal. Please refrain from eating the menu.

    On the iPad, Pre, Android, and insert-your-favorite-hardware-here equivalent, our finger touches the data — a web page, or a picture, or a video — and swipes. The data moves. We pinch, rotate, zoom, or discard, the data. Launch a task-mode app and the device transforms.

    Okay, this is starting to sound a lot like it came from the marketing department, bear with me. It’s still a mediated experience, but we can see the advancements in abstraction right?

    Look, the experience is so different on these mobile task-oriented devices that comparing them to say, netbooks, is kinda silly. A touch screen, keyboardless iPad-ish PC running Windows 7, or fvwm, or whatever, is not a task-oriented system, but some of it’s applications might quack like one.

    But where is the market?

    That there are Apple fanatics muddies the water if we let it, but it’s such a boring way to look at the experience, the market, people, and so on.

    The iPad might arguably be the first real shot anyone’s given at a general-use, task-oriented computing platform — well, at least since the iPhone and every device that copied it. But it’s not a phone. It’s not an ebook reader. It’s not a laptop. It’s a really weird set of limitations with a web user interface, and that’s about it.

    That’s kinda insane.

    I think the market is out there for an abstracted, task-oriented, noncommand, web-enabled device, converging apps, mobility, search, and so on. The iPad might not be it, but it is a tell as to where things are headed.

    For Example

    The WIMP browser, still interfaced with a CL-ish address bar, is cumbersome. You did not get here by selecting your address bar and embracing the hierarchy that is uniform resource locators. You didn’t think to yourself (I’m guessing):

    Ah, http, the protocol, next to the grumpy 😕/ guy that has two frowns. And then grantstavely.com, the Domain Name System A record for Grant’s web server. And lastly, “Oh, joy”, the virtual directory that is really just Apache trickery, “/blog/on-the-ipad”.

    We’ve all watched people not do this. We use the web by searching for our favorite sites, or repeat-visiting subscriptions and bookmarks, or by following suggestions like the dozens in this article. Ugh.

    So?

    When an article at Read Write Web became the top google result for “facebook login” because of a popular article they published about Facebook’s distributed login platform, the search-protocol web browsing mode failed. Not realizing that they weren’t reaching Facebook through their normal, human, protocol-following google search, dozens of Facebook users complained to Read Write Web.

    ok cool now can I get to facebook

    The new facebook sucks> NOW LET ME IN.

    I WANT THE OLD FAFEBOOK BACK THIS SHIT IS WACK!!!

    EXCUUUUUUUUUUUUUUUUUUUUUUUUSE ME!!! WHY NOT JUST LEAVE IT ALONE!!!1111

    Read Write Web had to edit their article to help them.

    Dear visitors from Google. This site is not Facebook. This is a website called ReadWriteWeb that reports on news about Facebook and other Internet services. You can however click here and become a Fan of ReadWriteWeb on Facebook, to receive our updates and learn more about the Internet. To access Facebook right now, click here. For future reference, type “facebook.com” into your browser address bar or enter “facebook” into Google and click on the first result. We recommend that you then save Facebook as a bookmark in your browser.

    An Aside

    See the click here, noun, verb stuff followed by the directions for how to use the verb, noun command-oriented parts. Note the suggestion to perpetuate the problem in the last helpful hint. I mean, the instructions are right, and necessary, but the opportunity here is obvious. Isn’t it?

    6015+ days hath September 1993, and we are still scratching our heads about this?

    Anyway

    Those folks would probably be more successful with an iPad and a Facebook app. An app abstracts the address, like a browser’s bookmarks were supposed to. Arguably, bookmarks already do this, but making a bookmark an app privileges the bookmark in a powerful way, beyond the full-screen, customized, scaled experience that is the app. In an environment of full screen apps at the same level of importance as the browser, the search model of finding the same thing over and over again loses it’s efficiency.

    But it’s just an iPhone

    I think the size factor is more important than that. Looking at photos, watching videos, and reading articles on phones is a pretty poor experience. The pocket portability is a strength and a weakness on phones. I don’t plan on buying an iPad because it doesn’t solve any problems for me; but not because it’s too small, or too expensive to not multi-task — being a camera window, and an email window, and an IM window, and a menu, and a process management list all at once is a weakness, not a strength — I don’t plan on buying one because while I would like to have one, I’d like to have one less than I like to eat and drink really well, or get more camera lenses, or fly more places and check them out — and because I feel pretty damned unlimited with the CLI and WIMP crap I already have.

    But I get the idea, and I think it’s really, really, fucking cool.

Pizza Slow (high quality)

© 2026 gravely