Encouragement

The last of today’s post trio; the three have a common thread.

There are loads of Internet people who will tell you how to do stuff, or give you cheesy motivation posts that are all the same except for their peppering of spurious advice that rotates in and out depending on the latest fads (“Get up early! Drink 8 glasses of water daily! Do a juice cleanse!”). This isn’t that.

If you’re trying to learn to code (that is, you’ve decided you still want to, not because other people have pressured you into learning), this post is for you to bookmark and return to when you’re feeling apathetic.

Because if you’re feeling apathetic, we lose something important. Your work is important.

What you’re doing is developing the kind of abilities that let you tinker with the world around you. Your ideas, if you choose to pursue them, can change how other people live. You can extend what humans are capable of.

You’re a maker. You’re powerful. You fix things. You solve problems. You’re capable. You’re creative. You’re clever. You’re sitting on a lot of potential. Whether you can feel it right now or not, you have all this pent-up energy waiting to be released into something.

Your code is art. With your mind alone you can make things that are not only beautiful and elegant, but serve a purpose.

Half the companies in America want to hire people like you because of the things you can do. No matter how you seem on the outside, your mind is a powerful tool. You’re among the relative few who understand a chunk of what’s going on with computers. Your skill set is prized and not common enough to fill the massive, gaping need for the things you can create.

And you’re getting better and better.

You can’t be apathetic. You can’t put yourself down. If coding is what you want to do, you can’t keep putting it off.

We need you too much.

We need the people who developed and maintained Kiva Loans so that struggling business owners and entrepreneurs in countries around the world could move out of poverty.

We need this guy and OptiKey, his open source software project that uses optical tracking to let people with motor and speech limitations use computers.

We need the people who are running OpenMRS, a medical record system designed for use in developing countries and now used basically everywhere.

We need the many, many open courseware projects that provide education to people around the world who might not otherwise have access to that knowledge.

We need the people who are building a bridge into a world that is way better than the one we live in now.

We need you, and those learning around you, to hold up the bridge with us. It’s a very important bridge and lots of people need to walk across.

Every time you build something, or answer someone’s question, or successfully learn something new, you are creating something incredibly valuable that didn’t exist before. And especially when you give away something other people will use, or even that other people are paying you for making (assuming they’re not terrible people)–that means you have changed a piece of the world.

Never forget how powerful you are.

I believe in you.

On impostor syndrome

I’m feeling pretty good about my skills lately. Maybe I’m realizing I didn’t have quite so much “catching up” to do as I thought. The theory stuff I’m learning in my classes is useful, but not as complicated as it looks.

(Well, most of it. Some of it is. Though I’m starting to pick up on the idea that if I don’t understand a recursive algorithm, it probably wasn’t efficient anyway–and if I don’t understand it [I’m usually good at this sort of thing] then it better be a darn good optimization hack for me to use such an unreadable piece of code. My standards may change as I’m learning Clojure, though.)

I dislike the whole “impostor syndrome” craze. If you read tech articles on Medium and Quora and so on, everyone and their dog has impostor syndrome. Saying you have impostor syndrome is like this big, socially-acceptable, self-contradictory humble-brag: “I’m actually a genius but I don’t think I am.”

It makes about as much sense as the girls who listen to “You Don’t Know You’re Beautiful” on repeat:

“You don’t know you’re beautiful, oh oh, / That’s what makes you beautiful”

and then say, “Omigosh, 1D just totally gets me.

First off, the point is that you don’t know, so if you acknowledge the song as something you relate to then you’re canceling out your own point. Second, this song is about how the singer finds it super attractive that you have no self-esteem. Catchy.

When you’re a beginner, of course you’re looking around and thinking, “Wow, everyone else knows so much more than me.” Because they do, duh, you’re a beginner. And you’re going to be a beginner for at least a few months. If you start calling your thoughts “impostor syndrome” at this point, you’re deluding yourself. On the other hand, you need to trust your ability to learn. Just don’t underestimate that it’s going to take some work and you’re not there already.

Impostor syndrome is when you’ve still got this mindset, but you’ve also got concrete evidence that your mindset is flawed, which you then brush off by thinking that everyone else is some kind of idiot you’ve fooled into believing you have way more technical knowledge than you do.

