Comments!

Some of you dropped a line over here, and I’d like to respond somewhere where it’ll be easier to read than the little comments section, because there are some very good questions and I like to answer completely.

For these first two commenters, I have a long and hopefully not boring story in answer/return comment. I wasn’t sure where to break it–merby would mostly be interested in the latter half–but it doesn’t separate nicely, so I’ll leave it as one piece.

Tally said:

Hi, I’m Tally!
Just wanted to share how glad I am to have found your blog, it’s gotten me interested in making my own page to document my experiences with tech, too. You seem brilliant and really knowledgeable about hacker culture; forgive me for asking if this is already stated on your blog, as I’ve just discovered it, but I’m curious to know what about programming inspired you to study it and tech? Did it have anything to do with the O’Reilly book?

Hope you keep on writing, all the best!

merby said:

Hi Rebekah,

I discovered your blog a few days ago via ESR’s website; I’ve read through several of your posts and I just wanted to drop you a line and say how helpful they’ve been to me. I too started programming with HTML fairly young (I was 15 or so) and then went to college to study computer science. By the time I was a junior, the structure of school, even though it’s a good program at my university, had essentially killed any desire I had to work with computers. It was kind of a rough time for me in general, and I think I might just be better suited to learning this stuff outside a classroom setting. Anyway, I just graduated (NOT with a CS degree), and now, ironically, I seem to have rediscovered my once compelling urge to hack stuff. Your blog has been very encouraging and motivating for me to get back in the saddle, not to mention informative as I take the plunge into Linux. So thanks!

Also, I can totally relate to being the only girl in the CS classes and the occasional target of sexist pigs. So irritating. Good luck at the new school!

Awgh compliments ^^; Thank you! I like to think I’m pretty smart, but I’d say the people who are most knowledgeable on what I’m writing about are the people who are on GitHub doing it way more than I am, instead of writing about it. I’m kind of a n00b actually. I think basically everyone feels like a n00b for a long time in this field. It takes a lot of time and effort to become competent! But the payoff of building things is worth it.

Don’t feel shy about asking questions. Questions are the best!

 

Technology has been a big thing in my household for as long as I can remember. When I was really little, I used to sit over the shoulder of my older brother Tim as he took apart, repaired, and reassembled computers. He had kind of a little business going with it! He also, if I remember right, built me my first computer–a desktop box with a CRT monitor that sat in the living room, its main purpose serving the Hamster Dance web page to me on a regular basis, because I was three at the time.

When I was ten I took up writing long stories on the computer. It started off as kind of a little ambition–I wanted to write fairy tales and publish them for other kids to read. I wanted to send them off to a publishing agent and everything, and I did all this research and stuff. By the time I was finished with my first batch, it was a year later and 35,000 words long, if I remember right. But by then I’d just finished it so I could focus on the next project I had in mind–one I’d already begun–which took another year and another 56,000 words  (I looked it up) plus a bunch of rewriting (I was never satisfied with it).

By this point, Tim had gotten used to my habit of emailing him the latest chapters. In an effort to make this process more efficient (or perhaps in the hope of distracting me with a project and maybe even a different audience), he created a WordPress blog for me. It’s still up, but I don’t think I’ll tell you exactly where it is unless I get it into my head to revamp it and post my current writing. There’s really nothing there worth reading, just bad fantasy and high school angst. I did eventually get better, but I also stopped publishing online because I was hoping to publish my next project. Then my focus shifted to coding and interrupted its progress. My mom’s really hoping I’ll go back and finish it though.

Probably a wise move on Tim’s part, because the next two were 45K (…per revision, of which there were three–I didn’t like that one much either after I’d finished it) and 69K. My mom used to comment on the way I’d go on writing for months and months, then decide it wasn’t good enough and just about start over with the same story.

I comment on this because of two things: one, that writing fantasy novels shares a lot with writing software (remembering little details and logic and characters and motivations and items and rules of magic and making the whole thing make sense and be beautiful and entertaining to a reader–and also that length sounded impressive, but when it came to quality it just meant you had more to rewrite), and two, because my WordPress blog was my introduction to the idea that I could manipulate computers beyond just using software. (Yeah, I know, WP is software I was manipulating. Occasionally I had to look at HTML code. When you’re twelve, though, that’s kind of important. Links took me altogether too long to figure out.) But I didn’t know anyone who had a blog, and that set working with computers, in my mind, as a kind of Thing I Could Do.

Later that year, I found a program called RPG Maker XP. It was a game engine designed to make those old-looking grid RPGs–you know, they look kinda like this:

rpg screenshot

(That’s from a RPGVX game, but they’re very similar–it’s the same idea)

I found RPG Maker XP on sale for $30 once, and convinced my mom to pay for half of it. So I spent hours poring over a screen that basically looked like this:

RPG Maker XP screenshot

Once you made a “map,” as pictured above, you could double-click the little squares and create “events.” These drove gameplay–you couldn’t really do anything without them. And they were basically programming.

