Postcards from the Bleeding Edge
Tuesday, August 11, 2009

  Designing an architecture for 2010 and beyond, for me

Here I am. A Birthday Boy again. 44 years old. Ancient. Ugh. Unless you take the speculations of the Exotropians and Singularitists seriously, I'm well past the midpoint of my lifespan. I maybe have 20 years left to me. I mostly feel like I've lived a lifetime already. I used to have to work 18 months a year to get by. I used to take down a lot of money, and yet was still broke all the time. Now... I live in the third world and work on charitable stuff a lot and am still broke all the time. I daydream of making 3k a month for the most minimum effort I can make while sticking to my principles. I have like 20 plans to do so, most in various states of disrepair, hung up on one thing or another.

I tell myself, that for the past 5 years, I've been working on straightening all that out.Myself tells me - "Get with the program!" and "What have you done about all that, lately?"And I reply:The school next door starts up at 7AM, 6 days a week. 200 niños y niñas are on a permanent screaming recreation break, it seems, from start of school till 5PM, and then the marching band practices from 5 to 8, and after that, SJDS is usually partying down, loudly.

Larry Niven theorized with his Protector alien, that at mid-life, protectors lacking family would have to adopt their entire species to have a purpose in life, and those that didn't adopt their entire species, died young.

I could use a little less of my species running around screaming.That doesn't count the fan that's always running, either. What little work I've been getting done has been done nocturnally as a default and I'm often sleep deprived.

Moving to the house I'm in has to rank in the top 10 of the worst mistakes I've ever made. Every conscious minute I have had for the past 9 months has been filled with external noise, except when I was surfing. "Excuses!" - myself tells me.The peace I get from surfing doesn't last more than a hour or two once back in town, and it's not like I'm getting any work done out on the waves. (well, my belly has mostly moved to my chest) I can't surf every day, as much as I would like to, because there isn't surf every day, nor is my body up to it. Every other day is feasible, every third day, probable.

I got the opportunity this week to house-sit at a house that's way off the grid, deep in the country, overlooking a valley, near an awesome surf beach, without a single electric light in eyesight at night.

I wrote most of these past two blog entries by candlelight, in Emacs's org-mode. The crickets and howler monkeys are the loudest thing I can hear. It's wonderful. Moving back this far into the country has problems - I'd need a 4WD car and more capital overall - but perhaps just moving to a quieter neighborhood in SJDS will suffice - I do like not having to manage a car - but even those solutions begs the question: Jeeze, what do I want to do with the rest of my life?

Let's review.

The year so far... Professionally

The year so far, despite my disgruntlement on this day, has been a good one. I worked on a pretty cool music application that I can't talk about publicly. I may do a bit more work on it later this year.

I got stuck on it, though. I handed off the work to a programmer I deeply respect, and although he made serious progress, he didn't quite make it work, either. I feel perversely good about that.

After years of trying, two of the Linux drivers I wrote finally made it into the main kernel distribution. Not a lot of people can point to their name in the kernel. The ardour interface to one of them works well in ardour for the few users I have, but need a bit more work to make it into ardour's mainline. I'm told people are working on rosegarden and mplayer support as well. I'm happy. I wish the darn drivers were done so I wouldn't have to think about them anymore but no-one has shown up to take this cup from me yet. I'd like to finish up the first driver entirely and start on the ardour interface to the second one.

Visits

Much to my surprise my cousins, Laura and Linda - who are the most adventurous members of my family, by far - came to visit me in Nicaragua. They had a great time.

