PUBLIC NOTES (G) ©2016 Adam C. Moore (LÆMEUR) <> * <<G11.0213>> Plain text Is Unicode an adequate representation of written language? I find it interesting that the first block of Unicode is dedicated to control codes for teletypewriters, video terminals, and information systems, yet there is no human-language "control code" for a line break. A line break in particular is important because it's the one universal spatial element of text composition, the spatial punctuation mark. We have control codes for "carriage return" and "line feed" – operations performed by a teletypewriter – but no code for "end of a written line". * <<G12.0914>> Unicode sucks. And so does ASCII. And everything in-between. The problem with plain-text is that it isn't really an encoding for ~written language~, is it? What we call "plain-text" is a sequence of graphemes, numerals, punctuation (written human-language elements), and miscellaneous graphic symbols, interleaved with control codes for the operation of a teletypewriter. CARRIAGE RETURN and LINE-FEED are, of course, not things you do with a pen or pencil – you may be willing to concede that your arm is a carriage, and that you mentally "feed" paper away from you as you move down the page, but I am not – nor are they things a compositor does with his composing stick, galleys, and formes. *** -a family of devices that have their own characteristics quite outside those of the stylus, brush, or printing press. *** Some of the ASCII control codes that should be used/thought-of as written-language codes instead of teletype codes: 01 SOH Start-of-Heading Actually a useful semantic code. Headings are generally indicated by placement of text within a page. If we want to decouple the formatting from the language, we need markers like this to indicate when text is a heading, and when it is body text. 10 LF Line Feed; should be New Line The UNIX \n "newline" character. That's what this should represent: a new line, not a 1-line paper feed operation. 12 FF Form Feed; should be New Page 32 space; should be Word Separator * <<G15.1092>> Good lord, where have my meditations brought me? Reading the subtext of my last couple entries, it's becoming clear to me that I am actually suggesting that semantically tagged text, with those tags interleaved in the text stream, is preferable to the semantically barren chaos that is plain-text. That is to say, I believe something like HTML is *better* for the recording of human language than plain-text. A shocking turn of events since I have cited Nelson's "Embedded Markup Considered Harmful" more than a few times, and been in support of it. The fact is, plain-text is full of explicit semantic markup already in the form of punctuation, and it's full of implicit semantic markup in the form of space. One of the troubles with punctuation is that many important marks have been tasked with multiple semantic functions over the centuries. The period, for example, in the context of a sentence may be an end-of-sentence signifier or an abbreviation marker, and when embedded inside a number it indicates the decimal point; the single quotation mark is infamously double-tasked with the function of an apostrophe in addition to its nominal purpose; numerous characters are used for different functions when part of a mathematical expression, and so-on. Despite these problems with the explicit semantics of punctuation, it is a far greater problem to deal with the implicit semantics of space. In the absence of explicit markers for them(1), paragraphs must be implicitly indicated by the presence of empty space. This may be blank lines above and below the paragraph, or it may be an indentation of the first line. Likewise, section headings and titles are indicated by the presence of empty visual space. When writing in plain-text, authors are constantly devising their own idiosyncratic conventions of heading placement, section breaks, asterisms, and so-on. Human readers can, of course, work-out the meanings of these inventions, but software isn't necessarily so clever. Is it important to the author that his asterism is one asterisk in the center of the page, or three asterisks separated by spaces at the beginning of a line? Or is it simply important that there be an asterism? If the latter, shouldn't there be a code? To some extent, ambiguities could be alleviated by the use of typographical marks to make the implicit explicit: stick a pilcrow at the beginning of every paragraph, a section-sign at the beginning of every heading, use an ellipsis character instead of three periods, use an asterism character instead of asterisks, and so-on. If one were to do this, the whitespace in a plain-text document could be collapsed, and the structure of the document would be retained – unless, that is, the author wanted to put a pilcrow in the middle of a paragraph illustratively: ¶. What about that, then? That is why you'd need control codes, or markers, or tokens, or whatever you want to call them: "characters" that are not meant to be printed as such, but which are intended to trigger behaviours in the software rendering/processing the document. The thrust of what needs to be said about "plain" text is this: in order for true plaintext, in order to escape the reality of plain-text as a teletypewriter operation language, we need to eradicate any assumption of a PAGE. Text is a STREAM, it is one-dimensional – Plaintext needs to be readable on a single-line LCD display, it needs to work on screen readers for the blind or deaf-blind,… On the space character itself: its most common and important function is as word-separator. But spaces also separate sentences, clauses, and other structures, despite this being the explicit function of other characters such as comma, parenthesis, semicolon, and terminal punctuation. * <<G17.1420>> USENET Still a ghost town. Usenet could be fairly interesting again if it could be pulled away from its crusty, old, plain-text purist user-base. That's probably not terribly likely, but it's a fun thought: Usenet with semantically structured documents, attached images, hyperlinks, etc. All that's needed is a change of media-type for the message body. Of course, that could go horribly wrong, and we would probably see Usenet make the same transformation that the web made, away from text and toward images and design, and that would pretty-much destroy what makes Usenet interesting in the first place. * <<G18.0901>> The street finds its own use for symbols. LET'S SHOUT SOME STUFF INTO THE JOURNAL. THE TROUBLE WITH INTRODUCING EXPLICIT STRUCTURAL MARKER-CODES INTO PLAIN-TEXT IS THAT WHAT YOU'D BE DOING IS PROVIDING A TOOLSET FOR COMPOSING DOCUMENT STRUCTURE, BUT WHEN THE TOOLS ARE INADEQUATE TO THE AUTHOR'S NEEDS, THEY'LL EITHER USE THE TOOLS IN UNINTENDED WAYS, OR IMPROVISE THEIR OWN TOOLS. SO, THE QUESTION RAISED IS: CAN YOU REALLY PROVIDE THE ULTIMATE TOOL SET? PROVIDING AN INADEQUATE TOOLSET WILL ONLY MAKE MATTERS WORSE, AND PROVIDING THE PERFECT TOOLSET MAY BE IMPOSSIBLE. I SUGGESTED EARLIER A PARAGRAPH CODE – BUT WHAT ABOUT A STANZA CODE? VISUALLY, THEY MAY BE SIMILAR, BUT FUNCTIONALLY THEY'RE NOT. AND, AS I'VE NOTED MORE THAN A FEW TIMES, EMPHASIS IS A PROBLEM; MID-SENTENCE EMPHASIS PARTICULARLY, BECAUSE EXCLAMATION POINTS SERVE TO EMPHASIZE ENTIRE SENTENCES. KEYWORD EMPHASIS, EMPHASIS FOR CLARIFICATION – there are a LOT of ways to *emphasize* words in /plain-text/, all are inconsistent, and most pollute the text stream in the same way that bracketed HTML tags or RTF codes do. In the absence of a non-printing plain-text code for emphasis, CAPS FOR EMPHASIS, or the now-confusing practice of Capitalization for Emphasis (popular a few hundred years ago) are the only "clean" ways of doing it. Everything else is bad. Yes, bad. A hard reality to face is that, given an arbitrary set of symbols with which to compose messages, people will find expressive uses for all of them that don't easily conform to old categories of word and punctuation. * <<G1A.1149>> WALK CITY DOWNTOWN COLD LIGHTS - ICE PAVEMENT BITE AIR BREATH BREATHE BURN WATER MOUSTACHE * <<G1G.1395>> "The Complete Computing Environment" Someone posted a [[][note]] about an all-Emacs-all-the-time environment, which led me to [[][The Complete Computing Environment]], which looks like one man's attempt to add enough features to Emacs that he'll almost never have to use any "application software" again – something I think a lot of us wish we could do. Reading that page brought to mind my own search for the best, most useful and general computing/writing environment, and my fascination with the Canon Cat and Raskin's LEAP/Swift ideas which ultimately led me to Emacs and Org-mode. Over the years, I've kept coming back to language-based environments like Smalltalk, Self, Symbolics Genera, and even Emacs, as the most elegant solution to the computing problem. What, you may ask, is "the computing problem"? This: How do you maximize the user's ability to utilize the computer's capability? There are a few fundamental things: the user needs to be able to program, and the user needs to be able to read and modify existing programs. Beyond that, you can go a million different ways, though. A major component of the computing problem is system comprehensibility. In order for a person to fully utilize a system, they have to understand it. One thing that aids system comprehensibility is to do the whole system in one language. Smalltalk, Genera, Emacs all take this approach. However, there's certainly a case to be made for the value of being able to use different languages in different domains. UNIX, when done properly, handles heterogeneity well; all sorts of programs, some compiled, some interpreted, all in different languages, can be strung together in user programs to perform powerful and complex tasks. But, on the system comprehensibility side, your average UNIX-like system is a complete disaster these days. As an aside: I've often mused over how you could sort-of fake an object-oriented system by using directories as objects, executables as methods, and files as properties. You could create classes by building an example directory structure with all the method and property files, then instantiate new objects by copying that directory structure to a new location. You'd want to symlink the methods back to the "class" files, so that changes in the methods would propagate out to all of the objects in the system. Anyway, back to Emacs. Now, I'm an Emacs user. I'm an Emacs fan, really. I write in it, I code in it, I do email and news in it, I do a little bit of file management in it – Emacs is great. But, I'm a visual artist, and graphics are major part of my day-to-day life. If I were going to go whole-hog into building an operating environment out of one piece of software, with one language, I think I'd try a web browser and do everything in Javascript. Speaking of Javascript, I've been hacking on the PROTODOCUPLEXTRON a little bit over the past couple of days (last time I looked at it was [[E1E.1950]]). January/February seem to be the months that I always come back to working on hypertext projects. Tonight I've been thinking about how I could use it as a testbed for making a Xanalogical text editor. I don't have a working Alph server right now, but I'm just thinking about using an element inside of the HTML file to hold all of the plain-text, and then work-out the tricky parts of dynamically filling elements with transcluded text, splitting elements to insert new text and committing that new text to the heap of source text, getting transclusion source addresses of selections, visualizing transclusions, and so-on. I have illustration work I need to be doing this month, but this is the kind of stuff that's firing my imagination right now. * <<G1K.0090>> Decentralized social networking, publishing, and so-on First I saw a link to Matrix, a federation-based communication system, and thought it was pretty neat. The usual buzzwords: RESTful HTTP API with JSON. Then the Matrix website led me to PSYC and GNUnet. Much more interesting. P2P, multicast, anonymous – somewhat esoteric, but very interesting. The PSYC/Secure Share authors make strong cases against federation and traditional DNS and Web-based communication. I tried to get GNUnet working, but failed. The idea of publishing and messaging via peer networks is very intriguing to me, but... the whole thing is sort-of nebulous in my mind right now. Something I need to think on more before I can make any kind of useful comment in here. * <<G1P.0093>> Win 10 My wife bought a new PC today, and it came with Windows 10 installed. I played with it a bit since I don't have too much contact with Windows anymore, and I wanted to see what was new. Y'know, some people got bent out of shape when Matias Duarte said that Win 10 was "[[][basically XP with a flat design skin]]", but he was right. I actually appreciate Microsoft's attempts to do something new with their Metro UI — it's a shame Windows users have been so hostile towards it — but the fact is that within two minutes of poking around Windows 10, there you are, looking at the same ugly Common Controls interfaces people have been suffering for decades. Come on, Microsoft. Go look around DeviantArt or something. You've had Visual Styles since 2001 and you still haven't figured out how to use them to make the legacy stuff look good? Lots of young people with too much time on their hands have made better attempts. And ...the icons. FFS. Stop hiring those designers. Just stop. You've got this dead-flat Metro window manager and Start-screen/bar/menu, then this flat~ish~ Visual Style on all the system utilities and legacy apps, and then these corny icons all over the place. What a mess. I know that the X desktop is a visual clusterfuck — we've all had those days where we're staring at a screen full of windows and every single one has been programmed with a different widget toolkit — but that's because it's a free-for-all over here. You're Microsoft. You ~own~ Windows. Your resources are ~vast~. Is it really beyond your capability to, I dunno, design a new file manager in Metro and stop farting around with File Explorer? Or reimplement the Control Panel entirely in Metro and not have it launch a bunch of legacy dialogs? Unify that shit. Is it 2016, or is it 2001? Is this a workstation or a mobile device? * <<G1Q.1379>> VGA Font stuff For some reason, I've rec'd a few emails in the last week about my More/Less Perfect DOS VGA fonts. One of them resulted in a bit of research and a good discussion about modes as they pertain to the display of ANSI graphics. A few good resources were found. * <<G1S.0025>> Federation as CDN I'm having some conceptual convergence with decentralized message distribution systems, like GNU social,, etc, and Xanalogical publishing. - All of these systems could/should have versioning. Notes/posts should be immutable, and there should be a "revision" link relation on revised posts pointing back to their parents. Tent does this already. - Distributing the data to several hubs (caching servers) is a boon to the small content creator who wants better control over his media — which means a smaller back-end — but needs/wants his distribution capability to be able to cope with some level of virality, should he be so lucky. - In Xanadu, media should *always* be pulled from the publishing server, as transclusions always link back to their source. However, if these federated caching servers held copies of the primedia, but those copies linked back to the source, the important concept is retained. * <<G1U.0816>> Punctuation (re: [[G18.0901]]) Maybe we just need some new punctuation. People have been misusing quotation marks for decades as surrogate emphasis markers. What these people want is the effect of italics or bold-face text, emphasis or alternative voicing, but they don't have the marks for it. Nowadays, bold-face and italics are the typographer's chief means of indicating emphasis or alternative voicing in text, but prior to the era of movable type, scribes employed rubrication and illumination to similarly foreground text — it's not purely an expectation of a typographically literate populace, it's a fundamental need of people who must rely on the written word: emphasis, which comes so naturally to us in speech, must needs be visibly indicated in some way. We need mid-sentence emphasis marks to enclose words or phrases in, akin to quotation marks. There *are* some conventions for doing this — I've just used one of them. *Star-bold*, and /slash-italics/, and other plain-text markup schemes, which came into use out of necessity decades ago (even the venerable mechanical typewriter could be made to double-strike and underline text, but no such expressivity is afforded in "plain text") and which have seen renewed interest in the form of Textile, Markdown, and other "plain-text markups", are a practicable solution to the issue — but I wonder if we mightn't be better-off with new, single-purpose symbols, instead of overloading extant punctuation marks. Why? Because, going forward, wouldn't it behove mankind to make language as unambiguous and machine-readable as possible? Using caps for emphasis has the problem of potentially introducing ambiguity as it obfuscates the capitalization of proper nouns. * <<G2A.1173>> Reconstructing GNU social conversation trees Given the permalink URL of a notice: 1. GET the notice's JSON representation ([server]/api/statuses/show/[post#].json) 2. localConversation = JSON.statusnet_conversation_id 3. GET the Activity Streams representation of the local conversation: [server]/api/statusnet/conversation/$ 4. Save all of the items as some kind of object. 5. Read the value of item.object.url in the *last* item -- this item is the local conversation root 6. Fetch * <<G2T.0048>> Trump I started writing with the idea that Trump's supporters are dupes. They're taking Trump's bait, believing that he represents their views or their values when, in reality, he represents nothing but megalomania. Donald Trump doesn't care about you. He doesn't care about America. He doesn't care about politics, diplomacy, ethics, human rights, the planet, or its inhabitants. He cares only about his own self-worth, his brand, getting-over on other people — being a "winner" — and he'll say *anything* to win. Just like all of his "development" deals, he doesn't care about the development, he doesn't care about the investors — he cares about *making the deal*, and that's all. But maybe I'm missing the point. Maybe Donald Trump really does represent his supporters. He represents people who don't care about "the other guy", people who want to be free to exploit, denigrate, and marginalize others – he represents the white majority of vulgar, arrogant, dishonest, selfish, tasteless, petulant "victims" — people who have a conviction that they are good, /normal/ people, and deserve to be successful, but who feel victimized by the media and the government, institutions which they believe are run by a cabal of liberal fascists conspiring to oppress white Christian heterosexuals, to take away their rights and their money, and give it all to freeloaders, foreigners, and criminals — the majority of whom, they believe, are of a darker complexion than themselves. * <<G32.1274>> Copying some stuff out of the Protodocuplextron ** <<IJIEKEBX>> (2016-01-17T10:31:15.597Z) Visual Parallelism The visual metaphor provided by traditional text editors and word processors is that of the page – you are provided a page onto which you can write, erase, and arrange text in a single column, not too much differently than you might have done with a pencil and paper two hundred years ago. But what if that's not how you work? What if the way you work is to write in multiple columns, or on note cards spread atop a table? And what facilities are provided for viewing references while writing? None? Writing is, more often than not, carried out simultaneously with reading. *Any real writing system needs also to be a real reading system* ([[IJIFELZH][Reading and Writing]]). Furthermore, it needs to be a *multi-document* reading environment, with *parallel viewing* of texts, not just a stack of tabbed windows. People have been forced into various modes of serialism on computers for decades and decades, and the advent of smartphones and tablets with small displays has only made matters worse. It's time to get serious about parallelism, visual juxtaposition, and simultaneity. The "desktop" metaphor is a joke when you don't have side-by-side, multi-document viewing and editing. But a desktop isn't enough – we need a work space, a virtual environment ** <<IJIFELZH>> Reading and Writing The best writing environment will be a great /reading/ environment first. I don't know that any writing software has been approached from that direction before. There are a lot of word processors with a ton of overhead that make poor document readers, and there are document readers that either have no editing facilities at all or only the most meagre annotation facilities. It seems insane to me that these two activities should be treated so differently. * <<G3C.1373>> Capital's too important to leave to the capitalists. Kasparov makes almost no sense, [[][here]]: "My Facebook post went around the world on technology created in America. The networks, the satellites, the software, nearly every ingredient in every mobile device and desktop computer, was invented in the USA. It is not a coincidence that the most capitalist country in the world created all these things. Innovation requires freedom of thought, freedom of capital, and people who believe in changing the world." 1. "The networks" (packet-switching networks) were developed in the US thanks to government spending in the form of DARPA grants. 2. The satellites wouldn't be in orbit without decades of unprofitable government spending on space research, and launch facilities owned and operated by the government. 3. "The software," at the bottom, comes from UNIX, which (in addition to the transistor, the CCD, etc.) came from Bell Labs at the time when AT&T was a government-regulated monopoly. 4. "Nearly every ingredient," is way too broad to break-up, but let's remember this: the development of *most* fundamental computer, communication, and aerospace science and engineering in the US was, in no small part, paid for with tax dollars in the form of Department of Defense research projects. The United States isn't a technological juggernaut "because capitalism". The United States is a technological juggernaut because for a long time, the government diverted *a lot* of capital into universities and research laboratories that would not have been funded otherwise. Additionally: 3a. Linus Torvalds has said that Linux probably wouldn't exist if he hadn't lived in a socialist country which allowed him to spend most of his 20s in University, where he had the time available to work on Linux. Freedom of capital? There *is* no freedom of capital when the capital is entirely in the hands of corporations. * <<G3E.1085>> Dresden I've just heard a synthesizer composition that sounds a lot like my "Dresden": "Insekt" by Benedikt Guschlbauer and Ulrich Kuhn. Unrelated, but good: Garry Bradbury, "Tonnage Bubble" Thank you, DJ Kumata. * <<G3S.0730>> Deserve's got nothing to do with it. When you say, No one gets a hand-out; I worked hard to get where I am, and so should everyone else. ...what you're really saying is that young people starting-out, or adults trying for a new start, maybe refugees or immigrants, or, maybe even just people who don't have the same kinds of ambitions that you do, people who serve drinks or answer phones or move boxes around in a warehouse, and who do that work to pay the bills so that they can spend the rest of their time enjoying their lives, raising their families, or writing novels, or contributing to the scholarship on an obscure subject — those people don't deserve to live as well as you. They don't deserve to go to the movies. They don't deserve to eat at nice restaurants. They don't deserve a good car, or a nice apartment. They don't deserve healthcare. They don't deserve good post-secondary education. They don't deserve these things, because they haven't earned them. People who live in poverty deserve to live in poverty, because they haven't gotten out of it yet. People who don't have healhcare don't deserve healthcare. Only the people who can afford it deserve it. Only those who can afford to go to college deserve to go to college. Young people starting out; Older people making a new start; Immigrants, maybe refugees, Coming here with nothing And wanting to build a better life; People who make sandwiches, People who answer phones, Or load trucks, or wash dishes; Cleaners — lots of cleaners; People that mop-up piss from restroom floors; That clear beer cans and dog shit From our childrens' playgrounds, People who may not speak much English, But who work all day clearing debris From construction sites, so that workers Can get around more easily, And more safely; People that mind shops; People that pick fruit; People that sort garbage; People that sort mail; People that do these things Because they don't mind doing them, Because it lets them live their lives, Raise their kids, Write their novels; How arrogant are you to say to them, "No hand-outs. Work harder." How conceited, to say that you deserve all that you have. To say that you worked hard for it Is to say that others haven't; Or at least to say that your work was important And theirs wasn't. Reproachful! To say that the people who work The small jobs don't deserve To eat well, to dress well, To have homes they are proud of, To see shows, to start businesses, To drive a good car, To attend a good school, To have straight teeth, good glasses, To see a doctor when they're sick And have their prescriptions filled. * <<G4E.0548>> Letterform topology Something I would like to do with Hiketep is to use a topologically unique letterform for each of the articulations. In order to do this, I've needed to give some consideration to the topology of letters. Ignoring curved strokes for the moment, the topology of a letter can be described as a sequence of stroke relationships. These are I - Free stroke L - Concatenated strokes (end-to-end) T - Butted strokes X - Crossed strokes (which, picking nits, could be described as a stroke with two butted subordinate strokes, or otherwise) For L and T, some kind of obverse/reverse indicator is needed, as each stroke has two ends and two sides, each of which can have a different joined stroke. * <<G4M.0620>> Ghost In The Shell Of course I'm annoyed that Scarlett Johansen is anchoring the upcoming GITS film, but it's not because she's white; it's because A) I don't think she's right for the part at all, and B) I'm simply annoyed that there's a live-action film being made. When I was a kid, I used to get excited whenever a live-action film was being made of some comics or cartoon property that I liked. Teenage Mutant Ninja Turtles The Movie was a big deal. The Crow was a big deal. Batman was a big deal. But over the years, I've completely lost interest in movie adaptations of comics and cartoons. Why is that? Part of it is the fact that I'm simply not interested in movies anymore, particularly action movies, *especially* special-effects movies. Simulated large-scale destruction bores me, CGI "stunts" don't impress me, and the stories, scripts, and acting in these things is usually nothing to write home about. So, having already a negative impression of Hollywood action films, why would I be enthusiastic about that treatment being applied to a comic, animated film, and animated TV series that I really enjoyed? Actors, somehow, fail to make things more real for me. With a drawing, even a drawing with a disembodied human voice, I've got to use my imagination to fill-in the details, make it "real" in my mind. ... * <<G4S.1399>> Impalation/impalement My first instinct was to use "impalation", but the spell-checker told me that it was invalid. It *is* valid, but extremely obscure — the Google Books ngram viewer indicates that it's had tiny swells of usage, but even at its most-used (circa 1939), "impalement" was published 50 times more often. Anyhow, this got me thinking about which one is more "correct". Impalation suggests that the verb is "impalate", not simply impale. I can't think of other examples of... * <<G55.0857>> Trickle-down ethics It's a sick world we live in, where low-wage workers in developed countries are forced to support the exploitation of low-wage workers in other countries because they can't afford to buy ethically-produced goods. An "ethically-produced" set of clothes: one each of jeans, socks, shoes, t-shirt, sweater, jacket, and underwear, could run ~$1000. How many such suits of clothes do you think it's reasonable for a person to be able to purchase in a year? One? Two? Five? When the minimum wage is $10/hr, and take-home pay is only $7.50/hr, a full-time worker only brings home $15,600 per year, and 60-70% of that will go directly to housing costs, leaving, at best, $6240 to spend all year on food, utilities, clothing, and entertainment. Is it realistic to expect a person with ~$500 in non-rent expenses per month to purchase "ethically-produced" goods? Certainly not. As far as "fair trade" is concerned, shouldn't we expect/demand a high standard of ethics in trade practices from all producers? And what about the ethics of pricing? What are the profit margins for the people at each stage of the supply chain? If you produce goods that you know can only be consumed by people whose income is above the national median, are your goods ethical to consumers? * <<G5J.0782>> Allo God, this new instant messaging app from Google is **AMAZING**. Not only can you insert pictures into chats, but you can WRITE ON THEM! AND! Wait for this — it will blow your mind for sure: You can CHANGE THE SIZE OF THE TEXT IN YOUR MESSAGES!!! Now, as amazing as all of that is, it gets even more amazing. You know how you have, like, ten or fifteen short replies that you always send when people ask you certain types of questions? Like, when someone says "what are you doing?" and you say "nothing." Or when someone sends you a picture of their baby, and you write "OMG. So cute!" Well ... Allo has a /sophisticated Artificial Intelligence/ capability that will LEARN ALL OF YOUR MOST COMMON RESPONSES, AND SUGGEST THEM so that you don't have to actually write them! Is this the future or what!? * <<G5L.0584>> Video corruption I intentionally corrupted some video last night, and I did it in a funny sort of way. The video file was small (<5MiB), so I just concatenated a PPM header onto the video file and opened it up as a large image in GIMP. Then I used a 1px pencil tool to tweak a few bytes here and there. Saved the image, then used 'tail' to chop the PPM header back off, and voila! Corrupted video file. Why did I do this? For #art, humans. * <<G5L.1232>> Video corruption, cont'd. FILE CORRUPTION FOR THE VISUALLY-ORIENTED, or, OFF-LABEL USES FOR NETPBM Version G5L.1232 One thing that we can do with Netpbm that's a lot of fun is artful corruption of binary data. I used the following method to corrupt a video file, but it will work for any data. Let's say you've got a small video file called "video_file.mkv" that is 5432101 bytes long. You can very easily turn it into an image that you can edit using GIMP or Krita or any other image editing software by simply grafting a Netpbm header onto the top of the file. In this example we will use the PPM format specifically, for a full-color image with 8-bit RGB pixels. Before we do anything, we want to look at the hex values of the first few bytes of the file we'll be corrupting. Let's use 'hexdump' to read the hex values for the first 16 bytes: $ hexdump -Cn 16 video_file.mkv 00000000 1a 45 df a3 01 00 00 00 00 00 00 23 42 86 81 01 |.E.........#B...| 00000010 The "00000000" is an index that tells us what part of the file we're looking at. Obviously, we're at the very beginning. The part that starts with "1a 45 df a3 ..." is the actual file data, and we'll want to remember those first few bytes later. Now, let's concern ourselves with creating a PPM image header to tack onto our video file. The PPM header format is very simple. It can just be an ASCII string starting with the letters "P6" followed by a newline, then the image width and height (in pixels) separated by whitespace and followed by a newline, then the maximum value of each color component, again, followed by a newline; like this: P6 [width] [height] [pixel_depth] To determine the width and height to use in your header, divide your file's size (in bytes) by 3 (each pixel will require three bytes, remember), then find the square root. For our example video_file.mkv: √ 5432101 ÷ 3 = 1345.6226563689142. We can only use integer dimensions though, so discard or round the fractional part. Our image will be 1345 x 1345 pixels. For the pixel_depth, or maximum value of each color component, just use 255 for a the typical eight-bits-per-color RGB format. So, our PPM header will look like this: P6 1345 1345 255 Very simple. Now, write that to a file by issuing: $ echo -e "P6\n1345 1345\n255" > header It's important that the header ends with a newline character. The 'echo' tool appends a newline by default, but if you decide to edit the header or create it using a different tool, make sure there's a newline after the "255". Next, stick the header onto your video file: $ cat header video_file.mkv > video_file_image.ppm Now you can open video_file_image.ppm in your favourite graphics editor and mangle it. One thing to keep in mind is that video files will produce interesting glitches just by changing the occasional byte or two, but changing a lot of bytes will make them unplayable. After you've tweaked a few pixels, save the image and then remove the PPM header. How do we do that? Well, this is why we did that hex dump earlier. Your graphics editor will probably change the format of your PPM header — GIMP certainly does — so we don't know exactly how much of the top of the file we need to remove, but we do know what the beginning sequence for the video portion of the file looks like, so we can use 'sed' to erase everything before a given sequence of bytes: $ sed -ze 's/^.*\?\(\x1A\x45\xDF\xA3\)/\1/' modified_video_file_image.ppm > corrupted_video_file.mkv Did you catch that? Mind the part with "\x1A\x45\xDF\xA3". Those are the first four bytes of the video file: 1A 45 DF A3, remember? I used four bytes here; in some cases two would be enough, an in other cases you might need more than four, but in most cases four bytes should be enough of a pattern for sed to match. And there you have it! If you haven't destroyed the bitstream too badly, you should be able to open that file up in your video player and enjoy its glitchy goodness. Before you can use your glitched file in any kind of nonlinear video editor, you'll probably want to render it to a new file using 'avconv' or whatever you like, because the file that you corrupted might play okay in VLC or mplayer, but an NLVE will probably not be happy with an error-ridden file. LÆMEUR <> * <<G5Q.0972>> Misc (xdotool, GIMP, ...) xdotool Learn to use it. ----- A simplified, single-toolbar GIMP UI would be wonderful. I use a very minimal set of tools day-to-day in GIMP, and only need a few palette swatches visible. Something like the Grafx2 UI would be a dream come true. So... why do we live in a computing world where putting together custom "chrome" for any application is a Herculean labour? * <<G5S.0840>> If the fuckin' thing works... News comes out that the US military is still using a an IBM Series/1 computer in the Command and Control systems for its nuclear arsenal. The talking heads on the news deliver the headline with incredulity. The late-night hosts make jokes. But what's the joke, exactly? Unlike your shitty Android phone, which has its system software modified every few days and which is constantly being gummed-up with new apps, that old IBM is stable, and obviously reliable. What the hell do you want the nuclear arsenal to run on? Windows? * <<G64.0722>> ATARI Music ** Kulor / Richard J Armijo "An Anthem for Winterchip" Nice tune; not as technically interesting as some of Kulor's other stuff, but musically very enjoyable. "Cipher of Moving Compass" Fun, light, and excellent use of dynamics and POKEY timbre "Colding" I love the scales/arpeggios in this one. Too bad it's so short! "Congrabalation!" Two versions of this one, mono and stereo. I like the tune, and there are some interesting effects in the background, which are really foreground effects in the mono version. Not sure if I prefer one over the other. "Elementary School Supernova" Frenetic, lots of great timbres! "Generic Battle" A very respectable 50-second BGM loop for a generic battle. *Stereo*. "Random Encounter" Also an enjoyable BGM loop. "Rules" Interesting short BGM track. Again, great use of dynamics. *Stereo* ** Anti Cheat "Back For SAP" Harsh, no envelopes -- I like it. "Warehouse AM" Harsh again, not terribly musical. I like it, but it feels more like a sketch than a finished tune. * <<G6I.1156>> DON'T NOT VOTE When a choice is offered between spaghetti with turdballs and a barbecue turdburger, it's hard to get past the fact that in either event you'll be eating turds. A lot of people want to opt-out. They're choosing not to vote because they don't like their choices. Please, DON'T NOT VOTE. When election time comes, and the votes are tallied, here's how it's going to look: Your protest is going to be a footnote. _It doesn't matter how low voter turnout is_, the media focus will *always* be on who won, and by how much. The loser will blame low voter turnout. The winner will never mention it. On the other hand, if people go out to the polls vote, for a third-party candidate, or even a write-in, *you show* as a slice of the pie chart. Vote! Vote for ANYBODY! Not voting is *too ambiguous* - your /protest/ will only look like apathy, or complacence, or a willingness to be ruled by whomever is chosen to rule you. Voting for *anyone* else, even a fictional character, sends a clear message: I care, I want to vote, but I don't like my choices. GET ON THE PIE CHART! VOTE! *FOR ANYBODY*! DON'T NOT VOTE! * <<G6J.1329>> Microformats, opposed to explicit ActivityStreams verb/object types ** No New Activity Objects; Microformats Instead In GNU social, as in other ActivityStreams-based systems, the activities of users are published as verb:noun (or, action:object) data pairs. For example, when a user posts a notice the server publishes an activity composed of a Post action (verb) of a Note object (noun); likewise, when a user joins a group the server publishes a Join:Group activity; when a user follows another user the server publishes a Follow:User activity, and so-on. Every GNU social server understands a set of core action types — Join, Follow, Post, Delete, Share, and Favorite — as well as a set of core object types: Group, User, Article, Note, Comment, and Activity. However, GNU social is extensible via plug-ins, which may enable the server to publish new types of actions and objects. The current stable release comes with a number of plugins (mostly unused) supporting a variety of Postable objects (Poll, Bookmark, Question, ...), as well as a few special actions related to those types (Vote, ???). The problems with this approach to extensibility are: first, as GNU social is written in PHP, plug-ins must necessarily be written (at least partially) in PHP as well, which may be an unpalatable course of action for programmers unfamiliar-with or opposed to that language; second, user activity only propagates between servers that have been augmented to handle the same action and object types. For example, if a user posts a Poll on his server, his followers on other servers which do not have the Poll plugin enabled will not even receive notification that a Poll has been posted — and they will certainly not be presented with the opportunity to vote on that poll. The users of the GNU social network would be better served by a small set of generic, universally-supported activity types which could be extended with microformats[1] in their content. The benefits of this approach are: 1. The server need never be augmented in order to store, retrieve, or publish any kind of activity. This ensures... 2. ...consistent functional capability across servers. By way of analogy: your email provider may limit the size of messages you are able to send/recieve, but there are no limitations on the *types* of message+attachment which can be sent/received. We should expect the same kind of content-neutrality on GNU social nodes. 3. The responsibility for handling different types of data would fall on the client instead of the client *and* server. [1] I'm using "microformats" generically, here. The microformats specifications are certainly a good place to start, but with the introduction of HTML 5, custom elements of the <x-*> type and attributes of the data-* type provide a powerful mechanism for defining data objects inside valid HTML. Ideally, all microformatted post objects would degrade to text so that a client which does not provide a viewer/interface for a particular object type could simply display the text content of the object. ----- I propose that the Article object — which is a core object type already supported across all StatusNet and GNU social servers — be used for new post types which would be entirely contained within the <content> element of the activity object. For example, the Polls plugin could be obviated by implementing polls as Articles containing HTML/microformats, such as: <entry> ... <activity:object-type>article</activity:object-type> <content type="html"> <div class="h-poll"> What's your favorite colour? <ul> <li class="p-option">Crimson</li> <li class="p-option">Vermillion</li> <li class="p-option">Chartreuse</li> </ul> </div> </content> ... </entry> Poll responses could simply be Comment objects with free-form contents, but with the vote selection microformatted in the text: <entry> ... <activity:object-type>comment</activity:object-type> <content type="html"> Pretty limited choices. Of those offered, I guess I like <span class="h-vote">Vermillion</span>. </content> ... </entry> The mechanism for making sure that poll responses are coded as h-votes (or whatever) would be the responsibility of the client, as would tallying of the poll. Clients may provide a variety of presentation or interaction features for microformats they understand, and fall back to treating articles as simple HTML posts for those that they do not. With the server-side plugin system, both the server and clients need to be extended to handle different activity types. With this kind of microformatted content inside generic Article objects, only clients need to be extended. ** Deprecate "Favorite", implement "Tag" Favorite is a very specific activity, and one that invites the question of why there is not a corresponding "Hate" activity. Functionally, Favorite adds an activity to a list of favorites. The question raised by that is: why do we only have one special-purpose list? Why not an infinite number of lists? Now, I realize that *I just recommended* that no new activity types be added, but this is a special case because. +The next question is: do we need a new Tag action? Or, could we simply use the Share action.+ +A tag action would be useful as each tag would be its own database record, and users could tag/untag activities as they+ +sers need only Share a post with tags added to the <content> of their share. not only could we enable extended functionality like galleries or "pinboards", but we could obviate the Favorite action while providing+ ** Deprecate the Share activity? - Could be obviated in two ways: - 1. Post a new notice that links the old one as an attachment. - 2. - The immediate obejection to the first approach might be that it starts a new conversation thread, disconnected from the original notice. No new post types on the server; all post contents are XML, implementing microformats ----------- Follow, Unfollow -> User Join, Leave -> Group Post -> note, comment, article, +poll, bookmark, question, etc...+ +Favorite -> Activity+ Tag -> Activity +Repeat -> Activity+ * <<G6O.0730>> Code formatting It's just astonishing how difficult a piece of code can be to read when its author uses different conventions of style and formatting than you're accustomed to. Beyond that, it's astonishing how difficult it can be to read source code at all, particularly code that is quite deeply nested and parenthetical. I've removed the formatting from the following JS code, just to examine how unlike human language things can get. This is a single statement, a single 'line of code', if you will, and there's a lot going on in it. var args = require('tav').set( { url: { note: 'URL of the page to parse' }, post:{ value:'', note:'Post parameters' } },'dom-node for node.js',true); How does that parse out into human language? Something like this: Create a variable named args that refers to the object created by the global function require('tav'). Run the set() function of that object with the following arguments: - An object with two properties, url and post. The value of url is an object with a property named note, the value of which is the string 'URL of the page to parse'. The value of post is an object with two properties: value, which contains an empty string, and note, which contains the string 'Post parameters'; - The string 'dom-node for node.js'; - The value true. The formatting the author used for that line is this: var args = require('tav').set({ url:{ note:'URL of the page to parse' }, post:{ value:'', note:'Post parameters' } },'dom-node for node.js',true); That, to my eyes, is hideous. Too much whitespace makes things almost as hard to read as none. For me, it is much easier to read if formatted differently, and we split it into a pair of statements instead of one terse line: args = require('tav'); args.set( { url: { note: 'URL of the page to parse' }, post: { value:'', note:'Post parameters' } }, 'dom-node for node.js', true ); My general rule-of-thumb is that if a phrase/statement/clause can fit on a single line, put it on a single line. If it can't, try to break it into a series of statements/phrases/clauses that will. Don't put onset brackets alone on a line. Coda brackets are okay. * <<G7U.0789>> My brain's at a perpetual simmer; I'm dialed way-down on my dimmer And ev'ry time I get the /glimmer/ of an idear It takes a year To get the fuckin' thing from my brain to my mouth to your ear, So forget about a freestyle, I got no free style, I gotta code and compile and link and run and de-bug And re-de-bug, and re-re-de-bug, and re-UGH! * <<G8L.0597>> Xurg The more I work on Alph, the more I'm realizing that my ideal ALPH application would be a Xanalogical Org-mode. This is actually an old, old idea ...let's see if I can find something about it up in the old JRNL... Well, I found some, but they're undated: [[Feature List]], and [[Thinker]] — I found Thinker before [[Org-mode]] (which I began using ~[[C3T]]), and was blown-away by the fact that it did have transclusion, albeit file-based, local-only transclusion. Anyway, I just had the tiny idea to call my ideal Xanalogical writing software Xurg — Xanadu, "xu" + Org, "rg". Brilliant. Incidentally, I'm not that far from being able to do that. * <<G8x.xxxx>> Baljak derored into surian ice Lain outjek dye kura in hor'm Bidiva mae henryrae, kulon kortekt no by Raetivig hurion morn preg redo IPLOR NURIAT GOL GOY GRIDUN. * <<GAM.0077>> Alph break Well, here I am, back in Emacs. I made a massive leap in progress on the Alph project in July/August/September, but have hardly looked at it in October. I was hoping one month ago that I'd be authoring essays and journals xanalogically at this time, but I'm back in Emacs. I ran out of steam. Alph.js is buggy as all get-out; there's a lot of working stuff in there – tricky stuff, important stuff – but it's not usable for day-to-day things yet. It needs an overhaul after its overhaul (div to iframe rebuild). I'm drawing again, and the computer stuff has fallen in priority. That's good. I need to move through my cycles of interest. It's time for art now. I have a sense that Alph is imperative work, that it needs to be done soon, ~now~ – but it's just going to have to wait a month or nine. Time to draw some good pictures. Maybe even a story. * <<GAP.0661>> I wonder what my potential is as a writer. I feel that I have neither read nor written enough to know whether I have any talent at it or not. * <<GB1.0581>> Clinton email This whole Clinton email thing is, if nothing else, a lesson in how "convenience" alone is never a good reason to do something. Why did Clinton use a private email server? People who hate her are going to tell you that it's because she's secretive and sinister and she wanted to be able to hide things from the public – ignoring "sinister" for a moment, there's probably at least a degree of truth to that – she likely didn't want her personal correspondence being archived on State Dept. computers – however the merit of those accusations is moot because we know, quite credibly, from Clinton's own words that the reason for the private email server was so that she could more "easily" communicate with people inside and out of work. Having two separate email accounts was not easy enough. Looking at multiple inboxes is not easy enough; having to make sure that you "send from..." the right email account is not easy enough. I hope someone with a shred of intelligence suggested that she just carry two Blackberries, labeled in enormous block letters with "BUSINESS" and "PERSONAL", but that, too, was not sufficiently convenient, was it? So, Justin Cooper or whomever made the suggestion said "why don't you just set up your own email server and do everything from there?" That sounds convenient, doesn't it? "I know computers pretty well, I could set-up an email server in your basement!" Okay, let's do it! Now, this is a bit of a digression, but I can't help myself ... ~I~ am pretty handy with computers. I've even set-up an email server before. But if the United States Secretary of State asked me if I could set-up an email server in her basement, I'd say "with respect, madam, you are out of your fucking mind if you are going to trust someone with no government/military information security experience to set-up an email server that's going to carry official state business." I don't know how much work was done by Cooper or Pagliano respectively, or the quality of their work, but the fact that neither of these guys said something tantamount to what I just said is ...mind-boggling. Anyway, this email thing has been dogging Clinton for the entire election, and it all comes down to her making a really stupid decision for the sake of convenience or "ease" of use. Unsurprisingly, none of her toadies were able to make a sufficiently compelling case (or even tried to?) for how this was a REALLY BAD IDEA (tho' I guess Colin Powell – not a toadie – tried). And – this is the part where I make a generalized statement only tangentially related to the prima facie subject of this post – the overarching problem here is that people, ALL the people, are fucking awful at information management & security. You ~might~ be able to convince a person to always use a strong password, and you might help them to make sure that their email client is using TLS to connect to their server, but then they'll let the application remember the password, because that's convenient, so that anyone sitting at their computer or operating their phone has full access. Public-key encryption for sensitive/personal messages? Waaay too inconvenient, for sender /and/ recipient. VPN? What admin wants to set-up a VPN? Too inconvenient! Bottom line: Clinton should never have been allowed to conduct state business with a private email account. She did it because she could and because it was not, in itself, a violation of policy to do so. Did she violate Title 18? Eh, possibly, although I will bet you money that even after these new emails are sifted-through there's not going to be enough evidence of wrongdoing to prosecute her for that. If she had classified information on her server, then we should also be asking why it was ever delivered to a private server in the first place. Clinton's taking a lot of heat for this personally, but the fact is, infosec at the State level is clearly not terribly well managed. * <<GB9.1321>> More Clinton email If you have even a bit of IT experience, reading the FBI report is just page after page of forehead-slapping stupidity on the part of a technically ignorant and careless group of people. Hillary Clinton and her coworkers were essentially driving with a toddler in the passenger seat, with no seatbelt. For the first few months of the server's operation it wasn't even using SSL, for Christ's sake. ----- Who are the non-voters? The young, the poor, and the uneducated. The people who stand to benefit the most from good government are the people least likely to participate in the election. * <<GBE.1328>> Some post-election thoughts. There is a major disconnect between rural and urban America. How do we bring them together? Could we *physically* bring them together? A comprehensive, super-fast national rail network, getting people in and out of the cities/towns, expanding by 50 or 100 miles the range of reasonable commute times? The Internet has shown us that facilitating the exchange of ideas isn't enough, because the lived reality of urban and rural populations is simply different, and so much of our thinking manifests itself as a response to our environment. Social Media. People post when they are emotionally engaged. They post things that they would never say in the physical presence of other people. Because there is no phyisical component, there is no danger, no real consequence to moral transgression. To some extent, this is good -- it's good for working-out your ideas with others in a "safe" thought-space. But if there's no development of the mind, no real contemplation and intellectual engagement, this ends-up being socially and intellectually counterproductive. This gives us the "echo chamber" effect that people write so much about. If we want people to behave online more like they do in real-life, we need to engage them physically. Call them. Video-chat with them. Put a face and a voice to your objections, make it *real*. Polls. If the current trend continues, if people become increasingly less likely to provide honest data to polls, then it will become impossible for politicians to campaign for strategic victory. They must, instead, campaign for total victory, landslide victory. And this means courting *all* voters, not just partisans and "base" demographics. Maybe that's one good outcome that will motivate some new strategy in 2018 and beyond. * <<GBJ.0813>> More population means more representation... ...or, rather, more voting power. House seats and presidential electors are apportioned based on state population – gross population, not the population of voting-age persons. So, you want more congressional/electoral-college representation? Have babies. Have a lot of babies. Make abortion illegal. Then create an environment of high youth mortality. You don't want those babies to grow-up and become *voters*, do you? No. Discourage vaccinations, ignore drug use and crime. Then, for the ones that manage to survive, make sure you incarcerate them and take away their voting rights for being criminals. Fill your state with children and convicted criminals! * <<GBJ.1138>> CAPITALIZE :rudigram: I REMEMBER THINKING IT SHOCKING AND SOMEWHAT OUTRAGEOUS TO MY THEN HIGHLY CONVENTIONAL SENSIBILITIES THAT MY BEST FRIEND DELIBERATELY CHOSE NOT TO USE ANY CAPITALIZATION IN HIS TYPEWRITTEN CORRESPONDENCE - THIS WAS ROUGHLY TWENTY YEARS AGO - I AM LESS JARRED BY IT NOW AS I HAVE SEEN RATHER A LOT OF PEOPLE ADOPT THE SAME CONVENTION OVER THE YEARS - THE THOUGHT I CONTINUE TO HAVE IS THIS - IF YOU ARE GOING TO SHIRK CAPITALIZATION AND RENDER YOUR WORDS ENTIRELY IN THE FORMS OF ONE TYPE CASE THEN WHY ON EARTH WOULD YOU CHOOSE THE LOWER CASE - MINISCULE GLYPHS ARE GARBAGE - WHY WOULD YOU NOT REVERT TO THE SOLID MAJISCULE FORMS OF OUR EARLY LATIN ALPHABET - THE FORMS CARVED IN STONE UPON CAPITOLINE MONUMENTS AND THEIR STARK MODERN SANS SERIF DESCENDANTS - WHY WOULD YOU CHOOSE THE CRUMPLED DISTORTIONS SHAPED BY THE SHORTCOMINGS OF SCRIBES - CAN IT REALLY BE THAT YOUR INDOLENCE OR APATHY IS SO GREAT THAT IT IS NOT ONLY TOO MUCH BOTHER TO PERIODICALLY ACTUATE THE SHIFT KEY WHILST WRITING BUT INDEED THE VERY RARE SETTING OF THE CAPS LOCK KEY IS ITSELF TOO BURDENSOME FOR YOUR FLACCID WILL * <<GBO.1383>> Right/Left wackos ... I just don't know what to make of this vicious culture clash going on between the (formerly) alt-right and the regressive (sic) left. Earlier in the year, I found myself being utterly disgusted by "right"-leaning people online casually throwing around racial slurs as if they were "just words", in some juvenile attempt to wind people up without any consideration of the cultural implications of that kind of behaviour. Now I find myself being utterly disgusted by the "left"-leaning people who self-righteously vilify and bully people who, however wrong-headedly, practice their right to free speech. You can't fight fascism with fascism. You've got people on both sides calling each other the same – and for good reason! "Regressive left" must be a misnomer, mustn't it? It must have started-out as a play on the aptly-named regressive right ...but there's nothing regressive about the new brand of left-wing authoritarian zealots. They're REPRESSIVE, not regressive. * <<GBP.0713>> "But minorities are racist against whites, too!" Of course some are. So what? Yes, some minorities do make unfair, racist statements about whites. Some white people make these same statements about themselves. They are unfair, prejudicial, and sometimes racist. But here's the thing: When you are the demographic majority, and you are disproportionately represented in all levels of government, the media, education, and commerce, take some shit on the chin and shut up about it. Better yet, try to be sympathetic about where it's coming from. * <<GBQ.1439>> On drawing digitally I've felt for a few years now that the drawings I produce digitally tend to be of a higher quality than those I produce using traditional media. Much of that I attribute to the ease with which one may "work" images quickly and cleanly (undo, flip/rotate, cut/paste/stretch, &c.) but there's a tactile element that I think must come into play as well. I have the response curve tuned on my tablet such that I draw with much more pressure variation than I do when using a physical pencil. The forms, I presume, inherit a bit of strength when I apply a more forceful hand to them. * <<GBS.0906>> Fediverse Intro draft Welcome to [service name], and welcome to... ----- THE FEDIVERSE ----- The Fediverse is a free and open social media network. It is comprised of dozens of independent servers whose users can all subscribe to, share, and interact with each others' activities. The OStatus federation protocols make it work. OStatus is a bit like email, but for social media. Y'know how you can email anyone in the world, even if they don't use the same email provider that you do? Well, it's the same in the fediverse: you can subscribe to anyone on any federating server, and anyone can subscribe to you! Contrast this with how Facebook, Twitter, and other "social" services work: to stay in touch with people on Facebook, you must have a Facebook account; to stay in touch with people on Twitter, you must have a Twitter account; likewise for Instagram, Snapchat, Vine, Pinterest, and so on. All of these services want everyone in the world to use *their* servers, and their applications, which they control, and with which they monetize all of your communications. We think that's pretty anti-social. In the Fediverse, it doesn't matter which service you're using, whether you have an account on, or, or – you can stay in touch with all of the people and organizations around the fediverse, regardless of which service *they* use. And if you don't like the service you're using – switch! If you move to another server, tell your friends your new address and re-subscribe to them on the new service. You're never "shut out" of the network. And – here's the *really* different part – if you don't like any of the existing servers, you can *run your own*. The fediverse is built upon free software. The most common fediverse platform is GNU social: it's a plugin-based social media platform written in PHP, and part of the GNU project. You can install GNU social on a home server, a VPS, or a shared hosting provider, and run your own Fediverse node. Then, because GNU social is free software, you can tweak it, modify it, add and remove features, and share your modifications with the community of server admins and developers. Other fediverse servers are also available; Hubzilla, Friendica, Mastodon, and others. ... The Fediverse is a *public* media space. If you want to send private messages, use email, XMPP, SIP, or any of the other well-established private messaging systems. ... * <<GCT.1228>> [[][GC6]] This was a weird piece to do. Entertainment Weekly asked for a very straight riff on Roy Lichtenstein's "OH, JEFF", but with the blonde woman made to look like Anna Faris. I thought that sounded like an interesting challenge, because Lichtenstein's style isn't terribly akin to mine, and then trying to do a likeness in another person's style... that was worth trying. And it was tricky. I'm not sure that I really pulled it off – and, to be honest, I'm not sure how satisfied the client was, either, but the editor (Dragos Lemnei) was very polite with his nudges that I should try, try again. The other thing that made this weird was that I had been aware of David Barsalou's work in identifying the original comic book panels on which Lichtenstein based his paintings, and so I couldn't help but look at the original panel by Tony Abruzzo. Abruzzo's image is, frankly, the best of the three. Mine's fine, but it's stiff; Lichtenstein's is... well, it's Lichtenstein, so it's pretty awful; Abruzzo's is just a gorgeous little piece of cartooning. I wanted to contact Abruzzo, but sadly he's been dead since 1990.