Each event has a “trigger” that sets it off. The one above (a screenshot from a tutorial for the more recent engine VX Ace) is for character naming, and triggers automatically. But you can also make them happen only when the player character walks up and presses Enter, or walks onto a certain square, or merely touches the event. You can choose graphics for the event–for instance, it could look like a person walking around, and the thing it does is the person talking to you. Or they might give you an item. Or open a shop menu. Or attack you.

Each of those actions would have to be programmed in. You technically didn’t have to write code. …Technically. You had to generate code using the tools. Line by line. Basically, it typed the code for you, and the whole thing ran on this big game engine that was already in place. I think it ran Ruby? But I didn’t know that then.

I did, however, think it was extremely cool, and spent many hours in front of a CRT monitor making my eyesight worse because of it. I tried to find documentation for it, but I couldn’t, and there was none (or none worth reading) in the program itself, and it wasn’t the most user-friendly, so I figured out a great many basic programming concepts on my own by trial and error. Variables. Loops. Coordinates. Timing. I learned you couldn’t have too many events on one page, or it would run really slowly (these were the Windows XP days–Vista was out I think, but we hadn’t downgraded).

That is where I learned programming concepts. That was one of the periods when I was really, truly excited about programming. So far, those periods have come to me only when I was working outside class on a project I was excited about, and I’ve never gotten that engaged in school. It’s kind of why I feel less excited about going to UNI than I think I should be.

The next year, Tim would get me a book called Head First HTML with CSS & XHTML for my birthday. I was really pleased with it–my mom half-joked that only Tim would know that what I really wanted for my birthday was a textbook. He started to go through it with me, and he’s a pretty good teacher–but I think he thought I wasn’t excited about it when he started to carefully, thoroughly explain the basics and try to make me not afraid of code. I wasn’t uninterested. I was just past the point when that level of fix was enough. By then, it took a much stronger dose to satisfy me.

I ditched RPGXP after a couple months, though. After I’d figured out the basics, I tried to do things with them–that meant trying to make the fantasy novel of that time period into a game. It didn’t work too well. I tried to write something else, but it got abandoned too.

I didn’t worry too much about this. I had lots of dud stories on my hard drive. But it was more work to abandon games. I left it alone, and started making web sites instead.

A year after that, I would take my first formal college class on coding–web design, specifically–and find out that they were getting basically everything wrong. We spent a third of the class on Flash, which I hated to the core of my being. The next third was spent learning to manually code HTML and CSS… to a far outdated standard, including scrolling marquees and gratuitous use of clipart as project requirements, and we weren’t being taught to use validators (the HTML version of a debugger; when you’re learning, it’s almost essential for catching your mistakes). The last third of the class was on the use of DreamWeaver, which at the time was just as bad as Flash. (I understand it’s grown up considerably since.)

After that, classes on VB and so forth kind of made sure my attention stayed on writing, art, and psychology rather than coding. I still enjoyed the idea of making things and the cool image of having coding skills, but it felt like work far more than play. I’m still trying to reclaim my enthusiasm. Sometimes it comes back, but… not for school stuff. Even if I liked the teacher.

DaniS said:

You ever read a blog and really empathise with a person? Virtual supportive and encouragement vibes, or something. Badly engineered education + sensitive engineering design sense + depression is not a fun combo. But it sounds like you’ve gotten through the really bad bit, at least.

And let me know, once you get back to coding, whether you ever want someone to rant at or work with. I’m still learning, but damn if it isn’t easier to do that when you’ve got something to make.

I’m working on this right now: https://github.com/RebekahAimee/ypn-app

It’s part of my “legacy” that I’m wrapping up. Not because I like the project, but because I promised to do it. I’m going to have the design docs up soon. It doesn’t have an open source license on it because it’s for an organization, and my communication with them on this particular topic was kind of vague. I’m really just building up the codebase so it’s worth it for someone else to inherit.

That’s boring though. So for you, I updated my idea file. Here you go! I’m seriously considering that bill-splitting app, but someone might have already done it.

Jan Coetsee said:

Send me an email and I will send you a link to some very cool stuff

Keep up the spirit!

Convince me you aren’t an email address harvester first. I won’t snub you if you’re a real reader, but this is the sort of generic message I’d normally stick in spam. So, if you recommend your favorite Jargon File entry, or remind me of the three virtues of a great programmer as told by Larry Wall, or tell me a very short story about a goat named Jerry, I’ll totally talk with you over email. 🙂

Or, if your links aren’t private material, feel free to post them here. 😀

Advertisements

Optimizing algorithms has never been so fun

I’m here to talk about a programming game called Human Resource Machine. It was recommended on Coding Horror, so when I found it in the latest Humble Bundle, I grabbed it immediately.

https://www.humblebundle.com/eye-candy-bundle

There’s no minimum price to get it, so even if you’re kinda broke you can still grab it.