Listen, you have respect for the other techies around you, right? Anyone you talk to on forums, StackOverflow, GitHub, your school/bootcamp/job. (If you’re roughing it alone, try to connect with someone. It helps.) If any of them are actually worthy of that respect, they can smell technical BS from a mile off. That’s a skill we all develop. If they were going to suddenly find out you’re not as skilled as they thought you were, it’d have happened a long time ago.

It’s hard to feel like you’re making progress when you can’t measure your own skill. I get it. Nobody in tech knows how good they are at what they do; we can estimate, or take the judgment of those around us. And the problem with the latter is that most everyone else is as insecure as you are, and some of them will lowball you to feel better about their own skills, while others will try to flatter you so you’ll like them.

Listen. There’s a solution to this. Not a perfect one, but one all the same.

You have to build stuff. You have to solve problems. You have to read code. You have to write code.

Empirical evidence of your own skill grounds you. It puts a lower boundary on where you are. It gives other people something tangible to assess you on. Working on something real will tell you very quickly whether you’re out of your depth or just underestimating yourself.

Here’s how you tell the difference: If you’re super confused and have to look everything up before you can do any real work, you’re just underestimating yourself. If you’re actually out of your depth, you don’t even know where to start. Misleading, I know.

The problem with the advice “just build stuff!” is that it’s really freaking hard to start. You don’t know what to make. The things you want to make are complicated. You don’t have the syntax memorized. You don’t know how to split things up sensibly into different methods or files. That’s a big problem with programmers who are just past the point of doing lots of tutorials. You don’t know where to start, and it seems like you should go back to the tutorials and learn more, because that’s usually how it works. But in this case, it’s doubly misleading. The bigness of open-source and the complexity of many of its projects are also terribly confusing.

In practice, impostor syndrome is a lack of information about your own ability. So do the scientific thing and experiment. Run some tests. And remember that, with more practice, you can change the results.

Related sidenote

Listen, I’ve been thinking about writing some more how-tos. Programming how-tos, not the Linux ones from before.

And I wonder if I might also accept some… I guess students? Mentees? Just informally. If you try to do one of my programming tutorials and you post your code on GitHub, and then drop a line here, I could look at it and help you get unstuck or suggest improvements or that kind of thing.

I can’t promise a specific response time or anything that formal. And I know some of you don’t really qualify to be my students, because you’re legitimately better programmers than I am. But otherwise, I might help you learn something new, and/or feel a little more confident about your skills.

Is that something you might be interested in?

 

Should You Learn To Code?

This happened recently: https://techcrunch.com/2016/05/10/please-dont-learn-to-code/

Then this happened too: https://medium.freecodecamp.com/please-do-learn-to-code-233597dd141c#.ppljou5z1

It’s not new. Exactly the same debate happened in 2012: https://blog.codinghorror.com/please-dont-learn-to-code/

Then: http://decafbad.com/blog/2012/05/16/please-learn-to-code/

Here’s pretty much the conversation that’s going on.

“Not everyone needs to learn to code. It’s a fairly niche technical skill set, used in one kind of career. Insisting that everyone learn to code is like saying everyone needs to know plumbing.” (For some reason, both articles used this analogy; maybe the second one was just ripping off Jeff Atwood’s?)

“But computers are everywhere, they break often, they’re not well understood, and the world runs on them. Even if you don’t want to be a software developer, it might be smart to have a passing knowledge of code.”

“It’s just not necessary; people have other things that require their time and energy. Besides, there are all these newbies coming out of coding bootcamps, thinking they know everything and are entitled to a job. Then they’re either horribly let down, or they go out and write bad code the rest of us have to deal with.”

“Only some bootcamps are like that, and only some students. Often bootcamp students make good open-source contributors, too. Besides, many of these students intend to go into other fields anyway–they just want to kind of know what they’re doing around software.”

“The software field is way too romanticized. People want to be a software developer because they want to look smart and get a high-paying job. In reality you’re often overworked and the job is very stressful. Lots of students enter this field with an overly optimistic idea of what it’s like.”

“True, but we also have a massive lack of coders in America. There are lots of great jobs out there, and a big reason for the overwork is that we don’t have more people in those jobs.”

Yep, that’s about it: people who are already in the field, arguing whether newbies should be encouraged to join the club.

Personally, I think these people need to calm the #%#$ down, if you’ll excuse my cartoon language.

Here’s the question that determines whether you want to code.

