I preordered Spore from Amazon in December of 2007. It arrived yesterday. I'm talking here about my impressions.
OK, first, I have only six hours of play time in on Spore, so really, these are just first impressions. I’ve played through the first three stages and am poised to begin the civilization stage. My review of it, I’ve come to realize as I wrote the below, is unapologetically positive. I realized, of course, that I was having fun playing, but now I realize that I love the game. It has shortcomings – the controls are hard sometimes, but overall, I’m really enthusiastic.
The creature creators – particularly once you get into 3D (i.e. everything after the cellular stage) are really fun to just mess with. There are game-play repercussions to the choices of what you attach and where, but even without that, just seeing what you can do is awesome fun. In the end – regardless of how Spore lives up to expectations and hype, just the creative acts alone will make it worth $50 if I honestly appraise things (time and money).
At each stage, so far, the game-play changes significantly. It both gets more complex as you advance and also changes how you accomplish things. I’m playing an herbivore and that informs the choices I have throughout play.
In the beginning I was just hunting bits of green stuff and trying to avoid being prey. The way you grow and level (up through strata of the tide pool? down? Or maybe just in that you’re aware of things at a different scale but in the same space?) is a nice gimmick and the play remains the same but the graphics are rich enough that even though there’s not much to it, it’s fun and rewarding just playing the light game and looking around.
When you advance from one stage to the next, you are presented with a history of your development which focuses on what all you accomplished during the last stage but includes the whole history. It’s fun. Just looking at how your body has morphed at each “generation” is kind of neat – particularly since you remember back to how you were making decisions.
When you crawl out of the sea, new parts – arms and legs most obviously, become available. And you gain a third dimension. You can fight or befriend other nests of critters and you have some basic missions to fulfill to gain DNA points (or whatever – the currency that allows you to alter your form). And you can (and must, I think) build a pack of companions that will help you make friends or eat foes. I stumbled upon gliding wings and found that increasing my flight ability made it fast and fun to get around (and out of danger) in this stage. This is also the first area where maneuvering with the WASD keys was hard. Turning is something I still haven’t mastered. The mouse-look doesn’t work like it ought, I think.
This brings me to another realization about Spore. They give you enough guidance to steer you along the right path, but really figuring out how to play has enough holes in it that you’re figuring stuff out. (Now that I think about it, maybe the manual tells more – maybe even too much, I dunno, I only read the first page.) But, so far at least, the figuring out is nicely in what Vygotsky called my Zone of Proximal Development – which means that the learning task is stimulating and not discouraging.
In the third stage your form is fixed and the creator aspect of play involves dressing your tribe; designing their costume. It’s quite fun. The game play was pretty dull real-time strategy play. Harvest food, domesticate pets – though I’m not sure how to use them yet, make babies, outfit your tribe and assign them tools – that sort of thing. And then you can either impress and ally with other tribes or destroy them. I think your strategy at the beginning of this stage depends on what tools you start with. If not, that kind of sucks, but oh well. I befriended two and destroyed three – even with the intent to follow as pacific a course as I could. Destroying enemies is hardish. If you want to figure everything out for yourself, skip the rest of the paragraph.............The strategy that I settled on was to equip my entire tribe with burning torches and just attack their main building. You get slaughtered but suck up tons of their resources. You want to have built up a food supply first because as you die, you’re laying more eggs. Probably you got wiped out, but reproduced faster than them. So now, you outfit the tribe similarly and repeat the attack. This time you win. I actually hope it’s not as formulaic as all that, but it worked like that for me on my first game.
That’s about all I can think of to say just now. I’m having fun with it.
11 September 2008
15 July 2008
CSA starts to fly
Two weeks ago I noted what our haul from our local CSA was. I just got back with the next box -- last week was a week off for the harvest. It's a nice, but small, assortment. I got maybe a cup of raspberries (that won't last twelve hours), a few radishes, one nice kolrabi, a humongous zucchini (which is not very flavorful, but will provide bulk to stew or omelette or something), a nice bunch of onions, a small amount of chard -- also a nice amount on a week when Cathy and Kivi are out of town, a bag (maybe six ounces) of spinach and another of mixed greens and two big bags of kale. Apparently the box was supposed to have just one but they had an extra and knew from previous conversations that I like kale, so they gave it to me. Booyah!
Labels:
community supported agriculture,
food,
Minnesota
10 July 2008
Party game design
1:30 - Using Brenda Brathwaite's article, Easiest Game Design Exercise Ever I decided to make a silly little game quickly. Also, I need text-heavy stuff to do in order to practice working with my new keyboard.
Right off the bat I'm aiming for a somewhat risque party-game since I don't have any experience inventing such a thing.
1:39 - Step 1 - So let's say there are twenty spaces on our track.
1:40 - Step 2 - Must...choose...narrative... OK, so I really prefer an abstract, but I want to follow this exercise. I want to have some social play elements ( so I want it to be social like running for class president or something but kind of more grown up. Um...like a successful party host(es) or something. Yeah, that'll do -- Party Time.
2:10 - Step 3 - My first impulse was to violate the rules here, but I've gone back and decided to *really* follow this as closely as possible and see what I get. I'm going to just "go with dice" but I want there to be three or four sources of movement in step 4 and I want them to be relatively more powerful than the random movement of the dice. I want the dice to result in a distribution with a low kurtosis. What I'd really like is 3d2 or something but I think that's impractical -- flipping coins sucks compared to rolling dice. After goofing around for a bit I think I'll go with Roll three dice (d6) and take the lowest roll as the mechanic. It gives a slight chance of extraordinary movement (six spaces) but you're about 70% likely to move only one or two spaces. This also allows future developments to alter the die-mechanic.
2:49 - Step 4 - Conflict. I'm not sure about calling this conflict but I want a few position-modifying mini-games. Maybe once they're fleshed out the board will just have one of them on each space or maybe they're the result of a card-draw. The trick now is to figure out what they are. I'd like to have at least four mini-games and ideally, more. I'd like them to extensible -- fitting expansions and player-generated content in seamlessly and allowing certain Challenges (I think that's what I'm calling them) to be removed to fit the tastes of the play-group. I'd also like for the Challenges to result in a net movement of <2 spaces -- so some player(s) might advance or fall back up to two spots or maybe some of each would happen but only up to one space in each direction -- and if this were occasionally violated, no biggie.
Challenge 1: Who here has (never) done...? The way this works is that the Focus player (she who triggers the Challenge) selects a question about past deeds for which her truthful answer is "me" (indicated with a raised hand) and presents it to the crowd. (E.g. "Who here has driven over 100 MPH?" or "Who here has drawn a lover's blood with your teeth?" or "Who here has never skied?") Every other player either raises their hand, indicating that the statement is true for them too, or does nothing indicating that it is not. If no hands are raised, the focus player advances two spaces. If fewer than half the hands are raised then the focus player advances one space.
Challenge 2: Color-Match When using this Challenge, a pile of colored cards or tokens or something must be available. (For testing, I'd like to get a pile of color chips from the paint department at Home Depot or something.) The focus player select a color randomly, drawing it and revealing it to all the players. If that player is wearing a garment that is pretty close in color to drawn color (as determined by a consensus of fellow players) then the focus player has two options. If not, skip the first option below and execute the second.
2a: If the focus player is wearing a garment of close color she may opt to apply the color test rules to herself rather than seeking out the closest match as per the paragraph below. If she happens to wear the closest match in the game, then the option is moot.
2b: The player wearing a garment that is closest in color to the selected color must go back two spaces. If that player would rather, he may remove the garment and instead go forward one space.
Challenge 3: Kiss Your Neighbor When playing with this Challenge module, there is a play aid -- a card with five strata each listing one of, in order: hand, arm, lips, neck and tongue, upon which a pawn rests and moves. The pawn begins the game on the lowest (hand) space. When the focus player lands on a KYN space, he must consult the play aid and kiss one of the players adjacent to him -- the one he has kissed the fewest times if applicable, otherwise his choice. If he will not, he loses two spaces. If he kisses the neighbor in a place and manner appropriate to what is indicated in the space with the pawn, he advances one space. The focus player also has the option of kissing his neighbor as per the space below or above the pawn's current location, subtracting or adding one to the number of spaces gained. Further the pawn is moved up a space on the play aid each time a kiss is conducted earning one or two spaces gained on the victory track. The point of the kiss-location track is to escalate the passion and intimacy of the kiss. To play this appropriately, the meaning of each space should be apprehended with this in mind.
Challenge 4: A Round of Greetings The focus player is to address each other player starting with the player to her left and continuing in clockwise order as if she were the host of a party and were greeting guests as they arrive. Each greeting should include physical contact where practicable (maybe only with adjacent players if your game space doesn't permit freedom of movement), direct eye-contact and a compliment. The focus player receives two space-advances minus one for every fellow-player who thought the act implausible.
Challenge 5: Art Contest The focus player names a subject for the other players to draw. Each other player is given a small piece of paper and a pen or pencil and attempts to draw the named subject. This should take just a few minutes. The focus player then collects the drawings and judges them -- selecting a winner. The drawer of the winning picture advances one space. Then, the focus player's judgment is judged. If every player agrees with the judgment, the focus player advances two spaces. If not, but every player agrees that it was a reasonable or plausible judgment, the focus player advances one space. If not, and every player suspect the focus player of gaming the judgment then the focus player loses a space.
etc.
I'm now thinking that the way to do the board is to just assemble a small deck of cards/spaces based on the modules you're playing with and the relative frequencies desired and then shuffle them up and lay them out making a dynamic board.
5:07 - Step 5 - Oh, I'm done. There you go!
Right off the bat I'm aiming for a somewhat risque party-game since I don't have any experience inventing such a thing.
1:39 - Step 1 - So let's say there are twenty spaces on our track.
1:40 - Step 2 - Must...choose...narrative... OK, so I really prefer an abstract, but I want to follow this exercise. I want to have some social play elements ( so I want it to be social like running for class president or something but kind of more grown up. Um...like a successful party host(es) or something. Yeah, that'll do -- Party Time.
2:10 - Step 3 - My first impulse was to violate the rules here, but I've gone back and decided to *really* follow this as closely as possible and see what I get. I'm going to just "go with dice" but I want there to be three or four sources of movement in step 4 and I want them to be relatively more powerful than the random movement of the dice. I want the dice to result in a distribution with a low kurtosis. What I'd really like is 3d2 or something but I think that's impractical -- flipping coins sucks compared to rolling dice. After goofing around for a bit I think I'll go with Roll three dice (d6) and take the lowest roll as the mechanic. It gives a slight chance of extraordinary movement (six spaces) but you're about 70% likely to move only one or two spaces. This also allows future developments to alter the die-mechanic.
2:49 - Step 4 - Conflict. I'm not sure about calling this conflict but I want a few position-modifying mini-games. Maybe once they're fleshed out the board will just have one of them on each space or maybe they're the result of a card-draw. The trick now is to figure out what they are. I'd like to have at least four mini-games and ideally, more. I'd like them to extensible -- fitting expansions and player-generated content in seamlessly and allowing certain Challenges (I think that's what I'm calling them) to be removed to fit the tastes of the play-group. I'd also like for the Challenges to result in a net movement of <2 spaces -- so some player(s) might advance or fall back up to two spots or maybe some of each would happen but only up to one space in each direction -- and if this were occasionally violated, no biggie.
Challenge 1: Who here has (never) done...? The way this works is that the Focus player (she who triggers the Challenge) selects a question about past deeds for which her truthful answer is "me" (indicated with a raised hand) and presents it to the crowd. (E.g. "Who here has driven over 100 MPH?" or "Who here has drawn a lover's blood with your teeth?" or "Who here has never skied?") Every other player either raises their hand, indicating that the statement is true for them too, or does nothing indicating that it is not. If no hands are raised, the focus player advances two spaces. If fewer than half the hands are raised then the focus player advances one space.
Challenge 2: Color-Match When using this Challenge, a pile of colored cards or tokens or something must be available. (For testing, I'd like to get a pile of color chips from the paint department at Home Depot or something.) The focus player select a color randomly, drawing it and revealing it to all the players. If that player is wearing a garment that is pretty close in color to drawn color (as determined by a consensus of fellow players) then the focus player has two options. If not, skip the first option below and execute the second.
2a: If the focus player is wearing a garment of close color she may opt to apply the color test rules to herself rather than seeking out the closest match as per the paragraph below. If she happens to wear the closest match in the game, then the option is moot.
2b: The player wearing a garment that is closest in color to the selected color must go back two spaces. If that player would rather, he may remove the garment and instead go forward one space.
Challenge 3: Kiss Your Neighbor When playing with this Challenge module, there is a play aid -- a card with five strata each listing one of, in order: hand, arm, lips, neck and tongue, upon which a pawn rests and moves. The pawn begins the game on the lowest (hand) space. When the focus player lands on a KYN space, he must consult the play aid and kiss one of the players adjacent to him -- the one he has kissed the fewest times if applicable, otherwise his choice. If he will not, he loses two spaces. If he kisses the neighbor in a place and manner appropriate to what is indicated in the space with the pawn, he advances one space. The focus player also has the option of kissing his neighbor as per the space below or above the pawn's current location, subtracting or adding one to the number of spaces gained. Further the pawn is moved up a space on the play aid each time a kiss is conducted earning one or two spaces gained on the victory track. The point of the kiss-location track is to escalate the passion and intimacy of the kiss. To play this appropriately, the meaning of each space should be apprehended with this in mind.
Challenge 4: A Round of Greetings The focus player is to address each other player starting with the player to her left and continuing in clockwise order as if she were the host of a party and were greeting guests as they arrive. Each greeting should include physical contact where practicable (maybe only with adjacent players if your game space doesn't permit freedom of movement), direct eye-contact and a compliment. The focus player receives two space-advances minus one for every fellow-player who thought the act implausible.
Challenge 5: Art Contest The focus player names a subject for the other players to draw. Each other player is given a small piece of paper and a pen or pencil and attempts to draw the named subject. This should take just a few minutes. The focus player then collects the drawings and judges them -- selecting a winner. The drawer of the winning picture advances one space. Then, the focus player's judgment is judged. If every player agrees with the judgment, the focus player advances two spaces. If not, but every player agrees that it was a reasonable or plausible judgment, the focus player advances one space. If not, and every player suspect the focus player of gaming the judgment then the focus player loses a space.
etc.
I'm now thinking that the way to do the board is to just assemble a small deck of cards/spaces based on the modules you're playing with and the relative frequencies desired and then shuffle them up and lay them out making a dynamic board.
5:07 - Step 5 - Oh, I'm done. There you go!
Labels:
board game,
game,
game design,
games,
party games
Ergonomics
I recently purchased two new pieces of hardware to improve the ergonomics of my workstations. This decision arises out of the fact that my wrists have been aching more or less constantly for a couple of years. As a programmer, I keyboard for a living and while I keep thinking of career changes that I might undertake, I don't really want to and I don't see how I could continue to provide the same standard of living for my family. Also, I've been holding the degeneration of my wrists back by wearing braces for like ten or twelve hours each day, my fingers have recently started to hurt too.
So, the first of these new devices is the Kinesis Advantage keyboard. Golly, but it's strange. This is the first document that I'm typing on it and some things are interesting. I'll let you read all the specific features and claims made by the manufacturer, but I'll note that the seemingly awkward depression in which the keys lie really does lessen the reach and flex of each finger. I am also starting to believe in the value of this device because in the (painfully long) time that it has taken me to type this short note, my unbraced wrists have been markedly pain-free. So, while it is really hard to get used to the new key-layout, I think I will and I am currently thinking that it's a good thing.
Something unexpected about this experience is that I have identified a bunch of poor typing habits that are deep-rooted in me. Apparently, I hit the Y key with my left pointer habitually. Same with the C! Like, what am I thinking? I took mandatory typing class in 5-7th grades and another semester in high school. And I type nearly as fast as I can compose my thoughts. I should know how to do this all right. And yet, I see that I also use only the left shift key under normal circumstances and I also routinely glance at the keyboard as I type. Bad me! Anyway, neat stuff to observe.
The other new piece of hardware is the Evoluent Vertical Mouse 3. The main idea is that it keeps your mouse-arm more naturally aligned. It seems to make perfect sense that that would be desirable, but it's hard to use comfortably. It is much more like a normal mouse than the new keyboard is normal, but in some ways it feels subtly more awkward. There is a slight ledge on the bottom right of the mouse's body that feels like it must be where to rest your pinky-finger. But when I do, it seems that my fingers don't line up naturally with the buttons. My pointer is on the top button (left-click) and my middle finger is lined up with the second button (I have this set up to switch between open apps) and then my ring and pinky fingers both rest on the bottom button (right-click). The two problems I'm currently experiencing with this is that using the scroll-wheel (between the pointer and middle fingers) is awkward with either finger and then the bottom button feels awkward -- maybe like it's too small for my two fingers or something. Also, these are my impressions after using it for less than an hour -- maybe I'll just get used to it and it will be second nature. Hopefully.
So, the first of these new devices is the Kinesis Advantage keyboard. Golly, but it's strange. This is the first document that I'm typing on it and some things are interesting. I'll let you read all the specific features and claims made by the manufacturer, but I'll note that the seemingly awkward depression in which the keys lie really does lessen the reach and flex of each finger. I am also starting to believe in the value of this device because in the (painfully long) time that it has taken me to type this short note, my unbraced wrists have been markedly pain-free. So, while it is really hard to get used to the new key-layout, I think I will and I am currently thinking that it's a good thing.
Something unexpected about this experience is that I have identified a bunch of poor typing habits that are deep-rooted in me. Apparently, I hit the Y key with my left pointer habitually. Same with the C! Like, what am I thinking? I took mandatory typing class in 5-7th grades and another semester in high school. And I type nearly as fast as I can compose my thoughts. I should know how to do this all right. And yet, I see that I also use only the left shift key under normal circumstances and I also routinely glance at the keyboard as I type. Bad me! Anyway, neat stuff to observe.
The other new piece of hardware is the Evoluent Vertical Mouse 3. The main idea is that it keeps your mouse-arm more naturally aligned. It seems to make perfect sense that that would be desirable, but it's hard to use comfortably. It is much more like a normal mouse than the new keyboard is normal, but in some ways it feels subtly more awkward. There is a slight ledge on the bottom right of the mouse's body that feels like it must be where to rest your pinky-finger. But when I do, it seems that my fingers don't line up naturally with the buttons. My pointer is on the top button (left-click) and my middle finger is lined up with the second button (I have this set up to switch between open apps) and then my ring and pinky fingers both rest on the bottom button (right-click). The two problems I'm currently experiencing with this is that using the scroll-wheel (between the pointer and middle fingers) is awkward with either finger and then the bottom button feels awkward -- maybe like it's too small for my two fingers or something. Also, these are my impressions after using it for less than an hour -- maybe I'll just get used to it and it will be second nature. Hopefully.
27 June 2008
Name-generating algorithm
I've been dabbling with algorithms to generate new, fictional names for new, fictional cultures for ages. Sometimes I just goof around, sometimes I do real research and sometimes I devise implementations. I've got some code that I've been playing with today and I decided to write about what I'm doing. As you will see, the results are not yet entirely satisfying.
Check out the short wiki article on syllable theory for some basics. There's lots more to read on the web if you want to.
The first step was to build up a potential language. I selected an incomplete, base set of phonemes with which I would work:
Co: b, f, j, k, l, p, r, st, y
Cr: b, d, ph, g, h, dge, ck, ll, m, n, p, r, s, t, v, gh, z
v: a, e, ee, o, oo, u, au, ea, eu, oa, ou, ua, ue
I chose these five years ago when I was first developing a spreadsheet that would generate all the possible syllables of certain configurations. I know that limiting the raw numbers was one concern, but I frankly don't recollect why I kept which ones. It doesn't really matter and I could swap them out as desired.
(I think that Co indicates consonants used in syllabic onset and Cr indicates consonants used in the rime. Note some, but not total, overlap.)
I was writing this up today as an element in a little game that I've been messing with so that pawns would have names and personalities. Because of this context I wanted each game to have a cohesive linguistic feel. I went with those default phonemes above and then for each game-run, limited the available elements by removing roughly 50% of them at random. (Each phoneme had a 50% chance to stay or go so really weird things could occasionally happen.)
In one example (which I'll stick to through this article), the retained phonemes look like this:
Co: j, k, p, st, y
Cr: b, ph, g, h, dge, ck, ll, m, p, r, t, v
v: oo, u, ea, oa, ou
The next step is to build syllables that the language uses. I started out accumulating EVERY syllable possible of three different schemes. But that's too much because it lead to a bunch of over-similar syllables and the language ends up feeling funny. I already had a function that trimmed an array in half as described above, so I just ran them through that.
So the three kinds of syllables that I built are: VC Rime, CVC and CV. using the above-described phonemes and trimming algorithm, I created the following syllables that would be available for use in names (or other words, for more ambitious projects):
R/Rime: oob, oodge, oock, ooll, ub, uph, uh, uck, ull, up, eall, eap, ear, oab, oaph, oag, oadge, oack, oat, oav, oum, our, ouv
CoR/CVC: joodge, jooll, jup, jeall, joaph, joag, joadge, joack, joat, koob, koodge, koock, kooll, kub, kuh, kull, kup, keall, koab, koaph, koag, koack, koat, koum, kouv, poob, poodge, pub, puck, pup, pear, poab, poag, poadge, poack, poat, poav, poum, stoob, stub, stuh, stuck, stull, stup, steap, stear, stoaph, stoag, stoadge, stoack, stoat, stour, yoob, yoodge, yoock, yooll, yub, yuph, yuh, yull, yup, yeall, yeap, yoack, yoat, yoav, youm, your
CoV/CV: jea, joa, jou, ku, koa, poo, pu, poa, pou, stoo, stea, yea, yoa
Then in order to put these together to form words, I identified (some taken from literature and some made up by me) eight configurations that were reasonably likely to produce plausible word-forms. They are:
CoR 'CVC
CoV_CoR 'CV_CVC
CoV_CoV 'CV_CV
CoR_CoR 'CVC_CVC
CoR_CoV 'CVC_CV
R_CoV 'R_CV
R_CoR 'R_CVC
CoR_R 'CVC_R
In my application, I just randomly select one as the pattern to which male names will adhere and one to which female names will. using the above syllables, my app generated the following sixty names:
female names using(CoR_CoV):
koabkoa
koagstea
koatpou
stoatyoa
stuhpu
stupjoa
stulljou
koodgeyoa
poadgestoo
poabpoa
stearku
stubyoa
stoaphpu
poobkoa
kealljoa
koollpu
joatpu
poavstea
stoagjou
stullpu
joollstea
stuckkoa
yullstea
stoatpoo
koodgepoo
stearpoo
poodgejoa
stourjea
yoodgekoa
joadgestea
male names using(CoR_R):
keallup
stoageap
koackooll
joodgeoock
stulluck
kealluh
joatouv
poatoav
stearuh
joadgeoum
yoodgeouv
koockoav
puboack
joadgeoob
yoobear
jupull
joatoat
kulloaph
joackoock
youroadge
yooboag
yoodgeoav
koockup
koackup
stooboum
koumeap
kupub
joolluh
kulloav
joadgeoab
Sadly, these are really, hideous names. They do seem to share a set of sounds and rules, but a horrible one. So, clearly, I have some work to do to avoid Joadgeoum and Koodgepoo, but I'm getting there.
If anyone wants the VB.NET class that I'm using to generate this stuff, here it is:
Check out the short wiki article on syllable theory for some basics. There's lots more to read on the web if you want to.
The first step was to build up a potential language. I selected an incomplete, base set of phonemes with which I would work:
Co: b, f, j, k, l, p, r, st, y
Cr: b, d, ph, g, h, dge, ck, ll, m, n, p, r, s, t, v, gh, z
v: a, e, ee, o, oo, u, au, ea, eu, oa, ou, ua, ue
I chose these five years ago when I was first developing a spreadsheet that would generate all the possible syllables of certain configurations. I know that limiting the raw numbers was one concern, but I frankly don't recollect why I kept which ones. It doesn't really matter and I could swap them out as desired.
(I think that Co indicates consonants used in syllabic onset and Cr indicates consonants used in the rime. Note some, but not total, overlap.)
I was writing this up today as an element in a little game that I've been messing with so that pawns would have names and personalities. Because of this context I wanted each game to have a cohesive linguistic feel. I went with those default phonemes above and then for each game-run, limited the available elements by removing roughly 50% of them at random. (Each phoneme had a 50% chance to stay or go so really weird things could occasionally happen.)
In one example (which I'll stick to through this article), the retained phonemes look like this:
Co: j, k, p, st, y
Cr: b, ph, g, h, dge, ck, ll, m, p, r, t, v
v: oo, u, ea, oa, ou
The next step is to build syllables that the language uses. I started out accumulating EVERY syllable possible of three different schemes. But that's too much because it lead to a bunch of over-similar syllables and the language ends up feeling funny. I already had a function that trimmed an array in half as described above, so I just ran them through that.
So the three kinds of syllables that I built are: VC Rime, CVC and CV. using the above-described phonemes and trimming algorithm, I created the following syllables that would be available for use in names (or other words, for more ambitious projects):
R/Rime: oob, oodge, oock, ooll, ub, uph, uh, uck, ull, up, eall, eap, ear, oab, oaph, oag, oadge, oack, oat, oav, oum, our, ouv
CoR/CVC: joodge, jooll, jup, jeall, joaph, joag, joadge, joack, joat, koob, koodge, koock, kooll, kub, kuh, kull, kup, keall, koab, koaph, koag, koack, koat, koum, kouv, poob, poodge, pub, puck, pup, pear, poab, poag, poadge, poack, poat, poav, poum, stoob, stub, stuh, stuck, stull, stup, steap, stear, stoaph, stoag, stoadge, stoack, stoat, stour, yoob, yoodge, yoock, yooll, yub, yuph, yuh, yull, yup, yeall, yeap, yoack, yoat, yoav, youm, your
CoV/CV: jea, joa, jou, ku, koa, poo, pu, poa, pou, stoo, stea, yea, yoa
Then in order to put these together to form words, I identified (some taken from literature and some made up by me) eight configurations that were reasonably likely to produce plausible word-forms. They are:
CoR 'CVC
CoV_CoR 'CV_CVC
CoV_CoV 'CV_CV
CoR_CoR 'CVC_CVC
CoR_CoV 'CVC_CV
R_CoV 'R_CV
R_CoR 'R_CVC
CoR_R 'CVC_R
In my application, I just randomly select one as the pattern to which male names will adhere and one to which female names will. using the above syllables, my app generated the following sixty names:
female names using(CoR_CoV):
koabkoa
koagstea
koatpou
stoatyoa
stuhpu
stupjoa
stulljou
koodgeyoa
poadgestoo
poabpoa
stearku
stubyoa
stoaphpu
poobkoa
kealljoa
koollpu
joatpu
poavstea
stoagjou
stullpu
joollstea
stuckkoa
yullstea
stoatpoo
koodgepoo
stearpoo
poodgejoa
stourjea
yoodgekoa
joadgestea
male names using(CoR_R):
keallup
stoageap
koackooll
joodgeoock
stulluck
kealluh
joatouv
poatoav
stearuh
joadgeoum
yoodgeouv
koockoav
puboack
joadgeoob
yoobear
jupull
joatoat
kulloaph
joackoock
youroadge
yooboag
yoodgeoav
koockup
koackup
stooboum
koumeap
kupub
joolluh
kulloav
joadgeoab
Sadly, these are really, hideous names. They do seem to share a set of sounds and rules, but a horrible one. So, clearly, I have some work to do to avoid Joadgeoum and Koodgepoo, but I'm getting there.
If anyone wants the VB.NET class that I'm using to generate this stuff, here it is:
Imports System.Text
Public Class Language
Dim rand As New Random
Public Co() As String = {"b", "f", "j", "k", "l", "p", "r", "st", "y"}
Public Cr() As String = {"b", "d", "ph", "g", "h", "dge", "ck", "ll", "m", "n", "p", "r", "s", "t", "v", "gh", "z"}
Public v() As String = {"a", "e", "ee", "o", "oo", "u", "au", "ea", "eu", "oa", "ou", "ua", "ue"}
Public R As New List(Of String) 'VC (VCr) Rimes
Public CoR As New List(Of String) 'CVC (CoVCr) Syllables
Public CoV As New List(Of String) 'CV (CoV) Syllables
Public malePattern As wordPattern = rand.Next(0, 8)
Public femalePattern As wordPattern = rand.Next(0, 8)
Public Sub New()
Co = randomHalf(Co)
Cr = randomHalf(Cr)
v = randomHalf(v)
popR()
popCoR()
popCoV()
End Sub
Public Function getName(ByVal sex As gender) As String
Dim pattern As wordPattern
If sex Then pattern = malePattern Else pattern = femalePattern
Dim sb As New StringBuilder
For Each seg As String In pattern.ToString.Split("_")
Select Case seg
Case "Co" : sb.Append(Co(rand.Next(0, Co.Length)))
Case "Cr" : sb.Append(Cr(rand.Next(0, Cr.Length)))
Case "v" : sb.Append(v(rand.Next(0, v.Length)))
Case "R" : sb.Append(R(rand.Next(0, R.Count)))
Case "CoR" : sb.Append(CoR(rand.Next(0, CoR.Count)))
Case "CoV" : sb.Append(CoV(rand.Next(0, CoV.Count)))
End Select
Next
Return sb.ToString
End Function
Private Sub popR()
For Each seg1 As String In v
For Each seg2 As String In Cr
R.Add(seg1 + seg2)
Next
Next
R = randomHalf(R)
End Sub
Private Sub popCoR()
For Each seg1 As String In Co
For Each seg2 As String In R
CoR.Add(seg1 + seg2)
Next
Next
CoR = randomHalf(CoR)
End Sub
Private Sub popCoV()
For Each seg1 As String In Co
For Each seg2 As String In v
CoV.Add(seg1 + seg2)
Next
Next
CoV = randomHalf(CoV)
End Sub
Private Function randomHalf(ByVal a() As String) As String()
Dim output As New StringBuilder
For i As Int16 = 0 To a.Length - 1
If rand.Next(0, 2) Then
If output.Length > 0 Then output.Append(",")
output.Append(a(i))
End If
Next
Return output.ToString.Split(",")
End Function
Private Function randomHalf(ByVal a As List(Of String)) As List(Of String)
Dim output As New List(Of String)
For i As Int16 = 0 To a.Count - 1
If rand.Next(0, 2) Then
output.Add(a(i))
End If
Next
Return output
End Function
End Class
Public Enum wordPattern
CoR 'CVC
CoV_CoR 'CV_CVC
CoV_CoV 'CV_CV
CoR_CoR 'CVC_CVC
CoR_CoV 'CVC_CV
R_CoV 'R_CV
R_CoR 'R_CVC
CoR_R 'CVC_R
End Enum
26 June 2008
Conservative Justices -- I choose you!
Today!
The Supreme Court of the United States, just today, decided a case in a way that, while I think it's butt-obvious, is very, very pleasing to me. Below are some highlights from their decision (some of which I've been arguing for twenty years).
So this is me doing a happy dance!
The Supreme Court of the United States, just today, decided a case in a way that, while I think it's butt-obvious, is very, very pleasing to me. Below are some highlights from their decision (some of which I've been arguing for twenty years).
The Second Amendment protects an individual right to possess a firearm unconnected with service in a militia, and to use that arm for traditionally lawful purposes, such as self-defense within the home.Hooray!
The “militia” comprised all males physicallycapable of acting in concert for the common defense.Ayup!
SCALIA, J., delivered the opinion of the Court, in which ROBERTS,Ouch! I'm usually with the other guys. I still don't like that Alito, but Thomas seems like a good pick -- I wonder how GW pulled that off.
C. J., and KENNEDY, THOMAS, and ALITO, JJ., joined. STEVENS, J., filed a dissenting opinion, in which SOUTER, GINSBURG, and BREYER, JJ., joined. BREYER, J., filed a dissenting opinion, in which STEVENS, SOUTER, and GINSBURG, JJ., joined.
The Amendment’s prefatory clause announces a purpose, butdoes not limit or expand the scope of the second part, the operativeclause.This is specifically what I've been advocating. My friend Aaaron Hunsley helped me clarify my nascent thoughts on this in the early 90s.
So this is me doing a happy dance!
Labels:
government,
guns,
politics,
second amendment,
supreme court
24 June 2008
Our new CSA is starting slowly
When we were in Jersey, we were members of a Community Supported Agriculture farm-coop that we really liked. The fact that it was a block from the Bristol-Myers Squibb campus where I worked was great too. But when we moved to Minnesota three and a half years ago, I couldn't find one that was a reasonable distance -- Rochester is too far for fresh produce!
But a couple months ago I found myself at the Department of Agriculture web pages and noticed a link to MN CSAs and in that directory, I found a link to The Farm at Prairie Oaks Institute which is on the outskirts of Belle Plaine -- the next town down 169 from Jordan! So I inquired and found that this was their first year doing CSA and Cathy and I decided to join them. Two weeks ago we got a preliminary box with some light offerings and today I picked up our second box of goodies.

There's a nice bunch of onions and cilantro and dill and good-sized baggies of mint and marjoram and a small salad worth of mixed greens (mustard, sorel, arugula and romaine) and wee, cute samples of broccoli and kale. The produce is still slow in coming, but I figure it'll soon be bursting forth from the ground. We also got a dozen eggs.
I need to figure out what to do with the dill and marjoram -- I can always dice and freeze, but I'd rather cook. Hmmm...
But a couple months ago I found myself at the Department of Agriculture web pages and noticed a link to MN CSAs and in that directory, I found a link to The Farm at Prairie Oaks Institute which is on the outskirts of Belle Plaine -- the next town down 169 from Jordan! So I inquired and found that this was their first year doing CSA and Cathy and I decided to join them. Two weeks ago we got a preliminary box with some light offerings and today I picked up our second box of goodies.
There's a nice bunch of onions and cilantro and dill and good-sized baggies of mint and marjoram and a small salad worth of mixed greens (mustard, sorel, arugula and romaine) and wee, cute samples of broccoli and kale. The produce is still slow in coming, but I figure it'll soon be bursting forth from the ground. We also got a dozen eggs.
I need to figure out what to do with the dill and marjoram -- I can always dice and freeze, but I'd rather cook. Hmmm...
Labels:
community supported agriculture,
food,
Minnesota
Subscribe to:
Posts (Atom)