My gf from HS (She Who Will Not be Blogged) also visited for a week. This was mind-blowing, she's a New Yorker, New Yawkers just don't come here... She had a hard time with the heat, but had a good time in the night times. I hope I can lure more friends and family to visit in the coming years. The place really does have many charms, charms that will be paved over in 20 years. Some of my family even surf (yes, I'm talking to you, Bill), and others dive (Steve!).

I've got a little LISP, I've got a little LISP

For the past three years I've been writing down a long survey of what computer languages I liked and disliked, what was right about them, and what was wrong, what I did with them, & why I stopped. I got caught up on the bleeding edge of functional languages with experiments in gocaml and scalia, and also explored some unusual processors, like the Blackfin and Propellor, all in the hope that I'd find a language that tied to an obvious future generation of processors that would scale *me* into the next decade.

No such luck.That document not ready to be published, not by a long shot, but the list of languages I worked in is rather impressive, and the ones I merely played with even more so. All of which were useful and interesting inside of their domains and fail at one of the requirements above.Lately I've been working mostly in Spanish, which has been harder for me than all the computer languages I've worked in, combined. You don't have to pronounce "C", and all the weird grammar rules in Perl pale beside Spanish (and, now that I look back on it, English), and I still speak Spanish in a terrible pidgin that suffices for discussion of politics, women, music, food, and little else. After programming for nearly 25 years, it's second nature to view the answer to my problems is more programming. That didn't work. I came to the reverse conclusion a few years back that the answer was LESS programming, preferably, none. That didn't work, either. Now, I'm trying to find a happy medium. I wrote about discovering org-mode recently. It's helping a lot for re-programming myself.What I want to find is a language that has the equivalent of "set bugs off; do what I'm thinking", something simultaneously fast to write in and fast running, easy, scalable, and reliable. The age old answer to that is you can meet any two of those requirements with any language, easily, the third, with a bit of work, and the fourth and fifth, not at all. Pick any two to start with.
Most of what I worked on and in for the past decade executed fast and was not easy, down-right hard, in fact. It paid well, but the price was in language expressiveness and in my personal over-specialization. Once I was a gtk 1.x expert at a time when there was only three paid jobs in the entire field! I jumped on the voip asterisk bandwagon early, which paid for a while, and has now mostly died in the wake of Skype (but fear not, SIP continues to progress!).Right now I'm overspecialized in performance optimization (which nobody cares about) and real time programming (which few care about), and Embedded programming, which is all the rage, is mostly getting outsourced, for some reason. The iphone is hot (and I'm kind of sorry I missed out on that), as are cell phones in general (but I was involved in that back when it was hard, in 2000, and don't even own a high end cell phone now) I can't bring myself to care about cell phones. Webpads maybe... I have a story to tell about that, one day... I was still deep in Perl when the trend went to Java (I'm not sorry I missed out on java), Before I decided to take this summer off, I was working on making libsamplerate "do" SSE. SSE programming is hard - it is the equivalent of writing assembly in C without the benefit of a macro assembler. Hard. My early tests showed significant improvements that I think will bear out after I get 3 days of full brain cells to actually make it all work, and a couple weeks more of less brain cells to clean it up - but to do that I have to reinvent somewhat more C++ inside of C than I'd like. After it is *done* I'd like to not write in assembly any more. Maybe the compilers will catch up to SSE more in the future.

Hell, I'd like to ditch "C". I have multiple projects left to finish in C, however, and I don't see how I can quit using it - but I do hope I can use it a lot less in the future. I was tempted a lot by what's going on in Cuda and OpenCL- massively parallel programming is going to be the answer to some major problems - but after trying to wrap my head around doing libsamplerate in Cuda - I want to move up a level. (or quit the field entirely - how many industries are you aware of that require you re-invent yourself every five years?). C++, well, ardour's written in it, I still have bugs left to fix in ardour, but I'd like to quit that, too. Ardour rocks but it is extraordinarily complex under the covers.

One major program left to write

I have one fairly large program of my own, left to write, one that I must write, in some language or combination of languages I'll decide one one day soon. I keep hoping someone else will write it, but so far, no luck. I'm not going to talk about it today.
The biggest program I have left to write, though, is the one my life runs on, and it's barely booting right now, and pretty buggy. Some percentage of my output has GOT to get paid for. What that is - whether it be the music recordings I've done, the coding I do, the writing I do - or something else entirely - remains to be determined. What have I got that other people want?

Conclusion

In less than 10 hours spent on these two blog posts, I pumped out 5000 words, clocked in and out over three segments of time. I like knowing that. 500 words an hour, if it were paid, is a living at 6 cents a word. 10 cents would be better, of course, and some markets pay that.Doc's "Because" effect isn't working for me because I just don't generate enough output to take advantage of it. I need to follow Heinlein's dictum - "Sell what you write, write what you sell".

Itunes pays 33 cents a song, roughly, which has to be divvied up between the label, and the artist. Other services pay more. Both Apple and the major labels are trying to resurrect the album - which is great - I LIKE albums, I have recorded 9 albums of various Nicaraguan artists - structured as albums, not singles - in the queue now, and have been experimenting with multi-mode CDs - a normal CD with an additional filesystem on it containing pre-made mp3s, graphics, and hyperlinks. Coming up with the dough to get even one of them manufactured is a problem.

I'm going to take the rest of this month to work on me - via automating every task I can think of, mostly using Emacs LISP, taking the time to solve the hard problems well, for a change, and documenting and backing up the results so I will have them forever. It is a surprising conclusion, that the language I'd (re)learn this year would be any variant of LISP. It's remarkably retro, in fact, and not something I'd expect others to do. But I think better in LISP, and I need solutions that apply to me. I suspect I'll explore some more current variants of LISP - arc and Clojure come to mind... Clojure has a lot of appeal because of it's interface to the java virtual machine....And hopefully, in September, I'll find some paid project to work on. I've got 3 candidates. I've already lined up enough charitable work - notably the village telco is sending me a couple of their cool boards shortly - to keep me busy for years and years.

I don't how I extract myself from my current lease, I have to get into a new house as soon as possible. I have a shot at working out of Italy, perhaps, and I'd like that a lot, too, so I'll work on solving the housing problem via one method or another before my lease is up.The year is still young, even if I am not! I'm going surfing at dawn.

Update: It's dawn. I'm outta here.
Update (Aug 16): I tried to edit this piece with the blogger API. It did bad things. I will fix it later. Sorry for the loss of most paragraphs.
Update 6 Hours later: Fixed now.

Labels: , ,

 
Monday, August 10, 2009

  Going retro, re-adopting Emacs!

After the web hit me over the head in 1991, I started adopting one new shiny tool after another. My desktop was filled with a zillion browser windows (since replaced by a zillion browser tabs), a zillion chat clients (since replaced by a multi-chat client (pidgin)), skype and ekiga, Thunderbird (for email), an RSS client, ardour, a mp3 player (presently aqualung) and... Emacs for programming and writing. My bread and butter came from Emacs. My wine and cheese came from Emacs. Everything else was just shiny.

I'm writing this blog today, in Emacs, in glorious plain, green text, with a black background, without a single graphical gutter, handle, button, gee-gaw, etc, in sight.

Green on black is a cool, calming set of colors that lets me deliberate on things - (even if some of the best rants ever came from a green screen in Jwz's Gruntle)

I have - oops, I need to take a call - ker-chunk - context switch - and "oh! I have mail!" - ker-chunk - and - ker-chunk - someone on irc needs attention - ker-chunk - check out that new app! - and ...

... and before I know it, the day is shot. What Paul Graham wrote about the Maker's Dilemma really applies to me.I also need to relegate activities into work and play modes, and current window systems and tools are emphatically not designed to do that. They are there to dominate your attention. All the applications and web pages nowadays come with shiny, bright-white backgrounds. This is an exciting color! All the shiny apps call to you, saying "use me! use me! use me now!!!!" when I have better things to do. They all want the whole screen to play in, too. "Use me! Use Me! Use only me!"

I really want to dominate my applications and schedule my mind-slots for them in the times when I have brain cells, not vice versa.

I have ADD, bad, in the first place, and an attention deficit on paying attention to my attention deficit going on five years ancient. A five year old has a bigger attention span than I do.

I keep trying to cut the applications I use down to a bare minimum so I can switch between them with a minimum of context switch. Lately chat, rss, and email has been dominating my attention. Even 5 applications is too many - there's also the application I'm working on, whatever it is, to compete with for screen area.

Last month, I decided to try and make Emacs do more of what I wanted. I'd try to get rid of everything else - chat, mail, rss, and web...

Along the way, I was ompletely blindsided by the capabilities of a killer app for Emacs - Org Mode.

I have been whining about my need for a decent outliner for nearly a decade now. (I did not just whine, I also tried to write one in gtk) Word and OpenOffice seem to think that a screen slide's worth of outline is enough - which it isn't for bigger ideas, and all the other modern day outliners I tried were slow and kind of chunky. They didn't work how I wanted them to, in the environments I need them to work in.

I concluded that the kind of outliner I wanted, typeless, with all sorts of weird relationships between the data, was best written in assembly language, and my best shot would be to try and port something like MORE...

And I really didn't want to do that.

It turned out I'd had my perfect outliner installed all along! org-mode! I wrote this (and all of the upcoming blog entries) in org-mode, I'll get back to raving about org-mode in a bit.

Killing chat

I got off of the pidgin multi-client chat pretty easily. I use erc inside of emacs (irc is my primary chat system anyway). Adding support for msn, jabber, and yahoo I did via bitlbee, which is a universal server gateway for irc.

It turns out that I've forgotten most of my chat client passwords, and I haven't figured out how to get them back. Score!

The only thing missing from the default install of bitlbee was support for the Off The Record messaging extension, which thoroughly encrypts the chat conversation using source code I have a reasonable degree of trust in.

I like using OTR, a lot. OTR makes me feel much safer than almost any other system. Consider how Skype operates in china and think upon how much MSN, yahoo, etc must know about you... and how similar your government has become to China... and install OTR - it works with trillian, pidgin, and a few other chat clients. Bitlbee can be used if your client doesn't support it directly. You'll talk freer, trust me.

Getting that to work in bitlbee on jabber and yahoo required a custom compile of bitlbee, and has trouble with html formatted messages, but that was not much of a problem compared to the added security.

Along the way I added a keystroke (control-scroll_lock) to send stuff directly to the pastebin. Pastebins are really useful collaborative tools.

I have two chat systems left that I intend to minimize my usages of.

- The in-browser chat that facebook uses. It's buggy and slow and I hate it. I'm giving facebook the boot from my life, just like Valerie Aurora just did. To all my facebook friends: Sorry. Contact me via irc, msn, yahoo, or jabber if you need to chat. I'll get mail notifications, too, but please switch to sending email from a real provider. My email address is published on facebook. Please use it.

- Skype. I can't see how I can get away from skype, I'm hopelessly dependent on it, so it stays. I have, however, taken advantage of it's scripting capability to be able to log calls from skype into emacs to some extent. Next up, is to be able to make calls from emacs and more importantly, get it to co-exist with my other audio applications.

Killing the Bird


I'm almost completely off of Thunderbird, and am now using Emac's GNUS for sending and receiving email.

Prior to using Thunderbird (and mozilla), I'd used Eudora, and in-between I had a flirtation with gmail (OK, OK, it was a committed relationship) and PHB-like things such as Evolution.

Both of my primary email programs had a single feature that I was addicted to: Mail Filters. I have 3 dozen mailboxes that I use just to handle the volume of incoming mail I get, and something like 7 accounts. It's a real problem, even though I've got off of most of my mailing lists over the past couple years. I always found the procmail language error prone and difficult to use, so I discovered that a newer and simpler language, sieve, was now the default on ubuntu 9.04. I got the thunderbird filter exporter working, and spent an hour translating all those filters into sieve, and another hour debugging that...

... And about 10 hours trying to make it work right and work with Maildir and mbox format message boxes locally and over imaps, which didn't work, nor did it work on my older (8.10) ubuntu box, but I have high hopes to make it work, later. Maybe I'll do a custom compile of dovecot, or wait for another release. Right now I'm running without filters and I hate it. I'm almost ready to write some rules in procmail.

Emac's GNUs mail reader has seven features that I like - it doesn't show you read mailboxes by default, it (optionally) expires mail, it integrates with netnews and rss, I can get to it with a keystroke from emacs from anywhere, it does crypto, and it's very fast. The seventh feature I like is... it's very damn fast. Now that I have local email being spooled and received via postfix over ipv6 (no imap!) it's amazingly fast, as fast as instant messaging, and with leafnode and the local mail store... I process mail, news, and rss off the internet by default!

It required a lot of work to get this far, and I'm still not quite done, so I'll write more about that later.

Think about it, though, yourself. Why does sending email have to be slower than IM?

Enter... org-mode

.
Exactly one month ago I discovered that emacs had a very active project for a super-outliner... called org-mode. I fired up my emacs-snapshot, hit M-x-org-mode, read the manual, and fell in love.

Actually, I didn't read the manual. I sat down and just started typing and all the basic keystrokes came naturally. I was days along before I needed the manual. Later on, I'd think: "There must be some way to hoist a region" or "Schedule a repeating task", and there the intuitive command would be, in the manual.

I'd already been building the latest releases of emacs in anticipation of the 23.1 release... (Emacs's release cycle has slowly been getting out of a slow crawl into more of a stroll, which is suitable for a middle-aged program)

I just finished an outline of my entire life, of every project I have, of every task that I need to be doing, that is nearly 2000 subheadings along, 10s of thousands of words pulled from various sources. It will probably be 4x that long before I'm done, and that's before I add blogging capabilities to it.

It's full of to-do lists, ideas, and checklists, and needed items and budgeting. I hit two keys (F12 a) and I can see the week at a glance, or two keys (F12 t) - to see all my short todos that I could do when I have spare time, clock my time spent on any of it with another two keys, and stay on task with another (single key). Best of all it's all plain text, under git source control, so I can handle my words and tasks just like source code, and periodically checkpoint my status and push it out to a backup server, which I'm doing via cron. Heaven. For the first time in ages I'm not dependent on figuring out how to backup and track a zillion different types of files and databases in a zillion different applications.

One extremely fun thing about org-mode is that the books I've long been writing have timelines associated with them. After I get done importing it into org-mode, I can set my agenda to the far future (it starts in 2012 but most of the action is in 2022-2080) and see what is going on that day.

I've also plunked the arrival dates of the Dawn Probe into it. I can see my way clear to automating the light-seconds of several asteroids relative to each other against the date tags, so I can fiddle with an automated plot against the orbital parameters.

Remember mode and templates

An old friend, rediscovered, was Remember mode, with template support. Does anybody but me still remember how useful Sidekick was? Emacs's Remember mode is WAY more useful than Sidekick.

I can hit two keys (C-c r) to interrupt what I'm doing with a stray thought, and file it away somewhere else so I can deal with it at an appropriate time. Two more keys (the ubiquitous - "do the right thing" command, C-c C-c) and I'm back inside of what I'm doing without touching the mouse.

It's still not quite perfect. I'd like to do costing and budgeting - so I could schedule purposes of an item for when I need it, when I have the dough. I'd like there to be a better default scheduling estimate associated with several types of todo entries (which org-mode supports, I just haven't figured out the right template and timestamp sexp), and the start and stop times don't quite work the way I want them to, yet.


The custom templates code currently looks like this:

(setq org-remember-templates
'(
("Bug" ?B "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check)
("Idea" ?i "* %^{Title}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")
("Web" ?w "* %u %c \n\n%K\n%i %!" "~/org/bookmarks.org" "The Web")
("Blog" ?b "* %u %c \n\n%K\n%i %!\n :PROPERTIES:\n :Effort:\t0:10\n:END:"
"~/org/blog/blog.org" "The Edge")
("Private" ?p "* TODO %^{Description} \n :PROPERTIES:\n :Created: %U\n :Backlink: ->%a\n :END:\n\n %?"
"~/.Private/Private.org" "New")
("Todo" ?t "* TODO %c%?\n SCHEDULED: %u\n\t:PROPERTIES:\n\t:Effort:\t1:00\n:END:"
"~/org/Do.org" "Do")
("Quick Todo" ?T "* TODO %c%?\n SCHEDULED: %u\n :PROPERTIES:\n :Effort:\t0:10\n:END:"
"~/org/Do.org" "Quick Do")
("Handheld" ?N "* TODO %c%?\n SCHEDULED: %u\n :PROPERTIES:\n :Effort:\t0:10\n:END:"
"~/org/handheld.org" "Stuff")
("Quick House" ?H "* TODO %c%?\n SCHEDULED: %u\n :PROPERTIES:\n :Effort:\t0:10\n:END:"
"~/org/Do.org" "Quick House")
("House" ?h "* TODO %c%?\n SCHEDULED: %u\n :PROPERTIES:\n :Effort:\t1:00\n:END:"
"~/org/Do.org" "House")
("Asteroids" ?a "* %u\n %c %? \n%:region" "~/org/bookmarks.org" "Asteroids")
("Ardour" ?A "* %u\n %c %? \n%:region" "~/org/Ardour.org" "Remember")
("Space" ?s "* %u %c %? :SPACE:\n\n%:region" "~/org/bookmarks.org" "Space")
("Emacs" ?e "* TODO %c %? :EMACS:\n SCHEDULED: %u\n :PROPERTIES:\n :Effort:\t0:10\n:END:"
"~/org/emacs.org" "Remember")
("FIXME" ?f "* TODO %c %? :FIXME:\n SCHEDULED: %u" "~/org/Do.org" "FIXME")
("TEST" ?Z "* %c %? :TEST:\n SCHEDULED: %(org-time-stamp +1)" "~/org/emacs.org" "Remember")
("Phone" ?p "* DONE %? :CALL:\n- STARTED: %T\n STOPPED: %T" "~/org/calls.org" "Calls")
("Get" ?g "* TODO Buy %^{ITEM}\n%^{DESCRIPTION}\n- DEADLINE: %T %?\n :PROPERTIES:\n :Effort:\t0:10\n :COST: %^{Cost}\n :END:" "~/org/buy.org" "Buy")
("Chat" ?c "* DONE %? :IRC:\n- STARTED: %t\n STOPPED: %t" "~/org/calls.org" "Chat")
("Delegate" ?d "* TODO %? " "~/org/delegate.org" "Delegate")
("Gnugol" ?G "* [[gnugol:%^{Keywords}]]" "~/org/gnugol.org" "Search Later")
("Procedure" ?P "* %^{Procedure}" "~/org/Procedures.org" "Procedures")
("Nicaragua" ?n "* %^{Heading}\n%^{Text}\n %c %?\n %u" "~/org/book/nica.org" "Notes")
("Ipv6" ?6 "* %^{Heading}\n%^{Text}\n %c %?\n %u" "~/org/ipv6.org" "Notes")
("Vocab" ?v "** [[dict:%^{Word?}]]\n%?\n" "~/org/Vocab.org" "Vocabulary")
("Someday" ?s "** %^{Someday Heading} %U\n%?\n" "~/org/JOURNAL.org" "Someday")
("Appts" ?a "* Appointment: %?\n%^T\n%i\n %a" "~/JOURNAL.org" "Appt")
("RT" ?r "* [[RT:%^{Number}][%^{Number}/%^{Description}]]" "~/org/rt.org" "RT")))


Adopting org-mode has put a lot more structure on my life than I had before, and now ideas, tasks, todos, thoughts, blog entries, etc are all going into more appropriate bins where (someday) they may get acted upon.

Another favorite feature (I have plenty more to write about) is that I can get stuff into org-mode from the command line or a web browser. One swipe of the mouse, one click on a special bookmark in firefox, and I've slammed a piece of useful information into the right spot in my personal database.

I know emacs's keyboard command set would offput anyone that was used to pointing and clicking for everything, say, most of those under 35, but for me, emacs + org-mode is heaven, found. Org-mode's default keyboard assignments are a natural for anyone that has ever used a good outliner, you hardly notice you are in Emacs...

Proof-reading and text to speech



Although I was a persistent reader of netnews, I never posted that much. I usually write several drafts before I'm satisified with what I wrote. Usually that takes days. I almost never post something late at night - and always regret it when I do.

Netnews has a feature that lets you supersede a message in transit but at the time I used netnews a lot I don't think it was available.

I'm grateful for blogging in that it helped me get over that first draft fear, and mad at it for not handling the follow on work well.

I'd like to take my existing canon and re-organise it, now.

I have always done better with a proof-reader. I have a terrible tendency to miss articles (the, a, etc), and mangle tenses. These problems become obvious when read aloud, but it is kind of tedious and still error prone for *me* to do the work.

I have used various speech synthesizers (festival, flite) over the years, as well as speech recognition software. In the latter case, well, if Dragon worked better under linux I'd probably still use it, but I tired of wearing a headset all the time long ago.

I settle now for dictating into a recorder and (if I have the money), sending it out to be transcribed via Transcribr. I've got hundreds of hours of me yammering into a recorder in the queue. Worse, they are mostly uncategorized, not even dated, and in wma format, which is hard to deal with. I need to come up with a method of sorting though it all and categorizing it. Getting to where I have one-key delegation to transcribr would be good, too.

In the former case - speech synthesis - most of the open source solutions don't sound very good - and had a hard time interfacing with out sound software that I was using, and almost never with the editor.

Back when I was hacking on asterisk, however, I discovered cepstral - which is founded by the same guys that released festival as open source - and that they'd found a business model of releasing domain specific voices that are quite good. I bought two ("Amy" and "Diane") and installed them. I think Diane sounds the best (but am tempted to try a British voice next)

I found something simpler than emacsspeak - speechd.el - and got it running. It's still too complex for someone that is still sight-enabled, so I simplified matters with little custom lisp,
(myrtb () "Read That Back" ...)

Now, in emacs, I mark a region and hit a function key - and I get everything read back! I can step away from the keyboard and listen to what I wrote while doing something else, like making coffee.

Really successful writers always point to their "first reader" as being key to their success. Usually that person is a wife (or husband) or close friend.

Lacking that first reader, my first reader is speechd + cepstral.

I also have some cute crontab scripts now like "say-nag" which nags me every 20 minutes with whatever I'm supposed to be doing in ~/.nag, and appointment notifications are spoken rather than put on the screen.

...

I have a lot more to write about org-mode, etc, but I need to switch to some new blogging software and disqis next, so I can truly do push-button publishing once again.

Without a browser.

Labels: , , , , , , ,

 
David Täht writes about politics, space, copyright, the internet, audio software, operating systems and surfing.


Resume,Songs,
My new blog, NeX-6, My facebook page
Orgs I like
The EFF - keeping free speech in the world
Musical stuff I like
Jeff, Rick, Ardour, Jack
Prior Rants - Sharing your home network better in a time of covi... Designing for the disconnect Email lists going down the memory hole Instituting saner, professional source code manage... Wireless and Wifi in 2015 - not what I dreamed of Saving wifi! Fixing Bufferbloat! Fighting the vend... Virgin Media - Fixing the epidemic of bufferbloat ... 49... and trying to find my navel Wheels down on mars! Tracking the landing of Curiosity, from Seattle
Best of the blog:
Uncle Bill's Helicopter - A speech I gave to ITT Tech - Chicken soup for engineers
Beating the Brand - A pathological exploration of how branding makes it hard to think straight
Inside the Internet Mind - trying to map the weather within the global supercomputer that consists of humans and google
Sex In Politics - If politicians spent more time pounding the flesh rather than pressing it, it would be a better world
Getting resources from space - An alternative to blowing money on mars using NEAs.
On the Columbia - Why I care about space
Authors I like:
Doc Searls
Where's Cherie?
UrbanAgora
Jerry Pournelle
The Cubic Dog
Evan Hunt
The Bay Area is talking
Brizzled
Zimnoiac Emanations
Eric Raymond
Unlocking The Air
Bob Mage
BroadBand & Me
SpaceCraft
Selenian Boondocks
My Pencil
Transterrestial Musings
Bear Waller Hollar
Callahans
Pajamas Media BlogRoll Member

If you really want to, you can poke through the below links as well.

ARCHIVES
06/09/2002 - 06/16/2002 / 07/28/2002 - 08/04/2002 / 08/11/2002 - 08/18/2002 / 08/18/2002 - 08/25/2002 / 08/25/2002 - 09/01/2002 / 09/22/2002 - 09/29/2002 / 11/10/2002 - 11/17/2002 / 12/15/2002 - 12/22/2002 / 12/22/2002 - 12/29/2002 / 12/29/2002 - 01/05/2003 / 01/05/2003 - 01/12/2003 / 01/19/2003 - 01/26/2003 / 01/26/2003 - 02/02/2003 / 02/09/2003 - 02/16/2003 / 02/16/2003 - 02/23/2003 / 03/02/2003 - 03/09/2003 / 03/16/2003 - 03/23/2003 / 04/06/2003 - 04/13/2003 / 04/13/2003 - 04/20/2003 / 04/20/2003 - 04/27/2003 / 05/04/2003 - 05/11/2003 / 05/18/2003 - 05/25/2003 / 05/25/2003 - 06/01/2003 / 06/01/2003 - 06/08/2003 / 06/08/2003 - 06/15/2003 / 06/15/2003 - 06/22/2003 / 06/22/2003 - 06/29/2003 / 06/29/2003 - 07/06/2003 / 07/20/2003 - 07/27/2003 / 07/27/2003 - 08/03/2003 / 08/03/2003 - 08/10/2003 / 08/10/2003 - 08/17/2003 / 08/17/2003 - 08/24/2003 / 08/24/2003 - 08/31/2003 / 08/31/2003 - 09/07/2003 / 09/07/2003 - 09/14/2003 / 09/14/2003 - 09/21/2003 / 09/21/2003 - 09/28/2003 / 09/28/2003 - 10/05/2003 / 10/05/2003 - 10/12/2003 / 10/12/2003 - 10/19/2003 / 10/19/2003 - 10/26/2003 / 10/26/2003 - 11/02/2003 / 11/02/2003 - 11/09/2003 / 11/09/2003 - 11/16/2003 / 11/30/2003 - 12/07/2003 / 12/07/2003 - 12/14/2003 / 12/14/2003 - 12/21/2003 / 12/28/2003 - 01/04/2004 / 01/11/2004 - 01/18/2004 / 01/18/2004 - 01/25/2004 / 01/25/2004 - 02/01/2004 / 02/01/2004 - 02/08/2004 / 02/08/2004 - 02/15/2004 / 02/15/2004 - 02/22/2004 / 02/22/2004 - 02/29/2004 / 02/29/2004 - 03/07/2004 / 03/14/2004 - 03/21/2004 / 03/21/2004 - 03/28/2004 / 03/28/2004 - 04/04/2004 / 04/04/2004 - 04/11/2004 / 04/11/2004 - 04/18/2004 / 04/18/2004 - 04/25/2004 / 04/25/2004 - 05/02/2004 / 05/02/2004 - 05/09/2004 / 05/09/2004 - 05/16/2004 / 05/16/2004 - 05/23/2004 / 05/30/2004 - 06/06/2004 / 06/06/2004 - 06/13/2004 / 06/13/2004 - 06/20/2004 / 06/20/2004 - 06/27/2004 / 06/27/2004 - 07/04/2004 / 07/04/2004 - 07/11/2004 / 07/11/2004 - 07/18/2004 / 07/18/2004 - 07/25/2004 / 08/08/2004 - 08/15/2004 / 08/22/2004 - 08/29/2004 / 08/29/2004 - 09/05/2004 / 09/05/2004 - 09/12/2004 / 09/19/2004 - 09/26/2004 / 09/26/2004 - 10/03/2004 / 10/03/2004 - 10/10/2004 / 10/10/2004 - 10/17/2004 / 10/17/2004 - 10/24/2004 / 10/24/2004 - 10/31/2004 / 10/31/2004 - 11/07/2004 / 11/07/2004 - 11/14/2004 / 11/14/2004 - 11/21/2004 / 11/21/2004 - 11/28/2004 / 11/28/2004 - 12/05/2004 / 12/05/2004 - 12/12/2004 / 12/12/2004 - 12/19/2004 / 12/19/2004 - 12/26/2004 / 12/26/2004 - 01/02/2005 / 01/02/2005 - 01/09/2005 / 01/16/2005 - 01/23/2005 / 01/23/2005 - 01/30/2005 / 01/30/2005 - 02/06/2005 / 02/06/2005 - 02/13/2005 / 02/13/2005 - 02/20/2005 / 02/20/2005 - 02/27/2005 / 02/27/2005 - 03/06/2005 / 03/06/2005 - 03/13/2005 / 03/27/2005 - 04/03/2005 / 04/03/2005 - 04/10/2005 / 04/10/2005 - 04/17/2005 / 05/29/2005 - 06/05/2005 / 06/05/2005 - 06/12/2005 / 06/12/2005 - 06/19/2005 / 06/19/2005 - 06/26/2005 / 06/26/2005 - 07/03/2005 / 07/03/2005 - 07/10/2005 / 07/10/2005 - 07/17/2005 / 07/24/2005 - 07/31/2005 / 07/31/2005 - 08/07/2005 / 08/07/2005 - 08/14/2005 / 08/14/2005 - 08/21/2005 / 08/21/2005 - 08/28/2005 / 08/28/2005 - 09/04/2005 / 09/04/2005 - 09/11/2005 / 09/11/2005 - 09/18/2005 / 09/18/2005 - 09/25/2005 / 09/25/2005 - 10/02/2005 / 10/02/2005 - 10/09/2005 / 10/09/2005 - 10/16/2005 / 10/16/2005 - 10/23/2005 / 10/23/2005 - 10/30/2005 / 10/30/2005 - 11/06/2005 / 11/06/2005 - 11/13/2005 / 11/13/2005 - 11/20/2005 / 11/20/2005 - 11/27/2005 / 11/27/2005 - 12/04/2005 / 12/04/2005 - 12/11/2005 / 12/11/2005 - 12/18/2005 / 12/18/2005 - 12/25/2005 / 01/01/2006 - 01/08/2006 / 01/08/2006 - 01/15/2006 / 01/15/2006 - 01/22/2006 / 01/22/2006 - 01/29/2006 / 01/29/2006 - 02/05/2006 / 02/19/2006 - 02/26/2006 / 03/05/2006 - 03/12/2006 / 03/19/2006 - 03/26/2006 / 03/26/2006 - 04/02/2006 / 04/02/2006 - 04/09/2006 / 04/09/2006 - 04/16/2006 / 04/23/2006 - 04/30/2006 / 05/07/2006 - 05/14/2006 / 05/14/2006 - 05/21/2006 / 05/21/2006 - 05/28/2006 / 06/04/2006 - 06/11/2006 / 06/11/2006 - 06/18/2006 / 06/18/2006 - 06/25/2006 / 06/25/2006 - 07/02/2006 / 07/02/2006 - 07/09/2006 / 07/09/2006 - 07/16/2006 / 07/23/2006 - 07/30/2006 / 08/06/2006 - 08/13/2006 / 08/13/2006 - 08/20/2006 / 09/03/2006 - 09/10/2006 / 09/17/2006 - 09/24/2006 / 09/24/2006 - 10/01/2006 / 10/01/2006 - 10/08/2006 / 10/22/2006 - 10/29/2006 / 11/19/2006 - 11/26/2006 / 11/26/2006 - 12/03/2006 / 12/03/2006 - 12/10/2006 / 12/10/2006 - 12/17/2006 / 12/17/2006 - 12/24/2006 / 12/24/2006 - 12/31/2006 / 01/07/2007 - 01/14/2007 / 01/14/2007 - 01/21/2007 / 01/28/2007 - 02/04/2007 / 02/11/2007 - 02/18/2007 / 02/18/2007 - 02/25/2007 / 02/25/2007 - 03/04/2007 / 03/04/2007 - 03/11/2007 / 03/18/2007 - 03/25/2007 / 04/01/2007 - 04/08/2007 / 04/08/2007 - 04/15/2007 / 04/15/2007 - 04/22/2007 / 04/22/2007 - 04/29/2007 / 04/29/2007 - 05/06/2007 / 05/06/2007 - 05/13/2007 / 05/20/2007 - 05/27/2007 / 05/27/2007 - 06/03/2007 / 06/03/2007 - 06/10/2007 / 06/10/2007 - 06/17/2007 / 06/17/2007 - 06/24/2007 / 07/01/2007 - 07/08/2007 / 07/08/2007 - 07/15/2007 / 07/22/2007 - 07/29/2007 / 07/29/2007 - 08/05/2007 / 08/05/2007 - 08/12/2007 / 08/26/2007 - 09/02/2007 / 09/09/2007 - 09/16/2007 / 09/23/2007 - 09/30/2007 / 09/30/2007 - 10/07/2007 / 10/07/2007 - 10/14/2007 / 10/14/2007 - 10/21/2007 / 10/21/2007 - 10/28/2007 / 10/28/2007 - 11/04/2007 / 11/04/2007 - 11/11/2007 / 11/11/2007 - 11/18/2007 / 11/18/2007 - 11/25/2007 / 11/25/2007 - 12/02/2007 / 12/02/2007 - 12/09/2007 / 12/09/2007 - 12/16/2007 / 12/16/2007 - 12/23/2007 / 12/23/2007 - 12/30/2007 / 01/06/2008 - 01/13/2008 / 02/03/2008 - 02/10/2008 / 02/17/2008 - 02/24/2008 / 02/24/2008 - 03/02/2008 / 03/02/2008 - 03/09/2008 / 03/09/2008 - 03/16/2008 / 03/16/2008 - 03/23/2008 / 03/23/2008 - 03/30/2008 / 03/30/2008 - 04/06/2008 / 04/20/2008 - 04/27/2008 / 04/27/2008 - 05/04/2008 / 05/04/2008 - 05/11/2008 / 05/11/2008 - 05/18/2008 / 05/18/2008 - 05/25/2008 / 05/25/2008 - 06/01/2008 / 06/01/2008 - 06/08/2008 / 06/08/2008 - 06/15/2008 / 06/15/2008 - 06/22/2008 / 06/22/2008 - 06/29/2008 / 07/06/2008 - 07/13/2008 / 07/13/2008 - 07/20/2008 / 07/20/2008 - 07/27/2008 / 07/27/2008 - 08/03/2008 / 08/03/2008 - 08/10/2008 / 08/10/2008 - 08/17/2008 / 08/17/2008 - 08/24/2008 / 08/31/2008 - 09/07/2008 / 09/07/2008 - 09/14/2008 / 09/14/2008 - 09/21/2008 / 09/21/2008 - 09/28/2008 / 09/28/2008 - 10/05/2008 / 10/05/2008 - 10/12/2008 / 10/12/2008 - 10/19/2008 / 10/19/2008 - 10/26/2008 / 10/26/2008 - 11/02/2008 / 11/02/2008 - 11/09/2008 / 11/09/2008 - 11/16/2008 / 11/16/2008 - 11/23/2008 / 12/07/2008 - 12/14/2008 / 12/21/2008 - 12/28/2008 / 12/28/2008 - 01/04/2009 / 01/18/2009 - 01/25/2009 / 01/25/2009 - 02/01/2009 / 03/22/2009 - 03/29/2009 / 05/10/2009 - 05/17/2009 / 05/17/2009 - 05/24/2009 / 05/31/2009 - 06/07/2009 / 06/14/2009 - 06/21/2009 / 06/21/2009 - 06/28/2009 / 06/28/2009 - 07/05/2009 / 07/05/2009 - 07/12/2009 / 07/12/2009 - 07/19/2009 / 07/26/2009 - 08/02/2009 / 08/09/2009 - 08/16/2009 / 08/23/2009 - 08/30/2009 / 09/06/2009 - 09/13/2009 / 09/20/2009 - 09/27/2009 / 09/27/2009 - 10/04/2009 / 10/04/2009 - 10/11/2009 / 10/11/2009 - 10/18/2009 / 10/18/2009 - 10/25/2009 / 10/25/2009 - 11/01/2009 / 11/29/2009 - 12/06/2009 / 12/27/2009 - 01/03/2010 / 01/31/2010 - 02/07/2010 / 02/07/2010 - 02/14/2010 / 02/28/2010 - 03/07/2010 / 03/07/2010 - 03/14/2010 / 03/28/2010 - 04/04/2010 / 04/18/2010 - 04/25/2010 / 05/16/2010 - 05/23/2010 / 05/30/2010 - 06/06/2010 / 06/13/2010 - 06/20/2010 / 06/20/2010 - 06/27/2010 / 07/04/2010 - 07/11/2010 / 07/11/2010 - 07/18/2010 / 07/18/2010 - 07/25/2010 / 08/08/2010 - 08/15/2010 / 08/29/2010 - 09/05/2010 / 09/05/2010 - 09/12/2010 / 09/19/2010 - 09/26/2010 / 09/26/2010 - 10/03/2010 / 10/10/2010 - 10/17/2010 / 10/17/2010 - 10/24/2010 / 10/31/2010 - 11/07/2010 / 11/28/2010 - 12/05/2010 / 12/05/2010 - 12/12/2010 / 12/12/2010 - 12/19/2010 / 12/26/2010 - 01/02/2011 / 03/06/2011 - 03/13/2011 / 03/13/2011 - 03/20/2011 / 05/22/2011 - 05/29/2011 / 08/07/2011 - 08/14/2011 / 08/14/2011 - 08/21/2011 / 09/18/2011 - 09/25/2011 / 10/02/2011 - 10/09/2011 / 10/09/2011 - 10/16/2011 / 11/06/2011 - 11/13/2011 / 01/15/2012 - 01/22/2012 / 04/22/2012 - 04/29/2012 / 06/24/2012 - 07/01/2012 / 08/05/2012 - 08/12/2012 / 08/11/2013 - 08/18/2013 / 03/01/2015 - 03/08/2015 / 10/04/2015 - 10/11/2015 / 11/08/2015 - 11/15/2015 / 12/22/2019 - 12/29/2019 / 04/05/2020 - 04/12/2020 /


Powered by Blogger