It’s not “Are you dedicated?”

It’s not “Do you actually like computers?”

It’s not “You’re not just in this for money or prestige, right?”

It’s this:

Do you want to?

That’s it. That’s literally the only question you should be asking. This pretentious judgment of newcomers based on their “dedication” or “talent” or any other bull as judged by an outsider who has no clue who you even are? That shouldn’t matter to you. At all. If you want to code, code. If you want to learn, learn.

If you don’t, you don’t have to, and you shouldn’t. The people who are trying to pressure you into learning anyway–saying it’s “the new literacy” or whatever–aren’t you, any more than the people who are all like “stay out of our clubhouse.” The idea that either camp can or should tell you what to do is pretentious nonsense.

But if you still want in? Welcome to the clubhouse.

I don’t care if you have kids. I don’t care if you’re not a dev by trade. I don’t care if you start off thinking you know everything–you’ll learn soon enough, unless you’re generally a jerk with no empathy, in which case your interaction with computers doesn’t really matter as to whether I’ll like you.

None of that freaking matters.

If you’re not dedicated, you won’t put in the time to learn.

If you’re bad, someone will tell you and (hopefully) give you hints about how to get better.

If you don’t like computers, there are easier fields for you to get into for money and prestige.

The technology field has enough natural barriers to entry without people building more. In fact, the natural barriers hold too many people back who would otherwise be great coders; that’s why there are so many bootcamps, tutorials, intro-to-programming websites, and even blogs (ahem) to help newbies in this field.

Technology doesn’t need to be only in the hands of this “elite few” that “Please Don’t Learn To Code” article writers seem to be trying to protect. (Ironically? These people are going to be the same people who’ll complain that their manager has no clue about anything they do. At least if the managers knew some basics, the devs would have a language to use to talk to them. If the boss thinks their job is so simple, maybe s/he should look at the bug they’ve been fixing for the past four hours. It’d be more like onboarding a newbie coder, which is something they probably have experience doing. Or should, anyway.)

I do have this to say on the topic.

You know how in schools, we have music classes? Even though most people are not likely to become professional musicians, they’re given a class where they… probably learn to sing better, and take some lessons in music appreciation.

Why?

Because music is an art form, and studying it is its own reward.

Writing good code is making art. It’s not “like” making art. It is making art. You can write beautiful code, and it’s a joy to do so.

So if you agree with taking music lessons in seventh grade in order to better appreciate an art form, you should also agree with learning to code enough to recognize a beautiful piece of software–even if you yourself don’t do so, you shouldn’t condemn others for trying.

Not everyone who takes music ends up a very good singer, and definitely not everyone goes on to sing professionally. They only do if they love it and are good at it.

Isn’t that how it should be?

So

I’m not going to tell you that you should or shouldn’t learn to code. That’s for you to decide–based not on the opinion of some pompous person on the Internet who’s acting like a grumpy black hat and thinks they should decide if you belong in Technology-Claw or Liberal-Arts-Puff–but on one simple factor.

Whether you want to.

That’s enough.

Greetings from University Town #214

Soooo.