And dude. It is _so fun._ It’s difficult enough to be kinda confusing and difficult but still doable–the game uses really, really simple commands and the closest thing to recursion/looping are conditional GOTOs. You only get a couple options for the conditions, too. It seems like the best algorithms are either beautiful or mind-bendingly crazy. Readability? Who cares about that stuff? Just stick some masking tape on it. If you’re used to sane code that’s written for humans to read and only incidentally for compilers to execute, prepare to rearrange your priorities in the most fun mad-scientist way possible, pushing the system and making it your plaything.

I’m on level 18 or something after about two hours (according to Steam), and so far I’ve gotten at least one of the optimization challenges on each level that has them. You often can’t get both the speed and size challenges done at once, so they need different approaches, and it’s really difficult to figure out how to change tactics when one solution comes naturally. I seem to get into a mental groove of optimizing for one or the other at a time.

It also has a sense of humor. Instructions from management can get pretty silly. Um, but not sillier than real life–does that still count?

Anyway. Grab the game, support charity, maybe get a game about metro stations along with it (I did, haven’t tried it yet though).

I claim no responsibility for your lost productivity. You have been warned.

Belated Merry Christmas!

I don’t know about the lights. Unless they’re LEDs, they’re kind of a fire hazard. But Pinterest doesn’t follow the normal laws of physics.

(Note: I started writing this on Dec. 19. It’s late, but it’s here.)

Wow, I think this is the blog’s first Christmas! To celebrate, here’s a payload of some great stuff from my bookmark stash. This is all silly stuff really, nothing terribly on topic. Basically, it’s a collection of nerd clickbait. Did I promise anything else?

 

Silly/interesting lists

Shooting yourself in the foot in various programming languages

Personality types of developers

Know Your Sysadmin

Github Octodex

100 Rules of Anime (text only, but not something your kid/boss should read over your shoulder)

Harry Potter theories (these are good)

Evil Overlord Rules (this is a classic, so if you haven’t seen it already, you need to)

Things to do with Command hooks

Design Fails (blatantly pulled from Reddit, but whatever)

Things Mr. Welch can no longer do in an RPG

Gems:

48. The elf is restricted to decaf for the rest of the adventure.

74. My thief’s battle cry is not “Run And Live”

163. Not allowed to try and make a dire version of any dog of the toy breeds.

313. My British Superspy does not get a reroll on his seduction check if his shirt gets ripped off.

330. The Halfling Paladin does not represent the Lollipop Guild.

Useless entertaining/relaxing websites

Silk

Neon Flames

This Is Sand

What color is it?

Weird art websites (epilepsy warning on some of those, use caution)

Other

My favorite chocolate cake recipe

My favorite sugar cookie recipe

Dilbert the animated cartoon (AFAIK, there isn’t another way to watch this)

All the Pokemon episodes you could ever care to watch (and then some) (like, a lot more)

The Secret Life of Dolls (a silly fanfic sort of thing)

Character name generator

A whole slew of random generators (site also has a bunch of articles about writing. Its colors change every couple months so if you have trouble reading them at one point, check back later. Usually not a problem but the theme right now is really bright)

White/pink/brown noise generator, and corresponding rain generator

Another one of these lists (!)

ThinkGeek fortunes

This rant about programming I think is hilarious

Museum of Bad Art

there has to be at one brainless Buzzfeed post in this list

Cats

This is called a “chimera” cat

Cats napping in pots

Cats napping in pots, part two, on a different site, cause they’re just that adorable

Cats wearing sweaters (I guess that makes two from Buzzfeed)

This cat snuggling with a bunny

Webcomics

I saved this for last because of how long the list is. I like web comics. No particular order.

xkcd (duh!)

Homestuck (if you want to take a while–I read most of it when I got mono a few years ago, its wordcount surpassed that of War and Peace a long time ago and it’s like eight thousand pages but it’s really funny and involved and makes you think too hard about time travel shenanigans and punch card based alchemy)

Rice Boy (surrealist adventure for a cold winter’s evening)

Beyond the Canopy (silly fantasy)

Cucumber Quest (extra silly fantasy plus cute rabbit people)

Bardsworth (story about a guy going to a parallel dimension through his closet to attend bard/wizard college, shenanigans ensue)

Monster Pulse (more serious fantasy)

Monsterkind (some kind of political commentary, if my memory serves; I liked it enough to bookmark it)

Hark! A Vagrant (mostly silly historical comics, but I bookmarked the weird Shetland pony thing… well, one of the weird Shetland pony things)

Alby (I actually never finished this, I should get around to it)

Questionable Content

PHD Comics (this one is my favorite)

Bug Bash (developer team shenanigans)

Geek Hero (ditto)

Dilbert (obligatory)

Foxtrot (ditto)

User Friendly (goes straight to the ESR as Obi-Wan arc)

Poorly Drawn Lines (just silly)