phoorn
phoorn
There's No Money In It
22 posts
echo "ARRRRGGHHH" > /dev/null
Don't wanna be here? Send us removal request.
phoorn · 4 years ago
Text
I can’t wait till I’m ancient
Well, being ancient is just a side effect of what I want.
When I was younger, I fantasised about being able to win every social situation. Escape unscathed, at least. I wanted to never be made to look a fool.
Writing makes a fool of you. I follow r/writing on Reddit and think about not doing so every time a post comes into my feed. It’s always someone worrying about something really small and stupid. I don’t worry about these things any more so I get annoyed.
That’s just human nature. I was that guy at one point. I had simple, technical difficulties with writing, and, yeah, I looked them up. I probably typed my questions into search engines. It’s not right – right? – that I have no patience any more. But whadayougonnado?
I think, though, I get annoyed because I don’t know the answer to whatever’s being asked. Let’s find an example.
OK, here it is:
How do you feel about reading writings from “evil” people to write better villains?
Yeah. It’s a stupid question. Who cares? Obviously not me.
I think I think that talking about things is pointless. I know that can’t be the truth. But if I didn’t believe it, why would these questions annoy me?
Why can’t I wait until I’m ancient
It’s because I fantasise that when I’m ancient I’ll know the answers to these questions – to all questions. I’ll be able to look at a flawed story and go, “AH HAH, no, see, your problem there is you XXXXXXXX.”
I’m finally gonna send off that story I was talking about. I got feedback. Turns out, I’d done it again, written a story with a shit ending. My mother tells me about my endings. “No, what needs to happen is that woman who turns up at the end needs to be the guy’s girlfriend, and they need to go on an adventure, find out what was going on and defeat the enemy.”
“Mother, this is a short story!”
I’m getting worked up just thinking about it. She doesn’t read short stories, perhaps has never read one (she reads plenty of novels).
But the fault is mine. No, really. I know it beggars belief.
I did not end it properly. Rather, I just didn’t explain, well … what the fuck had been happening all this time.
And the fix was small.
What I’ve learned.
Yes, I have learned a lesson. Or, at least, I’ve made a decision. The lesson is stories aren’t real. You can’t go about always trying to keep people from seeing the bones of the story. And the decision is now I’m always going to more closely tailor the contents of the story to what the story needs to say.
In novels, you can be looser. But in short stories, you need – oh, I’ll give you an example. I’ll tell you about the story’s issue and what I did to fix it.
The issue was I didn’t explain that the reason everyone had turned into monkeys and left town was they had been, uh, “graced” with the grace of god. Frankly, I still don’t quite explain that. But I do have my character say:
Xu foresaw this, Soraen. He saw what was going to happen and showed us. Now we see … so much more. Now leave."
And there’s my hint. Later on I say a couple more things.
How much should you explain your story? There’s an r/writing question if I ever heard one. And it’s not one with an easy answer. It depends on who your audience is.
People like my mother, they have ideas about how the story should be. If it doesn’t fit that mould, it’s bad. Are they bad and wrong for having this approach?
I’ve always had a pretty good tolerance for weirdness. I enjoyed the theatrical Donnie Darko cut over the director’s cut, which makes more effort to explain what the director thought was going on. I considered my many possible explanations to be better than his.
To be honest, I think so long as the story’s entertaining it doesn’t matter what’s really going on. And so many stories are overdone and cheesy when you really boil down what they’re about. It’s the dressing that makes the salad, not the leaves.
But. I do think that my story is better for these small explanations. I think writers are loath to change things in their stories because they’re frightened they’ll pull the whole apart. Like pulling a thread on a jumper.
But over and over recently I do pull the thread and the story becomes better for it. I think I said a while ago the story wasn’t even going to have what ending it did. It was just going to end suddenly. I’m glad it didn’t.
And it could even be longer. As I was going through it, I found quite a few bits that could be expanded and didn’t expand them. I thought, for example, imagine if we really showed the whole village, all the people in it. And I suppose I could do that eventually (I won’t). People do rework short stories into novels.
I’m behind on my plan. Of course I am. I said I’d do twelve stories this year. So far I’ve completed and submitted … zero.
But. Don’t panic, me. The second one’s first draft is just about completed. And draft zero of the second is completed.
I just need to metaphorically and literally take several deep breaths and continue. That’s why I’m writing here. We hide when we’re failing. I always know I’m doing poorly when I’m not talking to people.
I make it sound like I’ve been having a terrible time. I am not. But I am, I suppose, existentially frightened. You know what I’m talking about.
You have only so many years to live and you’ve wasted so much time already. You want to prove yourself. Rapidly. When we perfect cloning technology we’ll clone ourselves and force our clones to work slave labour while we relax in the Bahamas. Until that point, we have to do it ourselves.
That’s what being ancient means to me. I’m talking about ability. I want to be good.
Luckily, I’m improving. As I’ve claimed repeatedly. Every story I complete I improve. So, let’s write some more.
In other news, I lost three kilograms. That makes me 99.7kg. It’d not even been hard, probably because I’m so fat (high BMR). I’m not starving. I am trying to starve just a little more. 3kg in – a month? – is not a high rate. But on the other hand I’m really not in a rush.
0 notes
phoorn · 4 years ago
Text
Let me complain about Meson
About Hobbits
Meson’s a build system. Or possibly Ninja, Meson’s backend, is a build system. Let’s just say the whole thing is.
It’s an alternative to CMake, which is an alternative to the Autotools, which is a way to write makefiles that work on various systems for fewer pints of blood and sweat. And makefiles are basically recipes, a convenient way to run shell commands that (most commonly) translate your source code into a binary that your computer can run.
When I first used Meson I went, “Wow”. I was thrilled. I’ve never got my head around makefiles, I think because – well, I’m always saying I’m stupid, so this time I’ll say – I’m lazy. Makefiles aren’t complicated at their core. I think what’s confusing is the many shortcuts you can take with them. Many shortcuts make things hard to learn. You can’t see the wood for the trees. And cruft.
If I do one day finally learn Make, I’ll deliberately restrict myself to the old, more verbose syntax. This general approach is what everyone should take whenever they learn something. Start with the scales (music analogy). I’m a guitarist and I’ve hardly bothered. They’re boring. And you think (’cause you’re arrogant) other people need to start with the scales, OK – and there’s nothing wrong with being dumb! – but me …
Lots of us are like this. We think we understand enough or at least trust our perception of our own intelligence – and rush ahead. When people ask other people how to make computer games they get told to make Pong. “Actually, sorry, no,” says OP, “I’m making an open-world simulation CRPG, thanks. Yes, I know it’ll take me a while.”
You’ve got to make Pong. I’m thirty-six and I’ve known this for years. And yet the game I’m writing is a Zelda clone. However, I have paid my dues, having written approximately 1,00,000 command-line programs.
The problem with bells-and-whistles, do-everything-for-you things (like Meson) is what do you do when you can’t get it to do the thing you you need it to do? Look in its documentation. Or possibly the documentation for one of the many programs/libraries/framewords/apis it uses. And when you do, you find (tenuous metaphor) they’re talking Mario and GTA and the Elder Scrolls and you don’t understand, because you didn’t make Pong.
They don’t want you to make Pong. “Try our system/framework/platform. It’s got x and y and you’ll love it! You’ll never have to bother with all those low-level things again.”
Tom Waits can explain it better.
And you end up dumb as a brick. A user instead of wizard you deserve to be. They took your magic wand.
So why am I ranting away about this? As any mediocre scriptwriter will be able to guess, there has been an inciting incident. I am incited, and an incident is responsible.
Basically, I was playing with Zig 1. No one’s written a Syntastic (Vim linting plugin) checker for it, but there is a Zig language server. So I got rid of Syntastic and got ALE (Asynchronous Language … ?), which does the same job as Syntastic, but asynchronously and with LSP support.
LSP – Language Server Protocol – is a Microsoft thing. A good thing, a way for any editor to offer lots of IDE-like things. We could always do those things, with various tools like Ctags but this does it better. Because it makes use of your actual compiler or interpreter’s output.
Getting it set up’s not easy, though, though it worked for me first try this time. A testament to how much I’ve learned? Maybe, but ALE knew where to look for the compile_commands.json and Meson stuck it in the right place.
I always make an effort to properly introduce technical things I talk about, for the sake of the fictional layperson. I, for one, get bored and stop listening to things I don’t understand. But it’s hard, and I’ve failed here before even getting to my point.
Which is systems like Meson are shit. I’ll keep using it, though. I won’t write Pong, and I won’t use Cmake.
The reason it’s shit is I’ve spent five hours trying to silence a clangd warning. clangd’s the name of a language server. For C and C++. At some point today I completely forgot about Zig.
I use gcc to compile my C programs, and too eagerly use gcc extensions. The language server stuff is all to do with clang. So, though I’m compiling with gcc, clang is being used to LINT 2 my C program.
This should be fine. clang claims to be a drop-in replacement for gcc. But it’s not.
Tom Bombadil
I like gcc’s “-fms-extensions” flag. That lets you include structs that have already been defined as anonymous members of another struct.
struct apple { char *name; }; struct orange { struct apple; };
It’s -fms-extensions that permits the nameless struct apple inside the struct orange. Normally you’ve have to give it a name, like:
struct orange { struct apple apple; };
And refer to it like orange.apple.name = "Frederick". -fms-extensions lets you do orange.name = "Frederick".
It’s just nice. I’ll show you another trick, while I’m on the subject.
It fixes the only downside of this approach, which is that now you can’t refer to the member struct as itself: it doesn’t have name. But!
struct orange { union { struct apple; struct apple apple; }; }
Now you are eating your cake in addition to having it. You can now refer to apple’s members without saying apple’s name. And you can pass just the apple to functions that expect one. By writing orange.apple.
One last thing on this topic. Even without -fms-extensions you can mostly do this. You can define anonymous structs, anonymous unions. You just can’t define a struct outside and then use it inside without its name. You can do this:
struct fruit { char *name; union { struct { float sourness; }; // oranges struct { float crunchiness; }; // apples } }
The Barrow Downs
Right now I’d rather know the language of Make. I would have silenced that warning in a jiffy. I’d be rich by now, the time I saved.
It’s swings and roundabouts. I’m obsessed with this idea. There’s no such thing as a free lunch. Programmers (and maybe writers) know this better than anyone.
You do this really awesome thing in an effort to make your program or story better. And it takes ages. And when you’re done you have …
Oh, sometimes you’ll have more flexible code, or more robust code, or faster or more memory-efficient code. But you’ve sacrificed something. Readability, perhaps. Speed. Whatever. It’s gone and there’s no fucking way you’re going back over it again. You’re stuck with it. You’ll defend your decision to the death. You bled for it.
Meson’s big selling-point is it just works. Oh, it’s worth it. I said it was shit earlier – that was a lie. But I’m still mad it took me ages to fix my linter problem.
Hey, Wait, We’re in Mordor?
I’ve got a new complaint.
When I first started programming, I used Visual Studio and Windows. I remember how hard it was for me to compile my first program, which was probably an SDL example. Probably there was Hello, World before that.
Someone said somewhere the hardest thing you’ll ever do in programming is compile your first program. And, oh, I agree. Because there’s all this stuff to learn.
I buggered off to Linux, partly because I’d come to realise if you want to program, particularly in C, it was the place to be. A lot of programming in Windows and Mac is programming in Linux. Users of those OSes use virtual machines, compatibility layers and servers to do it. They have, I am sure, mighty brains, because it’s one thing to compile a program, and quite another cross-compile it, or do it in a VM or container, or do it on the web somehow.
What I didn’t like about Visual Studio was simple: you gave the compiler and linker and build system options by filling out textboxes and picking from menus.
I roared, “But how does it work?”
I felt strongly that Visual Studio’s friendly user interface was obscuring the reality of what I was doing. Now it blindingly obvious to me it’s turning all those textboxes, checkboxes into a commandline, which it’ll fire at the compiler. But I didn’t then.
Meson gives me a strong whiff of that. Look.
add_global_arguments ('-fms-extensions', language: 'c') add_global_arguments ('-Wno-microsoft', language: 'c') m_dep = cc.find_library ('m', required : true) sdl2_dep = cc.find_library ('SDL2', required : true) sdl2_image_dep = cc.find_library ('SDL2_image', required : true) sdl2_ttf_dep = cc.find_library ('SDL2_ttf', required : true)
These are just commandline flags. Meson is taking these strings you give it – “SDL2”, “-fms-extensions”, etc – and appending it to a call to gcc. The cc.find_library function is calling something like pkg-config or cmake. Is all this stuff really better than:
gcc -ggdb3 -Wall src/* -fms-extensions -Wno-microsoft \ -o build/whatever -l -lm \ $(pkg-config sdl2 --cflags --libs) \ $(pkg-config sdl2_ttf --cflags --libs) \ $(pkg-config sdl2_image --cflags --libs) \
Maybe so.
In summary, I could have solved this Meson/LSP/ALE/Vim thing in five seconds flat if I’d written a makefile (or, frankly, since my project is hardly huge, a shell script). But I won’t start writing Makefiles any time soon. I reserve the right to complain about it in the future, though.
a language I definitely approve of, that’s packed good ideas and things done right, that I probably won’t use, because already know how to do the things it tries to solve, and learning new languages makes me feel like a toddler or an old man. Maybe one day! But it’s new, too, and if there’s one solid lesson I’ve learned in my years using Linux and programming it’s don’t use new things. Use old and safely dead things, expecially those whose undead life is regulated by crusty old men and women. Because there’s documentation! And they’re getting round to implementing those features you envy. They’ll get there. And in the meantime, well, you can do it gcc already.↩︎
A linter is a program that looks at your code and points out some kind of problem. Some show syntax errors, some tell you that it doesn’t like your coding style. Some just annoy the shit out of you and you don’t know how to shut them up.↩︎
0 notes
phoorn · 4 years ago
Text
The Cave of Wonders
I wonder if you’re like me? You use Vim, you get bored, you go looking for Vim tricks.
Vim’s like Perl. It’s chockablock with features. A million things you can do and a million ways to do it.
I think it wasn’t always like this. Once (in the mists of time) it was just a text editor with a few commands. Its defining feature was its ability to pipe buffers to programs 1.
You know, like 1,$w !wc -w, which gets you your current buffer’s word count. The “1,$” means use lines 1 to the last. “w” means write. “!” means to a program, not a file. “wc” is a program (word count); “-w” is an option to that program, which means “just print the words” -- normally wc prints words, lines and chars.
Now Vim has a wordcount () function. That makes me sad, nostalgic for a time I never knew, and also happy. I use that function for a straightforward mapping that gets the current file’s wordcount.
nnoremap <leader>w :echo wordcount().words<cr>
I could do it the first way, but this one’s better. It just prints the words. wc also prints the file name – like this: “1350 /home/neil/.vimrc” – which I’d have to chop out.
Now that I think of it, I wouldn’t have had to chop anything if I piped the output of cat to wc: nnoremap <leader>w :1,$w !cat % | wc -w<cr>. The “%” is a Vim thing, not a shell thing. It means “the current file”.
What fun, huh? No, really, this shell/Unix/Linux shit brings me serious, ridiculous joy.
Anyway, I thought I’d show off some of the stuff in my vimrc. There’s priceless treasures inside, I just know it.
Remove_QF_item
The quickfix list is great, the quickfix list is good. But sometimes it’s unwieldy.
What it is is a list you can make in various ways, and scroll through and press enter on entries and jump; to perhaps an entry in the output of the :vimgrep command, perhaps to an error in your program.
Anyway, the unweildy thing is you sometimes end up with too many matches. Your brain explodes and doesn’t clean up after itself.
This function lets you remove quickfix entries. You can’t do that normally, can’t move, copy, delete entries.
I think that you should able to, that you should be able to do all normal mode commands on it. Delete, copy, copy-to-the-end, you know.
What would copying a quickfix item mean, though? God knows. Maybe just copy the lines, maybe copy the lines and addresses so you could … paste them into another quickfix?
I bet you someone could find a use for that. I bet you.
I should say this function isn’t mine. I got off the Internet.
function! RemoveQFItem() let curqfidx = line('.') - 1 let qfall = getqflist() call remove(qfall, curqfidx) call setqflist(qfall, 'r') execute curqfidx + 1 . "cfirst" :copen endfunction :command! RemoveQFItem :call RemoveQFItem() autocmd FileType qf map <buffer> dd :RemoveQFItem<cr>
To be perfectly honest, I don’t use this much. A better way is Cfilter.
Cfilter
This is a standard plugin. It comes with Vim, though you have to load it with packadd cfilter. Put said command in your vimrc.
It lets you filter the quickfix list according to a pattern, like this Cfilter /what.\*ever\>/. That one’ll get rid of all entries that don’t match the pattern “what.*ever”.
It’s capital-C-filter because it’s plugin, not a builtin command. In Vim, lowly users are paradoxically relegated to the upper case.
I think it’s most useful form is Cfilter!, which will remove entries that don’t match the pattern. You know. You do a :vimgrep, get way too many matches, say, no, no, I don’t want any matches from the README, do Cfilter! /README/, and smile smugly where no one can see you.
Increase to textwidth
Now, this one I’m proud of. I came up with it all by myself.
In Vim, there’s this concept, “textwidth”. It’s the point at which Vim will automatically insert a newline. You’re typing away, and go past – as I actually just did – “textwidth” (which for me in Markdown files is 70) and bam, you’re on a newline. How futuristic.
This isn’t the same as soft line wrapping. Vim users use real newlines, and program in real assembly language on their real PDP-11s.
Anyway, this function will change the size of the window you’re in to its buffer’s textwidth. Let’s say you permit yourself (as I have been) 90 columns for your C files. Well, depending on your font size and the size/resolution of your monitor, you might not be able to see all those columns. Particularly if you’re viewing two buffers vertically split.
.......................... | | | | | | | | | | | | | | | | | | |___________|____________|
Have no fear. With Increase_to_textwidth, when you move into such a window, it’ll automatically expand horizontally so you can see the whole thing
.......................... | | | | | | | | | | | | | | | | | | |_______________|________|
Well, it’s not the function that does that. It’s the autocmd that calls it.
Here’s the function.
func! Increase_to_textwidth () if !exists ("g:increase_to_textwidth") return elseif g:increase_to_textwidth == 0 return endif if exists ('b:increase_to_textwidth') if b:increase_to_textwidth == 0 return endif endif let b:increase_to_textwidth = 1 if &tw == 0 return endif let width = getwininfo (win_getid ())[0].width if width < &tw execute 'vertical resize' &tw + 2 endif endfunc
(Looks a bit sloppy.)
And here’s the autocmd.
au WinEnter,VimResized * \ call Increase_to_textwidth ()
Autocmds are the real magic in Vim. They’re what let you warp it into your own diabolical creation.
Win_operator
Here’s another one I like, that I did my own very self.
" Not really an operator func! Win_operator (key) let start_win = winnr () execute 'wincmd' a:key if winnr () != start_win wincmd c endif call win_gotoid (start_win) endfunc silent nnoremap <c-w>ch :call Win_operator ('h')<cr> silent nnoremap <c-w>cl :call Win_operator ('l')<cr> silent nnoremap <c-w>cj :call Win_operator ('j')<cr> silent nnoremap <c-w>ck :call Win_operator ('k')<cr>
The whole thing, including the mappings, lets you get rid of a window to the top, bottom, left and right of you. I use this all the time.
Does it really save too much time? No, it’s not so different from moving to the window and closing it.
But I always want to do everything from right where I am. Abracadabra.
I guess that’s it
Is that it? I really thought there were treasures here. I thought the Cave of Wonders was going to close on us in fire and fury. The textwidth one is good. And the win-operator one. You can’t tell me otherwise.
There’s another one, jump-by-win, which I made into a plugin, but frankly, it broke. So that’s that.
As for the story. Just never mind everything I said about deadlines. I’ve had editing work to do. And, of course, I fucked around for a day. And – of course, of course – the story’s too big. It’s not a 6,473 words one. It’s probably gonna be more than 10,000.
And that worries me. It’s not the time it’ll take. I’ve said I’m doing 12 stories this year, and there’s plenty of time left in February. I’m just worried it’s more than I can chew.
After I got my first and only book published, I was meant to write a novel. I may have mentioned this. And I had no idea what I was doing and the whole thing went tits-up.
I’ve been frightened of long stories ever since. Like men are of marriage.
But no. But no. I do feel pretty confident, as I think I’ve said three times on this blog. The story’s got something. A couple of characters I made up years ago, who I like, and haven’t done anything with for FEAR of fucking them up.
I’m done with such fears, I swear to fucking God! You hear me? I’m done! I’m not afraid any more!
Aside from the “modal editor” thing.↩︎
0 notes
phoorn · 4 years ago
Text
Fat Cunt, Reformed
In Britain some time ago there was an advert. Can’t remember what it was for. “Belly’s gonna get you, belly’s gonna get you.” I’m got. My tits are pretty good, frankly.
And so I’m on a diet. I’m taking this quite seriously. I’ve gone and looked up BMR (Basal Metabolic Rate) and I’m measuring the weights of foods, figuring out their calorie content.
I wrote a program to help me (of course) called ccalc. Just a simple calorie calculator. You go, ccalc rice tatties "monster energy drink:500" and it tells you … wait a minute … – 438.00. The program reads from a file I’m compiling over time. Looks like this:
rice: 1.29 indomie: 5.0 tatties: .74 onions: 0.42 mushrooms: .22 spaghetti: 1.57 canned tomatoes: .17 bread: 2.66 peppers: .26 french fries: 2.74 ice cream: 2.01 broccoli: .34 coffee: .01 milk: .60 monster: .47 walls cheese and onion slice: 2.96 microwave korma: 1.48 egg korma: 1.64 quinoa bulgar wheat: .85 cous cous: 1.07 chia seeds: 4.47 eat natural bar: 4.76 sesame oil: 8.84 olive oil: 8.84 vegetable oil: 8.84 banana: 1.5 peanut butter: 5.88 almond milk: .5 blueberries: .83 girlfriend smoothie: .55
The numbers on the right are cals-per-1-gram. I’ve got them all from fatsecret.com, so if I’m wrong, blame them. Or my shoddy grasp of even the simplest mathematics.
Here’s some interesting things doing this has taught me.
Good god, shrooms1 have fuck-all calories in them. I love shrooms and could eat them all day. Seriously, there were about 150 grams of shrooms in the pack I ate today. That’s … uh, sec … 33.00 calories! What? How can that possibly be true? Maybe it’ll turn out to not be true. But I believe it. Shrooms live in the shade. What need do they have for calories?
Oils of all kinds are jam-packed with calories. Even a tablespoon of sesame oil is 120 cals. I’ve been using more and more oil as I march statelyly through my life. No more, I guess.
Energy drinks are really not that bad in terms of calories. Less than instant noodles. Of course, instant noodles fill you up. That is significant. And energy drinks are empty calories. I had an energy drink on the first day and got mad later ’cause I was hungry and had blown 1/10th (or so) of my calorie budget.
There’s more calories in one of my girlfriend’s so-healthy-they’re-gross green smoothies than there is in an energy drink. Yes, yes – “but they’ve got nutrients in them”. How many nutrients do you need? Am I in danger of scurvy? Are you?
Chips are … – no more chips. And when I say “chips” I mean the last bit of “fish and chips”.
Onions, broccoli – all vegetables except potatoes – are low-calorie.
Anyway, I’m having fun. Really. It’s nice to sort of manage your life. A bit like being a dictator, or an abusive spouse. The problem with being those things is people piss on your grave. But when your hated dictator dies … you’ll be dead, too!
I mean, of course, mundane, verynomagic ones (Vim joke).↩︎
0 notes
phoorn · 4 years ago
Text
An Announcement
I’ll announce my next story. I haven’t bothered to send the last one to anyone yet. Feeling a bit low. Should have written today: didn’t.
Programmed. Thought I should do something on my game before it got stale in my head. The last one got stale.
I suppose I don’t regret it, even though progress-wise I’ve gone backwards. The game works more poorly than it did. But it’s fine. More important right now than writing the game is understanding the very simple maths behind it. Doing that is just a matter of familiarity.
I was thinking but a moment ago: I don’t learn anything. Maybe no one does. Or maybe (likely) my definition of “learning” is wrong. I feel like I should actually understand what the fuck I’m doing while I’m doing it. But I don’t. I gain familiarity with things.
Take C variable declarations. They’re notoriously difficult to parse. And I can parse them. I’m written/read a million of them. But could I explain to you how I’m doing it? I can’t tell you what a preposition is, either.
I seem to be so incapable of drilling technical information into my head. What happens to me is Knowledge drips in while I’m not looking. Usually I’m asleep.
I guess what I’m complaining about is everything is so fucking hard. We’re not brainboxes, none of us. Experts look superhuman when they’re doing their thing. But they can’t instantly transfer that skill to other things. They built up the skill over ages. It’s fucking bullshit; it’s a joke.
But the game stuff – maths stuff – is dribbling in there. A vector? OK, I’ve got that. A unit vector – OK, I remember. A normal vector? Can’t remember. Length of a vector? - yeah; dot product, blah, blah. I have progressed. I’m not falling at the first hurdle any more.
Same goes with writing. Actually, I feel a lot more confident recently. I can really see each story being better than the last. That’s the bullshit I’m talking about. I’ve been at this for years. Any sane god would have preinstalled me with a mastery of all things.
I’d be writing novels with my left hand, drinking with my right. God, I’d be so rich. Surrounded by cats. I’d teach them to write. That would be a good use of my time.
The next story’s gonna be too long. It’s a murder mystery. Damn right. A magical murder mystery. That’s a little worrying. It’s not a fair mystery if the reader can’t guess who dunnit and how. It’s easy to make that impossible with magic.
The trick will be to properly introduce the magical idea and close off any others. Meaning: explain the “magic system” (I scare-quote that just cause the term makes me sick). Problem with explaining magic systems is it’s not proper magic any more, then, is it? Proper magic is inexplicable. Nothing wrong with explicable magic. Apart from it’s not fucking magical.
The important part of this rambling blog post is I’m writing the damn story. I came up with the whole thing yesterday, and it’s a good one. Tomorrow I’ll get the names and places and shit done. I like having as much of that ready as possible.
The most important part of the important part is the deadline. Tick tock. Tick tock. One week for the writing. That’s the sixth.
No. Let’s be fair about this. I started yesterday, not tomorrow. So the deadline’s next Thursday, the 4th, which I’d call tight. But I deserve everything I get.
Wait a minute. Let’s think about this, slowly, painfully. You can watch with me the neurons banging together like prehistoric man starting a fire.
I’m aiming for 7200 words. That’s ’cause Stephen Kings says someone else said 2nd draft = 1st draft - 10%. I’ve already told you how I believe the magical word count is 6473.
There’s two problems with this. 1) I can see that this is a +7200 word story; and 2) I never quite manage to shed 10%. The last story I shed about 1% and think I stripped half the meat from its bones in the process.
Maybe I will aim for 10,000. I think it’d be a sad story if I didn’t. Let’s just say it’s 10,000, then. I can write about 1,500 words a day, so 10,000 / 1,500 is 6.6. A week.
Well, what a terrible thing; looks like I get to finish on the sixth after all. Not quite a week: I won’t be working today.
This time I won’t stick the thing up on Gitlab. I removed the links from the previous posts, took the story down.
And I’ll keep writing here. I’ll talk about what I’ve been doing.
0 notes
phoorn · 4 years ago
Text
Done
And it only took me two months. Whatever. I’ll be faster next time. But am I really done?
I think so. I can still see things to improve, but I can also see how the improvements I would make would really just be sidements.
To be honest, going through it now, I’m not sure if I’m in love with it. It’s got good bits. I think, as usual, that in the process of editing I’ve stripped some of the meat from its bones.
As usual it lacks description. I do like description in novels. Never used to, didn’t care. But if the writer can paint – using not too many strokes – a good picture – well, that’s escapism, isn’t it? That’s another world.
I could improve this story, jam in … description? Or I could just go on to the next one. And that’s what I’m doing. It’s dumb to keep poring over a piece. I’m excited about the next one.
I wonder if I’ve learned anything from this one. Nah. There’s one bit left in the story I don’t like, that I think I’ve done badly. Often in the past I’d leave such bits in, in the hopes that my initial readers would tell me, no, it’s great.
That’s a poor strategy. Really, it’s just laziness. But I’m going to do it here. Just with that bit. Every other part has been tweaked until I consider it acceptable.
Well. Maybe I have learned something. As is usual with lessons, I already knew or suspected it. It’s this: you need to know where you’re going and preferably why.
There was at least one bit that was frankly garbage for some time. A bit where our guy goes to meet the mysterious creatures, sees his once-girlfriend. It was garbage because I had no little idea what these people were like. I’d come up with surface stuff – they stood around staring, in a hopefully creepy way. But I didn’t know why.
I did need, in the end, to know why. I sorted it out by just writing out the question and answering it. I wonder if I can find the note I made.
No, I seems. The closest is this:
What does Coco want from him? She wants to left alone, wants to enjoy her Universe in peace
And this:
“Sorry, it’s just you’re not looking at me.”
“Town?” she said, as if she’d never heard the word.
“You know, like a place people live? With … shops?”
“We live in the Universe.”
Point is, sometimes there’s things that aren’t working, and, yeah, if you directly write down the right question and try to answer it, you’ll find a solution, probably within seconds.
I’m gonna take the thing off Gitlab now. A funny feeling. I write on Linux, use free software tools all the time, so I feel like everything I do should be open, too. And yet, here I’m taking the thing down so I can sell it.
Well, nobody else worries about this. Software is meant to be free (so say some, including me), but this is a story. There’s no “source” people can benefit from. Actually, that’s not true, is it? I stuck the story in a git repo because I thought, arrogantly, that some people might be able to learn from it, the decisions I made.
A half-lie, that. I did it to encourage myself to finish the thing. And I’ve done that.
I started to worry a couple of weeks ago about what I’d done. You’re not meant to submit to publications stories that have already been up on the Internet. I think I’ve read some say that it’s fine if it’s been on a blog or something. But I can’t remember the details.
Regardless, it looks like I’ll get away with it. I’ve checked archive.org and they don’t seem to have hoovered up my git repo. As expected, and a relief.
Fuck, am I going to have cut the link out of all of my posts? I guess so.
And later on, it might return. Certainly if no one picks up this story I’ll stick it back up. I like that sort of thing.
Will anyone enjoy this story? Is it a good story? I really can’t tell you. I can tell you much of it is written pretty well. There’s some good bits and no bad bits. Storytelling-wise it might be weak. It might be a bit of an “eh” story.
I think my next story’s gonna have a premise with a lot more intrinsic drive. I mean it’s gonna be about a murder, or a kidnapping or a war or an assassination. Something to do with life and death, something not too abstract. Something that’s like a rocket up one’s arse. Something that’s unmistakably dramatic. Something no one can deny is a gripping story.
Murders, revenge, etc – these are all good for grabbing you. My girlfriend watches K-Dramas and spends all day shouting at the screen. It’s ’cause some bastard’s poisoned the King, but they think it was our hero that did it, so they’re torturing him, and he knows he didn’t do it, but he doesn’t say anything because he’s protecting Lee Min Ho.
Of course, all of that you can’t do in a short story. I don’t even know if I could write that in a novel, and that worries me. I think I think I’m too good for melodrama, would consider myself a cheesemonger if I wrote it. But you can’t deny it grabs you by the balls and kisses you forcefully on the mouth.
More worries? Well, these are the usual worries, aren’t they? What if I’m not good enough?
That’s why I’m on to the next one. The thing that’ll make me good enough is practice. But I know I’ve got a long way to go.
I want to do twelve stories this year. I guess this counts as this month’s – we’ll ignore that I started it in December. Nothing gets done over the Chistmas period.
Importantly I’m excited about writing again. I want to write lots of stories, just overdose on them. Travel, you know, through worlds. Create them, I guess. But I don’t think you create stories. You punch holes into universes.
0 notes
phoorn · 4 years ago
Text
Doing two things at once
One thing I’ve always struggled with is, frankly, being a lazy fucker. But, being kinder to myself, let’s say it’s time-management.
I’d love to be a multitasking operating system. Doing a bit of this, then a bit of that, the other. My mother always says she’s always doing fifty things at once.
This is true, though some good Starcraft players like to point out nobody ever does even two things at once. You can’t actually macro and move your army at the same time. It just looks like it when you’re doing it really fast. Same with multitasking operating systems, putting aside threads.
That’s neither here nor there, really; it’s just something I’ve been thinking about. What I’m saying is when I work, I work and when I fuck about I fuck about. Two modes, nothing in between.
I try to be more like my mother. Her house is always clean. Always. I never really thought about it. There’s no socks on the floor. Plates are stuck in the sink, then washed, perhaps immediately, perhaps after soaking.
Cleaning’s an algorithm. Like Bubble Sort. Or, at least it is how I – and I think she – does it. Plates found in the living room go into the sink. Stuff found in the sink gets washed, put on the drying rack. Stuff on the drying rack gets put in the cupboard.
I swear, this is the kind of shit I think about. And yet, my house is untidy. That’s because of my laziness.
So, that’s how I try to approach cleaning. I’ve been doing pretty well. I say “cleaning’s an algorithm” – that’s how I put it, sitting here staring at a fullscreen Vim, having made a directory with mkdir. Mother just says you should do things bit by bit.
It’s good for your brain, too. It’s nice to KEEP ON TOP OF THINGS. The alternative, by the way, is drowning.
Anyway, these musings are me working up to an explanation for why my story’s not finished. Actually, it’s 8 hours from completion. But I’ve had editing jobs this week. One of them’s going to pay a lot – not a normal scenario for me. So I’ve been waiting for them to come to me.
I have ever since about fifteen had problems with sleeping. My mother did, too, till she was about sixty, ie, past the menopause (“the best thing that ever happened to me”). I can’t sleep when I’m expecting something. I don’t mean worrying. I’m not usually worried – at least, not anxious; not even, really, thinking about the thing.
But I can’t sleep.
I’m saying if I’m waiting, I’m waiting. That’s the state. It’s like this C code:
switch (state) { case STATE_EXPECTING: while (job_not_here) for (int i = 0; i < get_episode_rating (); i++) detective_conan (); break; case STATE_WORKING: { int work_secs_left = 8 * SECS_IN_HOUR; enum something_elses { TOILET, DISHES, HOOVER, N_SOMETHING_ELSES, }; while (secs_left > 0) { secs -= work (1 * SECS_IN_HOUR); secs -= do_something_else (random % N_SOMETHING_ELSES); break } } };
Probably there’s a bug there.
So, I am working. But I should have finished my story. I was meant to get my piece to edit yesterday but didn’t. Since I knew I wouldn’t get it early on I could have finished my story. Instead I wrote a Syntastic checker plugin for Csound.
0 notes
phoorn · 4 years ago
Text
Level 5 procrastinating
“What the fuck am I doing,” I thought today, eight hours into writing my latest script to help me write.
It does boggle my mind, when I catch myself doing it. I can’t believe it, can’t believe I’ve done it again.
Well, I’ll tell you about the script, will I?
It shows you too-closely-repeated words. Eg:
I can’t believe it, can’t believe I’ve done it again.
It’d tell me that “can’t” is repeated there. The question is, is that a can’t that can’t be there? I did it for effect, so probably it’s OK. How would I rephrase it, though?
I can’t believe it, that I’ve done it again.
I don’t like that.
I can’t believe that I’ve done it again.
Truthfully, that whole paragraph could be improved.
I did do a couple of hours on the story. Really it was me testing out the program. There’s no point writing the thing if I don’t use it. Though, I’ve written many programs and never used them, even the ones that were meant to be useful.
It definitely did find a few repetitions that were unintentional. It surprised me and I’m happy. You can’t see your flaws, normally. Not the ones you can’t see. I know I’ve got flaws in my writing technique. But I don’t know what they are.
Would I have not noticed these repetitions if I didn’t have this program? I suppose the way to test that is find a finishedish story, run the program on that. But I don’t have them – I don’t finish stories properly, even -ish.
I think, truthfully, I would have noticed. And if I’d spent today simply poring over the story I would, right now, have a better story.
HOWEVER. I do think it’d catch a couple. I want in the future to have a bunch of these scripts and to run them all at the end of editing, to catch small things I missed. Like a robotic editor.
Course, I could instead use Grammarly. I’m too proud for that.
The program is on Gitlab. It’s called ctw. Don’t ask me what that means. I’ve already forgotten and feel perversely proud.
Oh yeah
Yesterday I wrote a zsh version of that script I wrote, the one that counted up chapters.
arg=$1 if [[ -z $arg ]]; then echo "usage: $0 file"; exit; fi mkdir /tmp/this cd /tmp/this csplit $arg '/^##/' '{*}' >& /dev/null i=0 for file in xx*; do line=$(head -n1 $file) if [[ $i != 0 ]]; then echo $i: \"$(head -n1 $file)\" $(wc -w $file | fields -f0) fi i=$(($i + 1)) done
It’s about the same length, though no doubt an experienced shell programmer could manage it in about one line. I might try to see how short I can get it.
It chops up the file using csplit, a program I haven’t used before. A program that, when used with cut, mostly invalidates a program I wrote, that I use here, fields. fields is an arguably better cut – it can split on strings, not just chars. And I was proud that I’d thought to put in a --whole option, which makes it operate on whole files, not just lines. But that’s just what csplit does.
But that’s the life of a programmer. There’s nothing new under the sun.
This zsh script is also better than my C one, because it also outputs the chapter name. That’d be annoying to put in my C program. I’d have to modify the split lib to optionally include the delimiter. Maybe I’ll do that.
0 notes
phoorn · 4 years ago
Text
A real programmer
They say a real programmer is lazy. They hate doing things so much they spend weeks writing tools that will save them minutes. Of course, sometimes they write tools that will save lots of people centuries.
What I’m getting at is I wrote a script today. It tells you the word count of each chapter in your story.
I say “chapter”, but really I mean –
What do you call it, when you, you know:
“Blah, blah, blah”, said Percy.
Little he know, the fool, that that blah was the last blah he would every blah.
On the following Tuesday I packed up my jimjams and set out into the Wild.
You don’t call that a chapter. I’ll die before I call it a scene (I’m not a director, and I don’t secretly wish I was one).
Well, anyway, my script counts up those. I wrote it in C. Would you like to C?
#include <err.h> #include "../wc/wc.h" #include "../cat/cat.h" #include "../split/split.h" int main (int argc, char **argv) { if (argc < 2) errx (1, "usage: %s file", *argv); char *buf; int ret = cat_paths_into_buf (&buf, (const char *[]) {argv[1]}, 1, 0); size_t n_bufs; char **bufs = split (buf, strchr (buf, '\0'), (char *[]) {"##"}, 1, &n_bufs, 1); struct wc wc; each (buf, &bufs[1], n_bufs - 1) { wc = wc_str (*buf); printf ("%zu: %zu\n", buf - bufs + 1 - 1, wc.words); } }
I’ll tell you some interesting things about this program.
1!!!!!!!!!!!!!!!!!!!!!!! (each)
I like to use a macro to loop over arrays. In C, traditionally you do
for (int i = 0; i < /\* eg \*/ 100; i++) { /\* eg \*/ printf ("%d\n", the_thing[i]) }; }
And I think that’s more universally useful. I think if you were going to have just one kind of for loop, that would be it. But I like the other kind, the kind you get in Bash and no doubt Python and all the rest: “for THING in THINGS”.
The each macro lets me do that. Actually I can do that without a macro, and did for a long time.
for (struct thing *thing = things; thing < things + n_things; thing++) { (*thing).whatever = "joy"; }
But that’s pretty painful to write because it makes your eyes bleed.
2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I include the header files “wc.h”, “cat.h” and “split.h”. These are libs I’ve written. split.h is straightforward: split a string. cat and wc, though, might be interesting to talk about.
C’s a bad language to write little scripts like this in, or so, I feel, people believe. But I say screw you.
What makes C bad as scripting language is the standard library. It doesn’t have convenient functions. As an example there no function simply split a string. There’s strtok. It’s not really the same. There’s no join, launch_emacs, no nothin. There’s actually no dynamic array struct-plus-function. Maybe because no one would agree on the best way to do it?
The program I pasted: would it really be that much shorter in Python? I say NO! Not that much shorter. Not when you have libs like wc, cat. But you have to write those yourself.
You can use big general-purpose libraries like glib and maybe one day I will. I’ve never liked the idea of linking to such a big binary just to write programs like the one I. But I think that’s empty prejudice. Most scripts you write yourself in Bash are personal. I mean, they run on your machine, and glib (or whatever) is on your machine.
My wc and cat libs are based, you’ll know if you’re in the know, on Unix commands: wc (wordcount) and cat (concatenate – it reads in files, outputs them to the screen).
I’ve thought for a long time I’d love to see GNU’s Coreutils designed as C libraries. The commands would be frontends for those libraries. Because, like I say, the pain in C isn’t the language, it’s the low-level nature of its standard library.
Even other libraries are obnoxiously low-level. There’s a commonly-used library, PCRE (Perl-Compatible Regular Expressions). It’s very clever, well made, has loads of functions.
But it doesn’t have a “match” function! I swear, I’ve looked. There’s no function you can call to just figure out if a bit of text matches a pattern. Instead you’re expected to compile a regex, then execute it, checking for errors along the way. It about six lines for something that in in other languages is simply “==” or “=~”.
So, of course, the first thing you do when faced with that is wrap it in your own function, regmatch and forget about all the rest.
What else do I have to complain about?
Nothing. What a disgrace.
That was a pretty incoherent blog post, but I’ve overdone it on the coffee / energy drinks and have a headache.
Oh
I suppose I should say something about the story. I’ll tell you I’ve come up with a name: The Long, Thin Tail of God. I’ll also spurt out here the names I considered. Fast content, ker-splat, paste it in.
Home
Lonely
Marrowbone War
Burane Massacre
Big Rock on a Beach
Big House on the Hill
The Whore of Black Lake
To Jump on My Bed
Jumping At Every Sound
An Archaeologist
A Spy
It Wasn’t Sheer Bliss
Ice-cold home
As If I Was A Stranger
Xunotic
Xunophillia
Xunophobia
Because You’re not worthy, Soraen
Right in the Centre of Town
Yes, I Would Have Said
Keep the Fire Burning
Eternal Flame
What a Lot of Work it Must Take
The Burané Massacre.
The Ape-People
The Monkey God
The Strange Tale of the Long, Thin Tail
The Long, Thin tail – that’s a nice pun.
The Long, Thin Tail of God
I went with the Tail one for a very practical reason: the story is, in the end, about this monkey god, Xu. And there’s bugger all about him in story until near the end. I kind of liked that. I like stories that surprise me. I don’t have strong opinions about how stories should be.
But I know if I don’t drop heavy hints about the God before he’s mentioned at the end, people will say, “Huh? Where did he come from?”
He came from your mama! Now shut up and just enjoy the damn story!
0 notes
phoorn · 4 years ago
Text
Christmas lights in the middle of august
grudges come back to haunt us
You go on the Internet, find yourself on someone’s blog. Sometimes they say “Over the next three years I will thoroughly deconstruct the internals of the panda reproductive system.” They don’t do it, don’t make it. Their blog just lies there, cut off like a disemhanded arm. They got bored. They didn’t get enough out of it.
It always seems so tragic. And maybe they were saying something interesting, about pandas or whatever. Maybe they got a job. Good for them.
I have not hit my goal. Recall I said I’d finish my story before two weeks were up, something like that? Well, a month later I’m not done, not done with the story and not done with the story, ie not giving up. I’m standing tall, glaring at the sun.
You’ve got to stand tall, pick yourself up. I came up with a new metaphor for life recently. I’m always doing that. This one is this: you’re driving a car down a straight road. Most of the time you don’t need to touch the wheel, but you do veer off, a little to the left, a little to the right. Sometimes another car bursts out of the trees, crashes with a great explosion in front of yours. Sometimes it’s just a cat, and you screech to a halt.
I’m always screeching to a halt. I’m mildly addicted to painkillers. I don’t like doing anything if I don’t have them. I ran out, and then it was Christmas, and I ate a lot.
I put the Christmas decorations away yesterday, cleaned up. When I’m getting read to be a real proper person I always go through this ritual, detailed here.
Decide it’s time to get back to work.
Start cleaning up the house – a clean house, a clean mind, they say, and it’s TRUE.
Start helpfully helping out my girlfriend. This means I don’t have to help myself.
Sit down at the computer, knowing it’s time to work, the time is now. I don’t. I program, or something, proud that I made it to the computer, confident that tomorrow I really will work.
Sit down at the computer, knowing I won’t, and that this is the first day of real procrastinating. But I allow myself allowed to. I’ve been here before. I’ll get to it.
Which beings me to today. The Day. But, no, I’ve figured out another trick, and that is to declare to you, the People of the Ether, my intentions. They’re the same as my intentions of a month ago: one week, one finished story.
This time I’m editing, not writing. I hate/love editing. I quite like editing other people’s shit, now, so long as it’s not utter garbage. But editing my own shit is different. Only because it’s mine, it’s my name on it. I care more.
Something something something, your own worst enemy
Today’s 2021-01-05, the 5th of January. Eight days from now is Wednesday. Why give myself eight days? Didn’t I give myself seven days last time.
Yes, I’m not working today. Fuck off, it’s cold, there’s no heating. Though now that I think about, why’s there no heating? We’ve got a smart meter. The gas / electric company was very keen we get one. I can see why – my girlfriend’s told me she’s spent £120 in a couple of months. Before the smart meter we’d go weeks without buying gas, presumably out of sheer laziness.
So, let’s get the heating on. And then, what, I’m out of excuses. You’re saying I should work. I suppose I could. I mean, I don’t know what I’m going to do today otherwise.
OK, OK, I’ll tell you what. I will work. I will work, now I’ve remembered my first day redrafting usually just consists of reading the thing, making notes and making sure the names and shit are right. That’s not even a bit deal.
Yeah, yeah, ease yourself into it. It is the way to do everything. Bit by bit, divide and conquer, toe first into a still, still pool
0 notes
phoorn · 5 years ago
Text
As good as my word
I’m done. I said I’d do it in a week and I did it. I mucked about two days, had to rush in the end. But that hardly matters.
I benefitted from a bad mathematical brain, I think. Yesterday I thought my deadline was that day. So I bashed out about 3,000 words. That’s the most words I’ve written in one day in years. They were half-decent words, too.
In contrast, today’s been half-assed. I’ve got to the end, but what I’ve got is sketchy. A little undercooked.
I’m often not sure how to end my stories. I often try to do something subtle, because can feel there’s something big behind my (short) story. But I often can’t bring it to light. I’d be better off cutting, simplifying. And, perhaps I will, here.
Thinking about the story now, I think this might be my best yet once it’s done. It’s come from a good idea, it moves along.
It shares a flaw with, I swear, all of my stories, which is it’s … subtle. What I mean is it might be a loose bunch of ideas barely hanging together as a story.
Doesn’t matter. Doesn’t matter. What matters is what I’m going to do next.
And that’s pledge to have the thing edited and done by this time next week. It’s evening, so let’s give myself until the 25th.
I’ve stuck epub and html versions of version 1 into build/v1.
0 notes
phoorn · 5 years ago
Text
Writing, Markdown and Ctags
Writing’s too hard
For a long time I’ve tried to make writing stories more like programming. Programmers have all sorts of tools.
A compiler’s a tool, not just because it compiles the program for but because it finds mistakes for you. Mistakes like You Didn’t Initialise this Variable and That Function Doesn’t Exist.
What’s the writer’s equivalent? I suppose a spell- or grammar-check. But there’s nothing that will make sure your story doesn’t have plot holes. You have to – why does it hurt so much? – use your brain.
Programmers also have lots of ways to get to places in their projects quickly. One tool that does this is Ctags.
Ctags
Ctags is a program that makes a sort of database of your code. Editors like Vim use it to let you jump directly to functions, data structures, etc. It’s really, really, really fucking useful.
Here’s an attempt at a demonstration. Say you’ve written a program with one function in it, called do_the_thing. If you run Ctags on that file, Ctags will write a tag file that your editor can read so it knows where that function is. So in Vim, for example, you could type “:tj do_the_thing” and bam, Vim will take you there. You could also (in Vim) put your cursor somewhere that function is written and press ctrl + ]. Bam. Like:
Your cursor ↓ do_the_thing ();
Bam.
So I wanted Ctags for writing. But it didn’t work on Markdown, and nobody seemed to care!!!! No fucker, it seemed, shared my longing. I even tried to write my own program to do it. A few times actually. I failed.
Well, now Ctags works with Markdown. Universal Ctags, that is. The version I was using (that’s still default in most Linux distros) is Exuberant Ctags. Universal is a newer fork.
So now I write all of my notes in Markdown. Here’s an example:
# Soraen # Soraen Tororo # our guy ## Personality Blunt but charming Business-minded and has fucked someone over in the past Soft-hearted A hoe ## From Another town, not far That's why he's got no parents ## History He left his town because his parents are ice-cold He got at job at a jeweler's, dicked over the guy when he was old and took over the shop ## Looks Good-looking, blonde ## Age Forty
In Markdown, you define headings with #. You add more #s to the # to increase the heading level.
You’ll see I’ve made three top-level headings, “Soraen”, “Soraen Tororo” and “our guy”. If you were to compile this to HTML or epub (which is what you do with Markdown) you’d have three headings one after the other and it’d look silly. I suppose I’m using them sort of as tags. I want to be able to get to Soraen by typing any of these things.
In fact, the file I’ve pasted here isn’t really valid Markdown. The indented stuff would be interpreted as a block quote, I think. But it hardly matters. I’m not going to compile it to HTML.
0 notes
phoorn · 5 years ago
Text
6473 Words
Crap
Wow, I just lost this entry. That’s something I’ve not done in about five years. It was fucking gold, too. Let’s reheat it, see how it tastes. They eat gold, you know, rich people, with beef. Disgusting behaviour, isn’t it?
Basically
What I was saying was the story’s not going to be ~5,000 words. It’s going to be longer and that sucks.
So I thought I’d go look again Beneath Ceaseless Skies’ submission guidelines. Where did I get this 5,000 words number from, you know? All they say is they’re looking for < 15,000 words. They say if you’ve gone over you better have a good reason.
So what’s the average Beneath Ceaseless Skies story length? I found out.
I already had all of their stories ripped from their website. I’m not sure if that’s naughty or not. I did it by scraping the website with wget, formatting the html in text with w3m and chopping the non-story bits with a Vim script.
I’m really proud. And I’m proud of what I did now:
cd ~/blah/beneath-ceaseless-skies-stories for f in */*.txt; do wc -l $f >> /tmp/beneath-ceaseless-skies-wordcounts.txt done | sort -n total_words=0; n_lines=$(wc -l /tmp/beneath-ceaseless-skies-wordcounts.txt | cut -d' ' -f1); for num in $(cut -d' ' -f1 < /tmp/beneath-ceaseless-skies-wordcounts.txt ); do total_words=$(( $total_words + $num )); done; echo $(( $total_words / $n_lines ));
Cool, huh? I won’t explain what it does. Have you ever tried to explain what anything does? It’s hard. It’s much harder than making up stories.
I mean, it gets the average. And by average I mean mean. The sum of the array divided by the number of elements in the array.
Anyway, the answer is 6473 words. A comforting answer. 6473 is a big enough space to tell a story in and not so big your trousers fall down.
That sentence was wittier the first time around.
What else did I say? I gave more of a justification for having ripped Beneath Ceaseless Skies’s stories. I mean, it’s LEGAL. Right? Yeah, yeah, yeah. It might become illegal if I distributed it. Of course, it is naughty. They’d like me to look at their ads. But I use adblock! So what am I saying?
I guess that I’ve done nothing wrong and in fact might have made the world a better place. Certainly I’ve benefitted myself. What power! 6473 words.
0 notes
phoorn · 5 years ago
Text
Day Two
Note about formatting
I’m not formatting stuff right in these posts, using code tags instead of, I guess, block quote tags? The colouring is wrong, anyway. Tumblr thinks it’s looking at code.
I also noticed that Tumblr ignored code tags entirely when showing you posts in your feed. I guess there’s nothing I can do about that.
Report
A decent success. The story’s got something. Let’s hope nobody realises I wrote it around the time series four of Attack on Titan came out.
It’s the weird-things-are-happening type of story. I like that type. I don’t think I’ve written one, though.
I think I’ve got it all planned out, nothing missing. I’ve made sure to decide exactly why the weird things are happening.
I don’t plan to tell the reader, though. I’m going to drop hints. And I feel confident it’s going to work out. Obviously I’m saying I’m confident because I’m actually nervous – sometimes people get to the end of my stories and say, “It’s great! I can’t wait to read the rest!”
They don’t notice my heart shrivelling up and dying within me.
No, it’ll be clear enough that the monkey god is responsible. There’ll be unanswered questions, though, and I hope people won’t flame me for it.
The thing is I like unanswered questions. I don’t give a shit about explanations. You lose something with explanations. Take Donnie Darko, for example.
That was a great film, of the weird-things-are-happening type. I bought the Director’s Cut DVD and watched its director’s commentary. It had Kevin Smith on it, quizzing the director about his changes, about what the hell the story was all about.
Well, it turned out the story was about an AI or something in the future looking back at Donnie and trying to fix some cosmic thing that had gone wrong. It was a fine reason for what was going on. But it was better without it.
The more you put into a story the more you narrow what it is. That’s why the best part of a lot of stories is the beginning. And the worst part us nearly always the end. Oh, there are great endings. But who cares. I tend to tap out in books about 20% from the end, the bad guy still not defeated. If it’s a part of a series I get excited for the next one.
Doing something different.
I’m doing something different. I’m merging the planning and the writing stage. Normally what I do is write a synopsis, put it aside, write the story. I don’t like it, don’t like planning. It feels like I’m repeating work. And I never look at the synopsis while I’m writing anyway.
This synopsis is the story, a very abbreviated version. It’s written in rough prose. Normally my synopses look like this.
Our guy goes to the place Meets whatsherface. She eats him. "Why?" he said. "Duh," she said. Mention that the elephant at the cheese.
NOTE: My main character is always “our guy” or “our girl”, even if she/he’s 500 years old.
This one’s written in sort-of prose. An excerpt:
2 I didn't search more that day. I was stunned. It was _her_. She wasn't _human_. Other people started going missing. After a few are gone they find them They're in a group and they disappear like smoke when people find them But then more and more 3 Now it was just me I could see them out there, their campfires, small groups, just sitting there
Right?
The plan is to inflate this like a bicycle tire.
I know other writers work like this. Terry Pratchett called his first drafts Draft 0. He said it was about 1/3 of the final book. I think you can see what his Draft 0s looked like if you look at the last third of his final – unfinished – book, The Shepherd’s Crown.
I think Brandon Sanderson works kind of like this, too. He’s got a Youtube channel. You should go subscribe. He gives a lot of useful advice.
If you want to look at the synopsis, it’s synopsis.txt in the repo. I’ll leave it there.
5,000 words
I’m determined to keep this story within 5,000 words. I find keeping stories short really hard to do these days. It pisses me off.
You might say, what a great problem to have. But it’s not. Firstly, short story magazines don’t want long short stories from new writers. I mean, they’ll take it if it’s incredible. But I don’t know if this is going to be incredible.
Secondly, my stories are getting long because I’m being indulgent. Short stories are not novels. I’m not capable, I think, of writing novels, so I have to be sensible about it. What I’d like to be next year is someone who’s published, let’s say, three short stories. I don’t want to be someone whose published no nothing.
You level up in writing by finishing stories. It’s like an RPG. You don’t get XP if you die.
And it’s a matter of principle. I used to pride myself on my ability to write short stories. I thought I’d really cracked it. I need to show myself I can still do it.
The last reason I have for wanting to keep the story short is I think letting stories sprawl is a sign of WEAKNESS. I think they sprawl because you’re frightened to solve a problem. It’s easier to defer than do.
Situation: your hero has made it to the Chamber of Death. He needs to get the Thing of Beauty. But he can’t because you had a thief steal it 3,000 words ago. OK then, you say, and have your hero not steal the Thing.
You have to send him off to the thief’s house, beat him up, when you really should have just had the thief not steal the thing, or had him steal the wrong thing, or had him have stolen the thing ages ago and has now put it back.
Stories are annoying puzzles, the kind where you have to fit shapes into a small box. I’m saying you should do the work, solve the actual puzzle rather than make the box bigger.
ALSO. There’s something to be said about cramming big things into small spaces.
0 notes
phoorn · 5 years ago
Text
SWORD
I'm a writer, a cliche. When I was young writing was easy. Now it's hard. How?
Well, you get scared, don't you? And too ambitious. Your mouth's bigger than your stomach, your arms are puny.
And you're not at school any more. That's the tricky part. There's no Sword of Damocles hanging over your head. You need one, or you sit around wasting your one and only life. It's insane, but that's how it is.
So let me organise one. I, **** ***** do pledge to have written this new story I've come up with before seven days have passed. It's 10 Dec right now, so let's say I get it done by the end of 17 Dec, next Thursday.
I'll say a bit more about my situation. I've been published -- a small publisher, the book sank. I mean, I think people bought it. But I never saw any of the money. I'm not sure to this day if I got scammed.
That was quite some time ago. I was contracted to write a follow-up, but terrible things happened, I went mad, I had no idea what I was doing, I slinked away into the shadows. As I say, I'm not sure to this day if I got scammed. I'm also not sure if scammed my publisher. I've kept my head down since.
It's been quite some time since then. What have I done? Well, not much, right? I did nothing for many years. In the past couple of years I've done some writing, finished one story, nearly finished a bunch of others. I mean, I've always got to the end of the first draft. I've retired from the race every time somewhere about the middle of the second.
Some of these stories are ... not bad. The truth is, though, they're not amazing. They're not what someone of my ego would expect from someone who was published for the first time as early as I was.
I HAVE BEEN HUMBLED. God knows I needed it. You're not as good as you think you are. Someone on Youtube a while ago said something like the tricky thing is we think we're great because we know we have great taste. We read books and go, "I'd do that part better." "I hate how she does this. God, is she stupid?"
It's like watching streamers on Twitch. They are in fact better than their audience, but their audience goes, "Why did he get supply-blocked there?" It's cause he was doing a bunch of things you don't have the eye to notice, and he's 2000 MMR higher than you, shut up.
But I am getting better. I can see improvement in all these stories. Each one is mostly better than the last. Sometimes the ideas are worse, but they're still better-executed.
I just need to do more. I'm not young. It's a bit scary, to have considered yourself a writer all your life but not to have really practiced.
So that's that; there's my pledge. I'm gonna post a diary entry every day, too. Short. I won't go on and on. I like talking, you know. I like writing. But I have no writer friends to talk to. I don't think you need them. Talking does help, though. Some of my best story ideas come from my talking to myself, explaining to imaginary journalists how I made my millions.
I'm putting the source on Gitlab. If you know about Git, you'll know you'll be able to go look at all of the different revisions. You might find it fun. I've thought about streaming on Twitch, too, so you can watch every word, every hesitaiton. But thinking about it today made me nervous, so, no, I won't bother.
This secret blog is about enough for me. It's public, but not really, cause it's unknown. Pretty perfect.
Here follows the first day of notes. They actually written in my diary. I won't post notes like this again. It'll all be in the repo.
I should also say I don't plan to be very comprehensible here. I don't plan to be a blogger, though right now in the throws of enthusiasm it seems to me doing this (pledge, blog) for every story is a very intelligent thing to do. But it's a means to an end. The end, by the way, is riches, fame, an editor. I'd give my right arm for an editor.
FIRST DAY
2020-12-10T06:26:36+00:00
I'm not going back to mogen. No. One day I will. Let's do something new. Yes. 5,000 words for real. I've had plenty of ideas. As usual I'm influenced by things I've been reading.
Something I've always loved is spies. Really I mean "darkfriends". In the Wheel of Time, there's darkfriends -- they follow Shai'tan. Anyone could be one. It was the thing that made WoT really good. A Song of Ice and Fire has the same thing -- people aren't "darkfriends", but they can betray you. There's always danger.
Though in a short story I don't think I can do that. I could write a story about a guy who's found a spy. Or a guy who's a spy himself. Though that would involve coming up with a palace/court. But I wouldn't have to go into detail. Do I have one already? Not really.
There's also the shogun's wife idea. A story about a shogun's wife trying to keep him occupied, save him / the country in some way.
Since it's a short story it could be about her trying to get his mistress back. She's leaving because he's unstable. But the wife needs her back because she keeps him stable.
A story about a spy who needs to get some papers for his country. That'd need a few more thousand words to be worth it.
A dangerous world. That's another idea I've been having. I've written it down. Worlds with danger -- monsters, weather -- in them are the best. Middle Earth is dangerous. Randland (WoT's world) is dangerous (because of darkfriends). The Shadow of the Echo of All That is Lost's (James Islington's trilogy, not its real name) world is dangerous -- it's full of ancient, dangerous powers.
Another idea I've been having is about a magic that's only "items". Only objects of power, no power that a person can themselves wield. But I've always liked that, fuck knows why.
A story about a magic artefact. That sums up 90% of fantasy.
A fun story about a fun girl.
Which of these do I want to write? I'll look briefly through my story ideas first.
OK, something important: I've made a note to write a story about a character that wants something, needs something else and cant have either. This is how Brandon Sanderson writes. I will make sure to do that.
Another pertinent note: it says to think of the "perfect" world, thinking of all the books, games and films I've read/played/watched.
Middle Earth: loneliness, emptiness. Xenoblade Chronicles: a world on a God's body. Final Fantasy VII: Midgar, black pipes. Final Fantasy VI: cold waste, mechs. The Shadow of the Whatever: an ancient place filled with dormant, dangerous things. WoT: the atmosphere of the first and second novels. The world isn't amazing, come to think about it.
CJ Cherryh's Alliance Universe: it's sci-fi, but there's a lovely tenuous feel. Everyone's vulnerable going through space, everyone's weak.
OK, let's think about that. There's a new season of Attack of Titan. That's got an incredible premise. I could do something similar.
Rather than huge monsters, let's have small beautiful people. Who are kind and intelligent. That's scary because you're the bad guy.
You're an ancient monster. You're perverted, you love fear and pain. Or maybe you're a human. And perverted -- actually perverted but also basically normal. But the "monsters" are these beautiful creatures. They're elven. And they have no respect for you. They'll lock you up or kill you if they find you.
You WANT: To be accepted You want to be one of them You've found a magic spell that can make you into one of them To escape To kill them all, start the human rebellion To escape with A magic artifact Something that could kill them all A weapon that could be used to wage war A portal or ship that could take you to the moon Your mother sister girlfriend father The monsters are: Humans that changed themselves Using a spell They gave themselves magic powers They look just like you, so you can't tell who's who at a glance You can tell pretty quickly, though
It seems ... OK. What the opposite of perfect monsters? Imperfect humans. Maybe it's our guy who is perfect. No, I wouldn't know how to write that.
Let's just try out a lot of these wants and needs.
He WANTS: To be accepted. He NEEDS: To live happily, discrimination-free?
So, he wants to be one of them, but needs to just be accepted. That's fine.
How does he go about getting what he wants? How do you become someone else? He could use the same magic spell they did. He could use a different one. They somehow do it the real way, he the fake way. A bit like Gattaca.
Let's make the community small. It's not a world, just a village. An interesting village, and this will have something to do with what changed the rest of them.
Well, first, how about people start disappearing and appearing outside? It's a bit Attack on Titan. And not that original. Really cool, though.
But that wouldn't come into it. That would have already happened. And maybe wouldn't be explained. So, they became the superior humans by this mysterious mechanism. He's trying to fake it.
They all left and seemed to become really happy/intelligent/healthy. But they won't come back into the city.
They keep disappearing. Are they being taken? I think yes. Finally our guy is the only one left in the town. And he leaves, tries to become one of them.
They look different. They're covered in hair. So he shaves all the dogs and cats in the city, covers himself in their hair and leaves.
He finds a small camp of them. They don't accept him.
Or they do, though they know he's not one of them. I mean, they don't care. Or maybe they do. Maybe whenever he gets close they leave. Or maybe they just accept him. Do what you want, they say. They don't run away. But they don't really talk to him.
If they run away, that'd be cool. Nasty. Lonely for him. If not, you'd be able to see what they say. Maybe it's only when he covers himself in fur they let him stay. But they know he's not one of them.
He'd need to figure out what happened to them. In the end he doesn't do it in time and they all leave.
Or maybe he does figure it out and they leave. He just doesn't get something.
So what is it?
A drug A book A religion A small sphere They keep going to the sphere, standing around, then leaving When he finds it, he stands around He doesn't feel anything, but he changes to look like them The next time he sees them, they're walking -- not as a group He follows, tries to talk to them and they don't say anything. A minstrel
That's a nice mystery. It's got a nice feel to it. Btw I just took a small detour -- 2020-12-10T08:17:37+00:00 -- to make rsn's random number not be based on the time.
Randomness in programs. You start by "seeding" a random number generator. The classic way to do this is "srand (time (NULL))". srand takes an integer. time (NULL) returns the current second (since the start of Unix time).
The problem with with this approach is if you run the program more than once in a second you get the same result. Because the seed is the same.
Now I'm reading from /dev/random:
int fd = open ("/dev/random", 0); int seed; if (fd != -1) { ssize_t ret = read (fd, &seed, sizeof seed); if (ret != sizeof seed) { /* warn ("Couldn't read from /dev/random: using time (NULL) instead"); */ seed = time (NULL); } } else seed = time (NULL); srandom (seed); if (fd != -1 && close (fd)) err (1, "Couldn't close /dev/random");
You will see it defaults to time (NULL) if for some reason /dev/random can't be opened.
/dev/random is a psuedo device. Linux "collects" entropy over time and sticks it in a kind of pool. I have no idea how that works. But you can read random numbers from /dev/random.
Back to the story. It's a nice mystery, one of those what's-going-on stories. Do I explain what's going on? Stephen King says that stories that don't show the monster are cheating. But when you do show the monster you lose something.
Let's just come up with a half-explanation. Like a book, drug or sphere. But say nothing else.
Maybe instead of them leaving they go back to the village and don't let him back in. "Get the fuck out! And stay out!" Or they just acts as if nothing's happened.
Maybe it's him that's put them out there. Magic.
How could he be responsible? It'd be hard for it to be him, if they're supposed to be content.
Maybe they're experiencing something more. They're actually logged into the magical multiverse net.
Maybe he spoils it in some way. And they don't get to ascend.
The important thing is what's the thing that's brought them out there.
It's got to be something weird or incredible. Let's favour weird. Let's get some random sentences:
Its a garbed jollified Its a refractable corrugate Its a remindful hiccupping Its a backboneless chum Its a upland erase Its a cacuminal compart Its a accented bishoping Its a emendatory deceive Its a isoperimetrical reground Its a agrostological appear Its a urticant hinnied Its a reunionistic presses Its a homodont barber Its a unscrupulous cellars Its a psychic harp Its a Laodicean prevaricate Its a clipped hurries Its a quartic worst Its a stimulant eulogised Its a tangiest processes Its a numerable dosing Its a cornered totalizes Its a raggle-taggle focussed Its a sacrificial dissuade Its a synoicous enable Its a kingly recapped Its a unconscionable woofs Its a silver depone Its a self-confessed heathenized Its a led flocks Its a microseismical cons Its a hypodermal rehangs Its a fogless trephined Its a urbanized mutating Its a bewitching trauchling Its a boozy untruss Its a unanxious blow-dries Its a elenctic platinise Its a usurpative alleviates Its a unsatisfiable overbids Its a Jugoslav embedded Its a redder booby-trap Its a torn rinsing Its a intelligible fans Its a decorative restrict Its a annalistic bandying Its a oral shikars Its a sejant outlast Its a sapindaceous mussitate Its a evoked antiquates Its a secular impaled
Of those I like:
Its a psychic harp Its a accented bishoping Its a silver depone Its a backboneless chum Its a refractable corrugate Its a secular impaled
A psychic harp. That's straightforward. It'd be just sitting out there, playing itself sometimes. Or is someone playing it? Our guy thinks about going up there, touching the empty space. That's scary.
The accented bishoping -- an accented bishop. Just a bishop, sitting out there on the hills. Not that great.
Its a silver depone. I'm not sure what a depone is. But it doesn't matter. I've settled on the psychic harp.
It's psychic. That means it can hear your thoughts. It can communicate, though, but only in music. Is it communicating, our guy thinks?
It could play folk songs. Our guy would know the words. But he'd know various words and wouldn't get far.
Maybe the crux of the story is the meaning of the tune it's playing. Is it "My Johnny Went off to War" or "The Silver Plate", which is about a woman who kills herself because her Johnny cheats on her?
Or maybe the songs are about the town, or God. Let's just say he listens and changes. He thinks about marching to war. And then everyone leaves.
Probably best to not bother with the words stuff. Won't be able to make it work. It's just a mesmerising tune, and it changes him.
And then people leave. This is fine. Will people think it's just weird / feel unsatisfied? I can't know.
I'm feeling a little self-conscious now because I'm thinking I'll go post this on my blog, announce that I'm going to finish this story in a week, put the repo on Gitlab, stream this on Twitch. I like the idea of it. Probably best not to bother with Twitch.
Alright, let's plan that. Where to post? I can stick it on my Tumblr. Toks has made a website, apparently. I could do the same. I won't, though.
Today Make repo, stick it on Gitlab. Write post for Tumblr, include these notes. Write All characters, names, etc -- temp names -- wants, needs Synopsis Clean kitchen Call Mother Put money on phone Read
0 notes
phoorn · 6 years ago
Text
Why You Should Never Become a Server Admin
It occurs to me the title's clickbait. This isn't some arousing tale about how I've been screwed over by my boss or I don't get paid enough. I just thought I'd moan about the Minecraft server I've been administering.
It all started two days ago. My friend Humperdink (not real name) messaged me for the first time in a year saying he wanted to play a Minecraft modpack. The modpack is Roguelike Adventures and Dungeons. You can get it at <https://www.curseforge.com/minecraft/modpacks/roguelike-adventures-and-dungeons>.
I said, "...................................... Yes."
The thing with me playing Minecraft with friends is it's always me that's got to set it up. (The reason is deep down I want to.) Always me wrestling with and sweating over the server. Port forwarding, server.properties, why can't this guy connect, why can't I connect?
And recently, since I've been using Linux there's the headache of which Java. Minecraft only plays well with Oracle's JRE, which you have to get from Oracle's site (though the latest version seemed to work with OpenJDK). They have an RPM (I'm on Fedora) but it's out of date and won't install cause it's looking for dependencies in the wrong places.
I mean, it's all this stuff. You know what computers are like. Not simple. This runs on this and that and uses this and you need to understand some of all of it.
Or you can follow someone's guide, but that only works if you want to do just what they did and nothing goes wrong. At that point you have to start swotting.
But actually this time I was nervously excited. I've learned a lot about computers since the last time I set up a Minecraft server. And a little about networks.
Mucking about with networks used to be my second least-favourite activity behind going to the dentist. TCP? UDP? DHCP? DNS? Domain name? IPv{4,6}? And so on. It's bonkers. Not unnecessarily so, I have no doubt. And now that I understand a tenth of it I don't hate it so much. We hate what we don't understand, they say, accurately.
I was keen to show off. Trepidatious (if that's not a word I claim it for my country), too, because I was gonna use a Linux laptop to host the server and I didn't want to screw it up and have my Windows plebs tell me, "Why didn't you just use Windows?"
Java's cross platform, plebs! And don't you know the web is made of Linux?
(They don't care.)
And so I set the thing up. The Curse/Twitch launcher or whatever that my friend told me to use isn't available for Linux so I used MultiMc to run the modpack, which works well and lets you have multiple instances of Minecraft side by side without conflicts. And the server I just java -jar blahblahblah.jared into existence.
As the server booted up there were a lot of warnings and quite a few errors. I wasn't sure if that was normal. It wouldn't be normal in any other system but this is modded Minecraft.
But we all played happily for the first day. Some bugs: I suffocated in the ground, though I'm not sure if that wasn't quicksand. My girlfriend lost some items. I thought I'd lost eight stacks of redstone but they turned out to be stolen by my friend.
On the morning of day two our electricity ran out.
And, without getting into a long story, I'll just say that since I was using dynamic IP, after I'd topped up the electricity and rebooted the laptop the IP had changed. So I had to update the port forwarding in the router.
Well, after that my friend kept getting kicked moments after he got in. Presumably it was because of something I did but I can't tell you what I did wrong.
So I started fiddling. And, as usual when I'm fiddling I sneakily began trying improve the setup. I rebooted to the TTY (systemctl set-default multi-user.target) and tried to run the server from there. For better performance, right? Without the overhead of a desktop environment.
But there was something funny going on. Ethernet was, according to nmcli, Network Manager's CLI program, "unavailable".
And so I struggled and sweated and struggled, while my friend tried to help by restarting his router, reinstalling all his mods, changing his username and skin and destroying the nether portal. I knew it wasn't anything to do with him or the nether portal, and sweated some more.
Finally, utterly fed up, I told him I would nuke and pave the server laptop's OS. Extreme? If the alternative is trying to work with nmcli or -- worse -- trying to understand how network devices work in Linux, all the while wondering if it's a hardware fault, I'd rather just nuke and pave, which is the Linux Way. It's fast, you know, and I keep all of my important data on my Raspberry Pi, syncing it using Nextcloud, which is like Dropbox but more virtuous.
And I've done it. It's just finished installing now. And the result?
What I think happened is this, yeah. My cat's been really affectionate recently, which is wonderful and also a tragedy. I'm too kind and too loving to not stoke her when she comes to me, or to move her when she sits on my lap or the keyboard or on my chair. When she does any of these things my work day grinds to a halt.
So yesterday after she'd been on my lap for a couple of hours I -- carefully, so as not to wake her up -- got the cat basket from the floor and stuck it on my desk, slightly on top of the server laptop's air vents.
It's made out of fabric and I noticed later in the day the laptop had become quite hot.
I'm saying I think something melted. Because the reinstalled OS is still not recognising the Ethernet.
We can't use Wi-Fi. It's too unreliable. I guess we'll have to move the server to one of my other laptops.
And who will have to do that? ONLY OLD MUGGINS HERE, of course!
Sorry, I aged twenty years in that last sentence. Next I'll start calling my girlfriend the old ball and chain.
0 notes
phoorn · 6 years ago
Text
Three Stories from Clarkesworld 155
I've read more short stories than the average reader. I know this without having to count. This is because I've said ... a few hundred? No bugger reads short stories, even those who have read thousands of novels.
You'd think people would read way more short stories than novels. Short stories are short. But I know why they don't. Novels are deeper. Depth is the novel's big advantage over eg film: paper is cheap and you don't have to pay the actors.
But who wants to go around being deep all day. Not me. In fact, as I get older I'm coming to appreciate shallow experiences more and more. Like small talk. When I was young I didn't/couldn't do small talk. Actually, I still can't. That's because I'm unfriendly. But I see the value in it. "How's du doing? Pickin' awa', pickin', awa'." There's actually a lot going on in such seemingly empty exchanges.
They're really saying, "How're you coping with your cancer?"
Short stories are the same. They don't build to big emotional climaxes, but they can suggest a whole lot more. And they don't demand too much from you. You can gobble up loads of them at once, like marshmallows.
For a while I wasn't reading any. I was too poor, I thought, to buy Analog like I used to. Well, I'm subscribed to Analog again and I have discovered that there's magazines like Beneath Ceaseless Skies and Clarkesworld that are high-quality and free. I didn't know.
You can pay for issues, of course, and subscribe -- ebooks, no paper -- but the HTML is free, and nicely formatted with big margins so your eyes don't have to trek across your 1960x1080 monitor. It uses an appropriately SF sans-serif font.
I'm gonna be more brief here than I was in what I called my Beneath Ceaseless Skies Pick 'n' Mix Review. I agonised over that effort like I was writing my dissertation. And to make things even easier on me, I'm not gonna say anything at all about stories I don't like or are ambivalent about.
Entangled, Beston Barnett
In the future the Intergalactic Cooperative have set up an intergalactic fostering project. Our guy, a Len -- a somewhat swan-looking alien -- is "born" on earth and adopted by human parents. I say "born" because his body's still on his homeworld Lennia. His mind is "projected" into a "xuit" on earth using, I think quantum entanglement. I say "projected" because it's not really a projection. It's, to quote Terry Pratchett, quantum.
And the story's about our guy as sort of human, sort of Len and his desire to fit in.
It's very good. You should read it.
Onyx Woods and the Grains of Deception, D.A. Xiaolin Spires
This one's less good, but also good. It's well-written but the plot's more familiar to me.
Our girl is a lumberjack. Everyone in their village has to pitch in in the effort to chop down their incredible Onyx forests and plant grain they turn into bread. By order of King, on the advice of the contempoists, who are basically like Europeans in Africa. They take the chopped-down trees away over the sea and make them into ...?
The best part of this story is the trees themselves, which bleed red sap when cut and have crystals inside.
The Yorkshire Mammoth, Harry Turtledove
I've never read any Harry Turtledove, so I can't tell you if the world of this story -- basically ours if the last ice age was just ending -- is one he's written about before.
A veterinarian in Yorkshire is asked to treat a mammoth that's broken its tusk. He does so. That's it! It's simple, and unsurprisingly good, coming from such a successful writer. You can't go wrong with the premise (mammoths) and it's written in an engaging light-hearted anecdotal style.
I think he does a good job of rendering Yorkshire (I'm not from Yorkshire so don't take my word for it). Americans often fail at understanding Britain, and why shouldn't they?
0 notes