Stuff I’ve done in the past two weeks.

  1. Moved. For the first time in my life; my parents have occupied the same house for longer than I’ve been alive, so I’d never moved before. That was my first time driving that long on the interstate, and I had a cat, a guitar, a ukulele, a younger brother, and a bunch of assorted stuff in the car with me. And people were being idiots on the road, changing their speed way more than was necessary, whipping around and doing stupid stuff. It was not a pleasant drive.
  2. Jacked up my foot. Sorry, feet. I wasn’t aware you could pull muscles in your feet??? But I think I did??? And I got a huge blister between my toes, and wow, yeah, no.
  3. Hauled loads of books, three fishtanks (two of them are small though), a heavy oak desk, a couch, a mattress, an armchair, most of my clothes, a working kitchen, and a whole bunch of other stuff into my apartment. My second-floor apartment. In a building with no elevator. I’m still missing a load of books.
  4. Signed a bunch of paperwork. Mom paid my tuition. I need to get off my butt and find the info I need to sign up for a parking pass for school.
  5. Discovered that I don’t have a dishwasher as I thought I did, but I do have a garbage disposal, which I thought I wouldn’t. This is a highly favorable tradeoff because of how much I cook.
  6. Cooked way more than usual because I do not own a microwave. This is turning out to be good for me, I think. I’m living mostly off of curry rice and stir fried whatever. I haven’t gotten tired of it yet. I did make sugar cookies and shared with my neighbors, though. Also a pease pie, although that’s a weird British thing done according to a recipe I made up inspired by a Terry Pratchett book, so I kept it to myself. It turned out saltier than I would have liked, but tasty all the same.
  7. Mostly re-set up my fishtanks. I still have a bucket of aquarium plants next to me.
  8. Worked on the YPN app. Did I mention that’s open source now??? You can contribute to it! Or just tell me how awful my code is! I know there’s crap in there I will very much hate in a year. Or a few months. Whatever.
  9. Read Lean In. I own both a GitHub account and bras, so it’s been heavily suggested to me for several years that I should read it. Despite the criticisms (and expecting them to be right), I read the book. It rather surprised me. I have a post under construction about it, but feminism is not one of my favorite topics to write about, and I find it hard to write about it in any sort of way I’m satisfied with.
  10. Discovered the cartoon Teen Titans Go! I watch easily more kids’ cartoons than any other kind of television. (British TV is up there.) It’s really funny and kind of brain dead, and that is all I ask of such things.
  11. The apartment smelled weird when I got here (I think they all do?), so I went all stereotypical middle class white girl on it with Bath and Body Works wall plugins and an assortment of scented candles. (I do like candles though.)
  12. Settled my cat in. He took the move pretty well; the biggest thing for him was the people who walk past our door, but he’s mostly gotten over that now. He still gives me the evil eye when it looks like I’m going to leave.
  13. Discovered the best Hy-Vee ever. It’s like a Whole Foods and a Schnuck’s in one building, but it’s a Hy-Vee. I bought some interesting food there to experiment. They had the Indian sauces I’d come for, but they also had legit, decent-quality ramen with no MSG, and some chicken apple sausages, and imitation crab meat (which means it’s mostly pollock, but it’s still tasty). The only things I left without that I wanted were lemongrass paste, which they were sold out of, and snack cakes, because they only sold one kind I didn’t like.
  14. Caught some kind of stupid virus that’s making me dizzy and faint and fuzzy-headed. My parents have caught it too, I think the stress weakened our immune systems. I can’t get work done in this state and it’s driving me mad.
  15. Despite that, watched a steady increase in the stability of my mental state. There was a lot of stress and anxiety floating around before the move, and we were all kind of feeding off each other. Let’s say–my tendency toward depression has a huge genetic component, and I’m glad Mom was there because even though she was pretty stressed out, she’s kind of always stressed out in one way or another and handles herself better than the rest of us. She knows when I’m having an anxiety attack, she knows what to say to make my dad stop being crazy and trying to move huge furniture by himself without even clearing a path first, she knows what will make my little brother feel better about Bekah moving away. Then she feels guilty for the fact that she can’t help us move stuff because of medical reasons, we all tell her that is stupid, she laughs and feels guilty anyway that she’s “not doing anything.”

Most of that was two weeks ago. We all survived.

The YPN app I’ve been working on is chugging along. Here, I’ll make a few screenshots to show you.

Screen Shot 2016-08-13 at 7.14.34 PM
Menu page
Screen Shot 2016-08-13 at 7.14.44 PM
Member discounts page
Screen Shot 2016-08-13 at 7.14.47 PM
Newsletter articles page
Screen Shot 2016-08-13 at 7.14.41 PM
Event calendar page
Screen Shot 2016-08-13 at 7.14.51 PM
About Us page

It looks kinda funny because it’s meant for a phone screen. It resizes just fine, I just forgot to resize the window for the screenshots.

Anyway, I’m the one who coded all this. Some other folks said they wanted to help over the summer, but they’ve forgotten, flaked out, or had Life intervene. (I know the feeling.)

Currently, my battle is with Kivy’s RecycleView: supposed to be a way to make scrolling lists of items using the MVC pattern. Obviously I need this for the discounts and newsletter pages. The problem is that RecycleView is a new and not well documented feature, and doesn’t actually even import properly yet, I assume unless you’re using the bleeding-edge dev version of Kivy. But that’s not for using–it’s too unstable for production use. So maybe I’ll have to use the deprecated (yes, deprecated even before the new one is out) ListView and ScrollView features. I know I’ve gotten those to work once before; I have old code to work from.

