Fuligin's Livejournal
[Most Recent Entries]
[Calendar View]
[Friends]
Below are the 20 most recent journal entries recorded in
Fuligin's LiveJournal:
[ << Previous 20 ]
| Friday, January 25th, 2008 | | 9:41 am |
Work on Kabuki Resumes
Now that I have WaspVM back to where I want it, I have turned back to working on Kabuki MUD. Oddly, after all that fooling around with Wasp, I have decided to use Stackless Python to implement the new server -- I just don't have time to do all the test coverage necessary to write a good, stable server using WaspVM; I will continue experimenting with Wasp as time permits. Part of the reason, Kiterie has been interested in getting Kabuki going for her Fan Fiction horde. I have a version of Kabuki 0.3 up for anyone who wants to use it, while I start work on Kabuki 0.5 for my own entertainment. Btw, found an excellent Socket FAQ which answered a couple interesting questions last weekend. I've also been reading the Kabuki 0.4 code. I am a bit astounded at how far I got with it, considering I totally forgot all about it when I started working on Mosquito three years ago. I would love to continue the internal design of Kabuki 0.4 with a much more beautiful text renderer, like Gargoyle. (Gargoyle is the gold standard for font rendering work, in my book. Too bad it doesn't use a native text widget, so niceties like cut and paste don't work. I have a Wasp REPL toy that uses Gargoyle for a renderer..) | | Monday, January 21st, 2008 | | 7:46 am |
| | Wednesday, January 16th, 2008 | | 8:07 am |
The Joys of Overkill..
For those who don't know, I have been slumming it as an Electronics Tech at a beef packing plant.. The latest of our venerable SY/MATE laptops bit the dust last month, and my manager asked if I could get a new version hosted on an Asus Eee PC. For those who aren't familiar with SFW374, it is pretty much the only way to debug and program our ancient 1980's SY/MAX PLC's. It requires MS-DOS, won't run under Windows, and has kept a brisk trade going for ancient laptops that run DOS "well enough." Oh, and it requires a serial port. The Eee PC doesn't have a serial port, just USB. So, I set up a linux laptop, with DosBox, a MS-DOS emulator intended for ancient video games, and a USB serial adapter. Close, but not perfect.. It turns out DosBox's POSIX serial bridge doesn't work as intended; I can see it mishandling EAGAIN errors via strace(1). A little chainsawing on a copy of the DosBox source tree, and a full hour of work, later.. We have our new near-indestructible, cheap and portable SY/MATE terminals. Now to sneak a crate of the little bastards into the budget, then move on to the next big challenge: porting RSLogix for our A/B SLC 500s.. | | Sunday, December 9th, 2007 | | 12:39 pm |
Kiterie the Barbarian
So.. Working on the new version of Kabuki.. I found a really great implementation of the Interactive Fiction front-end standard, GLK, called Gargoyle.. When I realized that Gargoyle is using GLK, and I can embed Gargoyle to make a front end for Kabuki, I got a bit excited. I tried to explain to Kiterie what was so cool about Gargoyle, and started making wild pronouncements about the significance of ligatures. Kit, of course, asked what the hell a ligature was, so I showed her the entry in Wikipedia, and explained how this was a refinement of English typesetting, and a boon to readability. In short, I went font-geek. Her response? "Oh, I hate that.. I just never knew what it was." Right, so now my library needs a preference for "Barbaric Typesetting.." | | Friday, April 28th, 2006 | | 4:09 pm |
Zombies Tonight! 8 PM Eastern
Since our usual storyteller won't be here for Kabuki, tonight, I will be running a one night session of the Zombies of Brooklyn, a light hearted story advocating the consumption of the tender sweet meats of the living brought to you by Hallmark. Planned tone for tonight is halfway between "Day of the Dead," "Bubba Ho-Tep," and Paranoia; please email any ideas you have about your Zombie's life before unlife to me -- or I will have to dig in my notes for information about the Zombie Flying Wallendas. If you haven't had a chance to join us on Kabuki for a RPG session, tonight's a good night to meet everyone. Shoot me an email or an IM this evening, and I'll do my best to get you set up and comfortable for tonight. Hoping to see you all tonight! | | Tuesday, January 17th, 2006 | | 12:01 pm |
Killer Episode Synopsis
Synopsis of the latest Mythbusters episode on the TiVo: "Adam and Jaimie try to make a deadly weapon out of newspaper and underwear" | | Wednesday, January 11th, 2006 | | 2:02 am |
MOSVM Glimpses: Multimethods
Last year's presentation went extremely well -- well enough that I have secured funding to proceed with a heavy duty rewrite, in an effort to go from proof of concept to useful tool; since the project required a compact virtual machine, I made the mistake of going with Lua last year -- a design decision that I paid for, repeatedly, as I fought Lua's semantics. This year, however, I'm writing my own virtual machine from scratch; the target language is a yet to be named Scheme-derivative with some very interesting language features. Tonight's work involved the implementation of a "variant type" mechanism that resembles Arc's "tag types", and the introduction of CLOS-like multimethods. 1:(define-record point
2: (make-point x y)
3: point?
4: (x point-x set-point-x!)
5: (y point-y set-point-y!))
6:
7:(define (display (<point> p))
8: (display "(x: ")
9: (display (point-x p))
10: (display " y: ")
11: (display (point-y p))
12: (display ")"))
13:
14:(define p1 (make-point 111 222))
15:(display p1) Lines 1-6 use the define-record form from SRFI-9: Defining Record Types, which is implemented on MOSVM by use of the MOSVM's "tag typing" primitives. ( See Paul Graham's discussion of a similar system for Arc ) At Line 7, we take the existing binding for display, currently a primitive in the virtual machine, and wrap it with a multimethod object, and add a table entry that will divert display when it is supplied with a point. Note that display is still usable for its original function -- it will only be shortcutted by the multimethod object when a newer method matches the supplied argument signature. At Line 14 and 15, we see a practical usage of display -- the output should resemble "(x: 111 y: 222)". The functionality is reminiscent of the parts of CLOS and GOOPS that I tend to use, personally, but omits the insanely complicated data member inheritance hackery used by those systems. Also of note, if the multimethod was defined inside a bound context, uses of the original method outside of that context are not altered. New Variant Types are created using the following procedure: (make-type type-name-symbol super-type) The super-type determines the primitive type that dictates how the value is stored in memory -- other variant types may be used, so long as they descend from a primitive type. A variant typed value occupies no more memory than any other value in MOSVM since values are always passed as a pair of type and data. To create an instance of a variant type, one would use the following: (tag variant-type value) The value must have the same primitive type as the variant-type's ancestry -- for SRFI-9 records, we use the ubiquitous Vector as a base type, by way of extraction from Record. The resulting object's type is identical to all other objects tagged with the same type, but disjoint from other objects. You cannot, for example, directly use the vector-ref procedure on a SRFI-9 record. To access the underlying value, you must use the repr procedure. (repr value) For values that are not tagged variant types, this is an identity function. If you did: (tag <point> (vector 111 222)), applying repr to that value would result in #(111 222). The super-types are used by the multimethod dispatch tables, and by the primitive procedure "isa", which can be used to implement simple inheritance systems. | | Monday, October 17th, 2005 | | 3:45 pm |
| | Wednesday, June 15th, 2005 | | 10:41 am |
Gaze, ye mighty, and despair!
Project hush-hush has been approved for presentation at DefCon 13: Mosquito - Secure Remote Code Execution Framework This was what I disappeared for three weeks to work on, last month; needless to say, I'm really excited that we got the go-ahead for the presentation, and utterly dreading answering questions from the crowd about the design. Preliminary peer review has been overwhelmingly positive, but I'm still terrified. Kiterie and I went down to Portland, yesterday, to wander around and, in theory, talk with admissions and financials at USM -- not that we got anything done, but we enjoyed wandering around a city that wasn't Rockland. | | Saturday, May 28th, 2005 | | 1:18 pm |
The OO Programmer's Least Mentioned Tool
.. the thesaurus. When you're stuck trying to find a name for a common ancestor, it's invaluable. Example: the Story and Lobby classes are both Assembly's. better than calling it GenericGatheringOfUsers, which was my first choice.. | | Wednesday, May 25th, 2005 | | 6:36 pm |
My Wife is a Sith
While kiterie and I were wandering around WoW this afternoon, we were accosted by a group of individuals pleading for one more signature to finish creating their new guild. Being already demonstrably mercenary, the wife volunteered, for a bribe. Imagine my amusement when Kiterie, hater of Star Wars, suddenly has the guild tag "Council of the Sith." She quickly left the guild, since she had her bribe and they had their charter, but it appears that the Council was not quite so eager to let her go. About thirty minutes later, I remark on her frenzied typing skills, and inquire who has incurred her wrath, and discover that the fanboys are now aware that Kiterie is a She, and are now pleading with her to return. Her replies include "stop whining", "get a life", and "I don't care if the others will be disappointed." As she gets more irritated with these horny little adolescents, she starts making physical threats of violence, and it occurs to me.. .. Kiterie's a Sith! The threats of violence, the temper, the eagerness to torment the whiny farmboys of the universe; it's all so clear, now. Current Music: Snow White by Snowpony | | Tuesday, May 24th, 2005 | | 10:16 am |
No Working, No Living
Most mornings, I play an online game while I drink my morning cup of coffee; I get my necessary escapist fix, an intelligent challenge, and social contact, all in one vector. Except Tuesday, when my preferred game, "World of Warcraft" is down for maintenance. Tuesdays, I'm stuck scouring my favorite blogs, and pillaging Wikipedia for interesting articles and stubs that I can flesh out. I noticed a cute anecdote on Zen, this morning: the Chinese Chan master Baizhang (720-814 CE), (Japanese: Hyakujo), left behind a famous saying which had been the guiding principle of his life, "A day without work is a day of no eating." When Baizhang was thought to be too old to work in the garden, his devotees hid his gardening tools. In response to this, the master then refused to eat, saying "No working, no living."
The current project, which is stuck in a hush-hush phase right now, is starting to bog down -- I have been working obsessively on it for weeks, due to some really tight time pressures. There are some pretty stringent requirements on this project, forcing me away from "fun" languages, like Scheme, and using more practical ones that tend to interfere with flow -- using irritating little omissions or badly thought out features. I'll be happy when the thing is done, public, and out of the way so I can get back to horsing around with Cloud Wiki and Kabuki. Okay, enough stalling. Time to get back to work Current Music: Dilaudid - The Mountain Goats | | Thursday, May 12th, 2005 | | 11:58 am |
Camera batteries dead.. Must document..
The scene: Ilyanna, curled up on one end of the couch with her blanket, and her favorite doll. The cat, curled up on the other end of the couch, with a stuffed cat next to it, also covered in a blanket. Ilyanna's explanation: "Kitty needed a dolly, too! We wanted a nap.." Current Music: Looper - The Snare | | Sunday, February 20th, 2005 | | 9:18 am |
The Gremlin Project
Just thought I'd check in with my latest little pet project -- while having a discussion with another geek father, I noticed that there's a real paucity of software for pre-school children that isn't saturated with overstimulating graphics and market branding. I've also been trying to come up with something that is easily scriptable for a teaching device for people wanting to learn Scheme. Two birds, one stone:  This is generated by the following Scheme rule script:
(define (flip x y)
(cond
((not (position-ok? x y)) #f)
((eq? (get-tile-color x y) black) (set-tile-color x y white))
(else (set-tile-color x y black))))
(define (flip-north x y)
(flip x (- y 1)))
(define (flip-south x y)
(flip x (+ y 1)))
(define (flip-west x y)
(flip (- x 1) y))
(define (flip-east x y)
(flip (+ x 1) y))
(define (hit-tile x y)
(flip x y)
(flip-north x y)
(flip-east x y)
(flip-west x y)
(flip-south x y))
(define (seed ct)
(flip (random-x) (random-y))
(if (> ct 0) (seed (- ct 1))))
(define (flip-pressed) (hit-tile (get-cursor-x) (get-cursor-y)))
(define (game-started) (init-field 3 3) (seed 5))
(define (is-complete?)
(check-each-tile (lambda (x y) (eq? (get-tile-color x y) black))))
(define (game-completed)
(each-tile (lambda (x y) (set-tile-color x y blue))))
Which encodes the game logic, how to set up a random starting play field, how to determine victory, and how to respond to the 'flip' key. The ugliness, like the render loop, display queues, etc, are all handled by the underpinnings written in Java. The idea is to make it easy to write many similar-looking small games, and then randomize them. The child plays through a sequence of these games, and explores each one to discover the internal logic and the solution for each one. Well.. I thought it was a fun idea. ;) | | Thursday, February 3rd, 2005 | | 2:38 pm |
Serfdom and I/T Workers
First, before reading this entry, take a look at Information Week's The Weblog Question, as mentioned by Slashdot, today. K. Back? When did I/T workers become serfs to their corporations? Are authors expected to automatically give over the copyright of their personal writings to their publishers? Do Human Resources workers deed over their idle doodling done during their off hours? I can understand the concern about not breaking NDA's ( Non-Disclosure Agreements ), but the idea that my employer owns things I write, after hours, is ludicrous. So why do so many companies think that this right is automatically theirs? Whenever I sign a contract, I am always certain to methodically excise any clause that dictates that all my copyrights are given to my employer. I demand specific language limiting that grant to work done pertinent to my assignments with the Company. I have actually threatened a corporation to walk off the job when a misguided legal department tried to insist that all employees sign an updated contract that had expanded copyright grants. It astounds me that people don't actually stick up for themselves when their corporations do these things -- it's like they really trust a corporation to respect their privacy and do the right thing.. | | Wednesday, January 26th, 2005 | | 7:59 am |
Monthly Debris
Time for a monthly catch up -- I periodically remember I not only read other peoples' Live Journals, but I actually have one and should update it. Ilyanna continues to amaze and astound us -- the noticeable change from simple sentences to actually having fairly lucid conversations with us, the cat, the stuffed animals, and strangers in passing has been a real source of fascination for me. Ilyanna still has trouble with her L's and R's, and has adopted a truly impressive set of techniques for trying to get people to understand whatever word she is stuck on. She is also busily memorizing and recognizing letters, and has about half the alphabet down. Her biggest problem with learning characters has been understanding that orientation of the symbol is important. W's and M's, for example, are both "em! daddy, em!" E's are also often M's. Work progresses.. Cloud Wiki is now a Sourceforge project, and has just cut its second minor update in as many weeks. I find it rather amusing that the project that I privately named "That Stupid Little Wiki Server" in the back of my mind has had a much better reception than IPAF did. Now that Cloud Wiki is properly doing everything I could ask a wiki to do, my attention has turned back to working on Kabuki, and its rewrite. The original Kabuki server was written in a lot of haste, as a proof of concept and a gift to Kiterie, who was feeling a little lost in Maine without her friends from Dodge City. Unfortunately, some of the decisions and corners I cut in the original version, like using Twisted Matrix for a network server, and settling on a traditional MUD interface instead of something resembling a contemporary chat client, has been biting me in the ass since our first release. At the request of Pat and Linda, I started work on writing a specialized client for Kabuki Server in Java -- they were having a lot of trouble keeping track of individual scenes in the game. The resulting client worked admirably, but really underscored the limitations of a traditional MUD interface, and how they were cramping work on Kabuki. So, I have decided to accept the fact that the original version was just a proof of concept, and started work on a server that will mature gracefully. The new server does some pretty astounding things involving distributed object models, and I'm really excited about its potential for other, more serious applications. I think Kiterie and Rippah are both utterly sick of hearing about my newest pet project.. | | Sunday, December 26th, 2004 | | 10:18 pm |
Ecstatic
I have been doing a lot of JavaScript programming in the past couple years since deciding to use Mozilla for a cross-platform GUI engine. I have been looking at using Rhino to do some scripting work within a Java application as a possible alternative, but I really needed a reference to JavaScript, the language. While I have a copy of "JavaScript: The Definitive Reference" from O'Reilly, it's not really a great manual for the language -- it spends way too much time obsessing over browser security models and the various ways various browsers squide up the language, and how to use it to manipulate web pages in ways that are abominable misfeatures. I don't care about that, I want the actual language semantics, object model and standard facilities properly documented. Unfortunately, an actual copy of the language specification has eluded me, aside from a badly written deprecated set of pages over at the old Netscape DevEdge site. Rhino has given me something I really wanted from the developer community for Christmas, a proper fucking spec!. Asking goddamn web developers to document a programming language is like asking a blind man to document the Louvre. Sure, he'll can explain the sculptures in excruciating detail, but the best he can offer on the paintings is either a regurgitation of what someone else said, or an honest "duh?" Ink be damned, I'm printing and framing this sucker. | | Friday, December 17th, 2004 | | 12:44 am |
Still Churning Away..
Cloud Wiki hit its first big feature freeze, tonight. (sniff) I'm so proud.. Linda, a friend of Kiterie and I, has been busily filling the wiki's pages with background material for the next story we will be hosting on Kabuki, "Avoiding Heorot." Unlike me, Linda is very literate and writes well. Seeing how much information she wrote on such short notice puts my dismal world building efforts to shame -- I can take comfort in the fact that the wiki itself is running really well, and a few friends of mine have asked if I will host or set up wikis for them, using the new software. Ilyanna has discovered new ways to negotiate with me for what she needs. She doesn't bother with sulking or tantrums anymore, and simply starts either reasoning with me, periodically coming back to check if I'm distracted, or, in the wee hours of the morning before I have had my coffee, trying to verbally walk me through the procedure. I suspect the cat is envious. All he can do is poke me in the ribs when he's hungry. | | Saturday, December 11th, 2004 | | 2:41 pm |
| | 11:28 am |
Wastes of Time
About a month ago, a few friends of mine were struggling with getting OpenRPG going for a little online roleplay, so I brushed the dust off the old Kabuki game server, and introduced them to it. I was really surprised to see how quickly they took to storytelling on the new server, one of the reasons I had lost interest in Kabuki was how difficult I thought it would be for a new storyteller to get going with multiple scenes and characters at his disposal. After the first session, I quickly realized that there was a wealth of semi-static information that could be shared, here, namely character biographies, story notes, background information. It was really crying out for a wiki, so, in haste, I set up IoWiki and made it available to the group, which was a bit of a blunder. IoWiki worked fairly well until we realized that it gags on submissions approaching 5k in size. I started frantically searching for another wiki engine, with the naive belief that there would only be a few products to choose from, and I could be done with the whole thing. Unfortunately, it turns out that there are a plethora of plethoras of wiki engines out there, most of them really badly written. The ones that are well engineered had way too many features, or made unreasonable demands of me to administer. The badly engineered ones were as uncomplicated in output as IoWiki, which was zenlike in its simplicity, but either had very obvious path-related vulnerabilities, or were old fashioned CGI scripts, which I abhor -- one should not load and initialize a script interpreter for every request. I spent three weeks testing the ones out there, ones that were recommended to me by others, or trying to fix IoWiki's glitch -- one that is so horribly buried in there that IoWiki's author has stated that he is considering starting again from scratch. I gave up, day before yesterday, and just resigned myself to writing my own package, using the easiest to work with tools at my disposal -- Python, BaseHTTPServer and SQLite. It is probably a sign that I am way too prolific as a programmer when I can scavenge more than half of the functionality I need by rummaging through my Experimental directory. The server is mostly done, now, and very happily churning out data on our kabuki server. I find it hugely amusing that I spent three or four times as long looking for a good server to use as it took for me to simply add to the horde of servers out there. |
[ << Previous 20 ]
|