3,090 karma · joined August 22, 2007
[ my public key: https://keybase.io/hexstream; my proof: https://keybase.io/hexstream/sigs/LEcxc2CHs5onKwnA7vtRPPYzR00wDTaKI3kCKUhdYXI ]
Personally I've been using Dvorak for about 3 years and never looked back. I've been using a TypeMatrix keyboard for about that long and I love it. I immediately changed bindings for all the modifiers so I can press them with my thumbs. Here's my "changes.txt" file, which relocates modifiers:
!mod1 = Alt !mod5 = AltGr remove Shift = Shift_L Shift_R remove Control = Control_L Control_R remove mod1 = Alt_L remove mod5 = ISO_Level3_Shift
keysym Next = Shift_L keysym Shift_L = Control_L keysym Shift_R = F32 keysym Control_L = Control_R keysym Prior = Alt_L keysym Alt_L = ISO_Level3_Shift keysym ISO_Level3_Shift = Prior keysym Control_R = Next
add Shift = Shift_L add Control = Control_L Control_R add mod1 = Alt_L add mod5 = ISO_Level3_Shift
This way I press control with my left thumb, shift and alt with my right thumb. Right-shift is remapped to F32, which I then bind to opening parentheses and putting the cursor inside (lisper here). And other misc stuff.
To illustrate, Common Lisp directly supports functional programming but not dataflow programming (though it's possible to implement as a library).
What you were looking for is:
(defmethod person-age :around ((someone person))
(let* ((age (call-next-method))
(category (if (< age 16)
:child
(if (>= age 66)
:senior
:adult))))
(values age category)))Obvious stuff. Never underestimate the power of well-established special interest groups. There's no powerful interest group against farts so of course it's not considered "objectionable", unlike religion.
Then I hung a small calendar in the bathroom where I cross each day that I brush my teeth, and the "I don't want to break my win streak" feeling is so RIDICULOUSLY compelling that it's been many months now and I brush my teeth almost every day, in fact I didn't miss one day since 1 month and 3 weeks ago.
DON'T underestimate the sheer POWER of "win streaks".
My teeth are almost white now!
I did spend a lot of time trying to understand how it all works with pen and paper, reading the original Rete description and the wikipedia article, it's a bit annoying because it seems descriptions of Rete are very few AND they use different terminology and approaches to explaining, AND there are really a lot of implementation choices to make depending on the specifics of your problem, so I had a lot of difficulty wrapping my head completely around the concept.
In fact, the first implementation I made was very contrived and I unknowingly bypassed a lot of problems and I didn't even know my understanding was still incomplete. It's only when I tried to make another implementation for a more difficult problem that I realized and fixed my lackings.
Now that I really understand it though, it really doesn't sound that complicated to me anymore, it's pretty "simple and intuitive". If I didn't remember all the pain I had to go through to understand it, I might think that it's in fact a pretty simple algorithm. I think the way too abstract and obtuse descriptions of it are to blame for much of the difficulty because there really isn't a lot to the fundamentals of the algorithm (though the explosion of implementation choices can get messy to sort through).
I guess about now would be a great time for me to start a blog. ;)
Learning Common Lisp;
Making my own (unreleased) web framework from scratch;
Learning the Rete algorithm (very fast matching of many patterns against many data items). It's the most elaborate algorithm I can implement, it was hard to learn mostly because of how incredibly abstract the descriptions of it are, but it's applicable in many situations to make really cool features possible so it was well worth it.
Uhh, what? In Lisp's case, most people use emacs and coding Lisp in Notepad is mostly IMPOSSIBLE because trying to balance parentheses and navigate and indent s-expressions manually (and correctly) is idiotic.
A lot of people will magically start to treat you as a real contender when you release it, even if you've been viable for several months or even years.
Ah, gosh. Now I need to retroactively reconsider all your posts that I took at face value. Well done :/
"It's infinitely more expensive! It must be infinitely better!!!"
No more alternating nonsense. Pressing modifiers is instantaneous and requires no thought.
The situation of Lisp in that timeframe has improved by leaps and bounds. Much better documentation, many more libraries, less community fragmentation (SBCL has become the clearly-best-supported implementation), better OS integration, new exciting stuff like Clojure, etc.
WARNING: I have repeatedly found the translations of houseware manuals to be thoroughly broken. I often read the English part even though my native language is French because English is, if not the original language, at least well-supported. The French version has pathetic grammar and lacks many accents and has some in wrong places, with bad grammar.
Maybe because I grew up with a partial collection of it that I inherited from my brothers.
Can you explain what's disturbing about it?