I really should merge back the mockups branch, now that I’m working on this. Note to self. I guess I still need to mock up the Search page, but I don’t even know if Kivy has features for that yet?

Also, I want to make it more obvious what page you’re on while you’re using the app. I think it’ll be a header in place of the search bar, in the normal page headers. That’ll be some goofy inheritance stuff to work with, though; I have the header as its own custom widget.

If you don’t know Kivy, the past three paragraphs may be incomprehensible. Sorry about that.

Anyway, the YPN people have no clue what I’ve been doing. I need to send them screenshots or something so they’re not afraid I’ve abandoned the project, too. Someone’s got to follow through on this thing.

I need a nap.

Todo: Go backpacking

I wrote about a todo-list app idea I had in my post “My Idea File.”

DaniS said:

I can think of quite a few todo list websites and apps off the top of my head, and the time-filling aspect looks like it’s heading towards the knapsack problem, so this idea is a bit too big and scary for me right now, I think. Your mention of priory assignment is cool, though, and reminded me of a chapter from Cryptonomicon by Neal Stephenson, which I don’t know whether you’ve read but is great.

I do know of lots of todo apps. I don’t know of any (without having looked) that let other people request additions to your list, or work with prioritization. Anyone can write a todo list app that sits on the phone and everything’s inputted by one person. It’s called a text editor.

I’m thinking of the people whose email inbox looks a lot like a todo list, because that’s how people ask them to do stuff. But that’s a kluge. I know these people exist because they’re usually complaining about it, and email clients are always trying to build in features to accommodate emails that are really todo-list items. What we really need is a new system, preferably one that integrates with the old one–maybe we should come up with a way to parse tasks from emails? That sounds complicated, but maybe it’s not impossible.

I get what you mean about the knapsack thing, but NP-complete problems aren’t generally difficult for small n. I’m talking about filling a few hours with a couple different tasks which might take 15min-1h. It gets way easier if your “specify how long this will take” function works in 15m increments. Then you’re working with, “I have 6 slots before my dentist appointment; find me 6 slots worth of stuff to do.” Also, if you don’t HAVE to fill every bit of time, the problem gets way easier. If the algorithm generally works, people won’t mind if it leaves 15m of free time or whatever–especially since the time estimates are necessarily estimates, and tasks often take longer than people think.

Also, if people have long stretches of time open, you generally want to make sure you get the longer tasks done then. If you have six hours of free time and doing taxes or something takes five hours, you need to prioritize that because big chunks of available time can be hard to come by. If you have a big swath of time and no long tasks, it’s a matter of sorting by priority. You decide which tasks to do to fill the spot, and then you prioritize them.

When it gets tricky is if you offer the user the option to split up big tasks. Say cleaning your kid’s room (which is a disaster) will take three hours. If you have a phone call scheduled early in the day and a hair appointment two hours later and you’re making lunch right after that and then your show is on an hour after that and the kitchen needs to be mopped sometime today… you’re probably not going to clean the room all in one sitting. Plus, you’d be pretty tired if you did it all at once anyway! So if you offer the option to break that up, then you’re approaching knapsack complications.

The solution to that would be to decide the smallest useful chunk of time to work in. 15 minutes is not really enough to pick up all the toys, and people tend to work better in slots of maybe an hour anyway. So if you split it up into 30m or 1h segments, then you’re back to relatively small n and you can work with that.

You also don’t have to use brute force–there are of course better algorithms for this–and you don’t have to get THE optimal solution. You just have to get one that works, and allow the intuitive human brain of the user to make changes to the suggested schedule.

This is a fun problem! Thoughts?

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.😀

Back to crazy

It’s been a while, folks. I’ve had a long post drafted up for about a month, and several times I’ve gone back to write on it, and then abandoned it for another week or two telling myself I’ll come back to it. Well, I don’t think it’s ever going to be finished, so I’m scrapping it and giving you the gist.

What’s been happening?

I’m out of school, obviously.

I left community college in late May. I didn’t graduate. I’m two classes away from the degree, but I’ve decided not to pump any more money into these jerks’ pockets–the program is a real ripoff. Still carefully not naming the school.

Why’d you quit so close to the degree?

Community college is not a good option for programmers. It’s too hard to find people with all the qualifications to teach at community college–unless they’re either flipping insane, like my favorite professor, or so inept (technically and/or socially) they can’t hold down any other job in the field. And when I say socially inept, I don’t mean, “oh haha he forgot to shower and wears weird Hawaiian shirts all the time”–I mean he does stuff like say to the only girl in the class, “You want to start a business? Like what, a scarf knitting business?”–when she’s studying programming. (He threw some patronizing little remark like that at me every day. I could have written one of those calendars.)

You don’t want to end up with one of those.

The ones who don’t know what they’re doing technically aren’t always a whole lot better. The school is running out of teachers–they overwork their best people (the “insane” teachers who are there because they like teaching or something) and everyone else seems to be fleeing the place like a filthy cat who hears the bath running. Last semester they hired this networking teacher to teach web programming like, “oh she used to run this business’s… well, everything, and she made sites for bands and stuff, let’s just stick her in front of this class.” But she wasn’t a programmer. She was a networker. This wasn’t her specialty.

Then they gave her the worst textbook ever–horrible technical design choices, no sense of code beauty, and no sense of how to write a textbook either (poorly organized, puts crucial details in easily-overlooked sidebars, poorly explained instructions, that kind of thing). The code ran, but it made my skin crawl. It did something to my brain. Two pages of instructions would take hours to complete because I’d stare at the book, stare at the screen, stare at my fish, stare at the book again, stare out the window, stare at the screen, come to my senses and try to parse the instructions, get a headache because of the weird grammar or terminology or whatever it was this time, give up, stand up, and go get some food or refill my drink. Then I’d come back and repeat the process.

This is not an efficient algorithm to follow. [citation needed]

The problem was that I was expecting to understand the book, because–here’s the kicker–I already know how to do everything it was asking. I just couldn’t figure out what it was asking without serious effort. It was like a customer with bad requirements, or Jeopardy! questions that are designed to be tough to parse even if they’re not tough to answer.

But–the other problem was that I learned good design, from an O’Reilly book, on my own, years ago. So, invariably, the way I would approach the problem posed was always different from the book’s. The book always had some weird complicated thing it wanted to do, and once I figured it out each time, I thought, “This would be near impossible to document.” Obviously–they couldn’t produce clear instructions on what they wanted you to code, which is basically documentation in a different shape.

The teacher had no clue what was wrong with the book. This was what she’d learned from, and look, it runs. None of the other students are having problems like this with the book, so why are you?

Because I know basically what good code design looks like, and it’s extremely stressful to do it this far wrong. I make TONS of stupid design mistakes myself, but those are mine and nobody’s saying they’re some kind of standard–I don’t want someone else’s forced on me and proclaimed correct. The other students just think they themselves are stupid and can’t learn this thing everyone else is saying is easy. They think it’s the problems that are hard. It’s not. You’re just not being taught well.

Because reading the book doesn’t help. After the first few weeks, I stopped reading the chapter and just skipped to the projects we had to turn in. I relied on W3Schools rather than the chunk of expensive firewood assigned to me. (Actually it was a rental textbook–I had some foresight).

Oh, and because I’m spending half my time traveling and the other half managing a full load of classes. Because this is insane, and my depression is acting up, and I have three other classes which aren’t going a whole lot better because I’m spending all my time trying to catch up in this one.

This teacher made me attempt to explain this to her at 8AM, crying, because she was giving me blowback about dropping her class. She also wasn’t listening to a thing I said, because she made me repeat answers to the same questions. She kept trying to persuade me that dropping (as, by then, a third of the class had) was a mistake.

In retrospect? Still glad I did.

This shit is typical of this school. Something like this happened every semester, if I remember right–I’ve repressed big chunks of it. Depression is weird, it screws royally with your memory, and I can’t even pull up what classes I took each term off the top of my head.

Seriously? Every semester?

I’m tryna think–first semester, that was the sexist pig teacher… second semester I remember I was taking C# because that was what I was procrastinating working on when I was writing one of my early blog posts here. What else was I taking? I think I had a Linux class the latter eight weeks… time to go look it up.

Oh! Yeah! Second semester I tried to take the same web dev class as ranted about above, but it was online from a different teacher, and he went completely off the grid. Wouldn’t answer phone calls, emails, posts on the class web site, anything. Gave us links to malware-laden downloads for programs for class, too–not illegal stuff or anything, it was FileZilla we needed, and that can be gotten easily from the project site, which is a clean download.

Third was the Raspberry Pi project, which is kind of unofficially cancelled. I got to a certain point and then said, “okay, next step is we hook up the Pis to the Internet, how do you want to do that? here are three ways” and all of them were vetoed. Can’t put them on public WiFi because it’s insecure and also really weird to program and thus weird to document–not a good option, didn’t even ask. Can’t put them on the tablet network, the password is super secret and entrusted only to certain individuals… who can’t program Linux, so can’t program it into the Pi image. Can’t build a new network branch that’s connected to the Internet because it’s “too expensive,” whatever that means. And my networking guy who was supposed to be working with me cut out on the project after an evening of hovering over my shoulder while I set up an Apache server. Which also isn’t a good permanent option, because trusting the school with managing its own server is like handing a ten-year-old boy a baby to look after for the day. And he’s an only child.

They also handed me piles of paperwork, because this was supposed to be an honors project (I didn’t want to make it an honors thing, but I let it happen against my better judgement), and the paperwork was supposed to keep me “on track”–writing timelines and crap like that. You know the sort of thing.

I still feel like I should leave documentation or something for the project in case someone sane wants to pick it up–after all, they bought the RPis–but you can’t support a project halfway and then stop. I don’t owe them anything. The coding wasn’t that complicated–they can figure it out if they want to pick this up again. Anyway, that’s what happened with Raspberry Signage. Their digital bulletin boards still suck, and they’ll most likely have to pay someone through the nose to fix the system when it finally breaks for good.

Fourth semester was the nonsense detailed above.

So what happened finally?

I dropped two of my last four classes. I kept the other two because they were things I wanted to learn, and my favorite professor was teaching them. One was Mobile App Development, and the other was Server Side Scripting, which I was horribly behind in because I’d been focusing entirely on the web dev thing.

So much so that in the last weekend before the end of term, I had exactly 2 out of 14 of the assignments done, and they were pretty much the only thing we were graded on.

This resulted in a caffeinated haze of learning PHP over the course of four days. Oddly enough, I didn’t mind it anywhere near as much as I did the web dev thing. Hard problems aren’t so much an issue for me; it’s wrong problems I don’t like. It was grueling work and PHP is kind of weird, but I did about twelve weeks’ worth of work in four days and got a C in the end. …At least that’s what my professor implied. I should go check.

…Nope, their server’s down. Something with the programming, it’s not just down down. Geniuses. I am not making this up.

wow they suck

And they didn’t even make an error page like the config file wants, so their users get this ugly generated crap. My burning desire to see what they think of my PHP skills just kinda fizzled out anyway.

Oh, they’re back up. Ten minutes later.

…Nope, down again. I give. Where was I? Oh, yeah.

So, I passed my two remaining classes (presumably). The other class was the mobile app dev thing. I’ve volunteered to work on the production project we were working with, because the amount of development we’ve (…I’ve) done on the project is at that weird stage where if the next class were to pick it up, it’d be kind of weird and difficult because I used Kivy to help with time constraints, and at this point the design is basically finished and we were starting construction. But the blueprints are kinda hard to pick up. I need to finish the mockups and publish documentation on the customer requirements and design, and program in some functionality if I can–then it’d be a project someone else could pick up. There’s a real person waiting for an app. Actually, it’s a whole organization. They aren’t paying us, but we’ve (our teacher has…) promised to make this thing, so we should keep our word. And by we, I mean me, and one other guy who hasn’t showed up doing anything yet. Dunno what he’s doing, if anything.

The project didn’t make much progress while the class was running. None of us were too hot on the mobile app thing in the first place–the textbook was another dud, it was too outdated to be useful–so we already weren’t too confident. Then the prof is trying to be as hands-off as he can, which is admirable but nobody’s taking responsibility for the project, we don’t know the tech, and we have to code for two platforms, one of which we’ve never touched. So I pop up with Kivy. It’s cross-platform, it uses Python (which is easier to program than Java or Objective-C), and I already know roughly how to use it. I know introducing a new technology to base the project on means taking over responsibility for like the whole thing, but what else was I supposed to do? So, fine. I took responsibility for half a dozen coders.

Then I found out only one of them knows what git is, and most of them don’t have Python installed because they’re running Windows.

So I pull together a big documentation post–you can find it in the archives a few posts back. Instructions on how to set up a dev machine and resources for using the technology that weren’t cost-prohibitive–which, I might say, is more than the option of not using Kivy offered.

Still couldn’t manage to get things set up. I kept asking if people were having problems, so we could work them out. Nooo, we’re fine. Then–Why aren’t we working? The machine won’t set up! I don’t understand git! I don’t have time to look at the tutorials you linked!

Fine.

So we’re here. I’ll try to make something worth learning the codebase to pick up.

So where have you been?

I took a month off of coding. I picked up my ukulele. I watched some anime. I went on a couple dates with my boyfriend. I hunted for apartment furniture. I did paperwork for the school I’m going to this fall (a real school this time). I played some of my Steam games.

Right after the PHP thing and the semester ended, I had a long weekend at my older brother’s house in Chicago. We’re usually pretty laid-back when we visit there. We hang out together, play D&D, cook and eat good food, do a little shopping.

But my brain was still set on programming. It was like when you fall asleep reading Shakespeare and wake up thinking in iambic pentameter. (Anybody else? No? Anyway.) I brought Clojure for the Brave and True and kept trying to set up Emacs. I had gone crazy. It kind of felt good. Fortunately, Emacs was throwing a fit (looked like something with their network?) and I soon gave it up and rested.

I think it’s about time to return to the crazy. I have other stuff that needs to be done–there’s a math placement test I’m not looking forward to, for instance, but I should take it sooner rather than later so I can retake it if I’m not happy with the score. (You can retake it. It’s almost like this school is actively trying not to rip me off.)

But I do intend to keep my word and do some work on the mobile app. I’m working for free, so I’m choosing when to work, but I’m going to at LEAST get the documentation up on the GitHub repository. Then it can be forked and worked on at others’ leisure. (Yes, we got permission from the customer to use GitHub.)

I also kind of want to write a forum, and try to structure it to welcome nice people and discourage jerks, à la Jeff Atwood‘s various advice. I don’t know if that’s ultimately going to happen this summer though. We’ll see.

And I still want to learn Clojure. I also have a used copy of K&R C on my desk right now (a surprisingly small book!), but it’s going to wait a while before I get to it.

So what’s up with the new school?

I’m going to University of Northern Iowa. I feel comfortable saying that because the school has a fantastic reputation–I’ve heard dozens of people say great things about it, and nothing negative. That’s crazy. My old school couldn’t get that if they bribed the whole town.

I’m going part time to start off with, to see how difficult the classes are. I have this nasty habit of taking on more work than I can handle. I get excited about things, forget to say no, don’t know my limits too well (haha), and end up doing stuff like learning a programming language in a weekend and flushing the caffeine out of my system for the next week.

I have an apartment, which I’m moving into in August, and I have all my furniture because my mom subscribes to a local estate sale mailing list (an actual snail-mail list!) and we got a ton of stuff way cheaper than I thought we could. I even have a real couch! Okay, it’s a loveseat, which is like 2/3 of a couch, but still! I have a dining room table! I have most of my kitchen!

Oh, and the place is cat friendly. Jake, my Egyptian Mau, is coming with me. Egyptian Maus are kinda like tabby cats, but with some quirks. They’re patterned with more spots and fewer stripes. They tend to be possessive of one particular person, the hairs in their fur are individually striped, and they’re #@%^ fast and muscular–like, this cat has abs. I’m Jake’s person, so the mayhem that would ensue if I left without him… well, there’s this potted plant in the living room, and whenever he’s really mad, like when we were traveling to visit colleges and I left the house for a few days and left him behind, he pees in it. Right in front of us. He knows what he’s doing. If I left for college without him, the plant would probably die, and he’d have to find something else to do. We don’t need him to get creative.

That reminds me. I need to buy a philodendron before I leave. With a big dish under it. Just in case he gets mad at me.

I think that’s about it. My next big engagement is college orientation on the 22nd. Until then, this is a good enough update, so I’m finally done with this post.

 

Edit from the next day: That server-side scripting class with the PHP that I thought I’d barely passed? I just checked. My professor gave me an A. And I mean he gave me an A. Literally all my assignments were late, and I completed just enough of them to pass percentage-wise. He knew everything that was going on and why I was struggling so much, and he must have poked a loophole in somewhere.

I don’t know what to say.