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.

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.

My idea file

If ideas were actually worth something–as people say when they say things like, “I’ve got a $10M idea”–I’d have been rich a long time ago.

Since they’re not, their worth is mostly in the sharing. So I’m dipping into my project ideas file and pulling out wads and wads of what is unfortunately not cash, because there’s no way I’m going to get to everything.

Most recently updated June 29.

A phone app that splits restaurant bills among a group of friends

People complain about this all the time. Let’s make our smartphone into a somewhat more objective judge, kill the argument, and maybe help our wait staff get better tips.

I kind of want to do this one. Most of the issues are in UI design. It doesn’t seem too difficult. Maybe this should be my next GitHub project.

edit: of course, this has been done, and it looks like exactly how I would have done it. I wonder if it’s on Android though.

Todo-list app

But not the normal kind. What we need is something a little more interactive. We need to make todo software with a messaging protocol in the back that lets other people request additions to your todo list. You would then be able to accept or reject them. Designing this software would take a lot of user research and understanding of psychology, in order to program the right features. For instance, should the person requesting a task be allowed to see when it’s scheduled to be done, or what priority it has? There are both benefits and awfulness in that suggestion. (Mostly awfulness, I think.)

I think it should also have priority, deadline, and/or likely completion time data attached to each list item, and if the user indicates that a certain time slice of their day is open, it should suggest the optimal task or tasks to fill that spot. The algorithm might well be kind of tricky, though; it’d have to work around not always having all three data points.

Also, it would probably be fun to add game elements to this app. Maybe it should award points for tasks completed, and award more points for higher-priority tasks. This probably would result in people losing productivity due to playing with the app and fiddling to get more points, though–like breaking up tasks into tiny pieces they can “accomplish,” or ranking everything as high priority. You could choose to only award points for tasks set by other people, but then they’d rank everything so as to give you the most points, thus making their task appealing to complete.

(Software development has seen time and time again that if you award points for stuff, even if they’re worthless, people will do crazy things to get them. No one has much of an explanation as to why.)

Oh, speaking of which. You’d probably have to come up with some way to make people not mark all their assignments to others as super important–some way to weight each person’s additions to others’ to-do lists so there’s a normal distribution of priority among what they send, and they’re not marking everything important. But that causes its own problems.

This is a really neat piece of software for design issues. I kind of like it. Also, Paul Graham has asked for someone to build this a couple times (although he didn’t go into this detail).

Air conditioned motorcycle helmets

I don’t ride motorcycles, but I’ve noticed people tend to not like wearing helmets on hot days. Why don’t people make full motorcycle helmets–the really protective, full face shield kind–with air conditioning? We have, like, those single-can fridges; can’t we put a rechargeable battery in a helmet and make it work? I know batteries are heavy, but… so are those helmets, anyway.

Low-commitment freelance comics

A web site that connects comic writers with comic artists, for the purposes of making one strip at a time. Comics don’t have to go on hiatus because one of the creators has fallen ill or quit.

ReceiptStash (I have dibs on this one)

An app that stores receipt data instead of forcing businesses to use so much wasteful paper. Bonus points if it’s attached to the user’s debit card # rather than a username, because this would mean it could be used as a tool to recognize card theft. It’d also be really easy to load the data for use in a budget tracking app, which might solve a lot of people’s problems in that area.

Penguin Phone

Make a cell phone that runs Linux. Not Android, but pure Linux, with a command line and a filesystem and no unnecessary pre-installed apps.

I think our phones could do more “laptop stuff” than they currently do. Sometimes you need to make little corrections to code–fix broken links and so on. Why not use your phone? It’s as powerful, hardware-wise, as a computer. Why isn’t it as powerful software-wise?

Happy Nickels

When people experience something that makes them happy, they like to post about it on social media. (Along with a lot of other, less happy things they post about.) What if there were a social media app that was intended first of all for phone use, where every time something made you happy, you pull out your phone and post about it on this dedicated social media app.

But to do so, you have to donate a nickel to charity, in order to share your happiness with someone else. No one cares about a single nickel. You can’t buy anything with it, really. It isn’t important. Until you get a million people posting and spending nickels three times a day. Ideally, this app would be monitored to make sure that people were only posting things they’re happy about, so it’s a pleasant social media app to peruse.

True Cloud Computing

A web site that stores an individual’s computer settings in a lightweight format. Like, a Dropbox for the files, a simple word processor, some games, some other apps. Like a phone that just runs in a browser and everything’s stored on the server. Kind of like Chrome OS, without the attachment to an individual machine. It needs a really good API for people to develop for it, too. You could make a Linux distro that makes the browser part more transparent–it would still be different from Chrome OS, because Chrome OS starts from the individual computer and works onto the Web (and it’s not accessible everywhere) and this would start on the Web and just happen to work with an individual machine–any individual machine.

Real-Time, Real-World (I really considered making this one but it’s set aside for now)

A game where you take care of a third-world/impoverished family, and you can buy upgrades to get them technology that makes their lives better. What you buy actually goes to buying that technology for third-world families. If like 300 gamers buy a steel food cabinet or a well or a hygienic latrine or medicine for their virtual family, a real family somewhere gets the same thing.

Sheet Music Is Annoying

An app for musicians that displays sheet music, chords, or tabs, and can be controlled by a pair of Bluetooth-enabled pedals which flip the pages without the musician using his or her hands. Actually there are lots of ways to do this.

RSS, Get Off My Desktop

RSS, but not broken any more. It should use browser extensions or web pages rather than desktop software. It should use Internet history by date and caching to determine what content a user has seen.

Whizgig

I hate how job sites are laid out. They’re mostly just designed and commissioned by MBAs, and they suck because their search doesn’t work and the format isn’t effective. I think I could do better if I put my mind to it.

I think they should be laid out so that when someone posts a job, it feels like filling out a social media profile, and when someone looks for a job, it feels like shopping at an online site. That sounds obvious when you say it, but if you look at job sites, they really aren’t laid out like that.

Even Dice relies on kind of awful tags and whatnot–for example, “senior level” means very different things to different employers and you don’t know what you’re getting. Even on Dice, it’s hard to filter out the jobs you’re qualified for. Nobody can decide on a standard set of job titles, either, so someone searching for “Junior Python programmer” might totally miss the listing for a “Python Charmer” or “Code Ninja” or whatever weird thing they’re calling their job.

Their search is terribly broken, too. I’m a programmer, not a registered nurse–so why have I seen postings for RNs while searching for a job? That has actually happened, I think more than once.
There’s a lot to fix here if I put the time into it.

Jazz Band Beeping (this idea is something I want to see happen, but I don’t know how to do it personally)

Fast food restaurants and hospitals have one very annoying thing in common: repetitive beeping sounds. These are annoying to customers, and stressful to patients, workers, and nurses. But why beeping sounds? There’s nothing special about them that any other noise couldn’t do.

So, if you want to change it, here’s an idea.

A restaurant or a hospital room might have several different machines. Maybe two or three, maybe eight. To distinguish them, you assign each a musical instrument that would fit into a jazz band–violin, harmonica, cello, drums. You give the bass to the one that’s always running. (There’s always one. Heart monitor or whatever.) You assign the local network (the room or the restaurant) a metronome machine that keeps the instruments in sync. All the other machines in the room get their own instruments to represent them, and the nurses get instruction that hearing a harmonica is a Very Bad Thing, and hate harmonicas forever after that.

Aside from harmonica hatred, it would make those environments much more relaxing. Jazz is unstructured enough that as long as the rhythm is maintained, musical instruments popping in and out of the melody are A-OK.

The trick with this is that it would need generous funding, because you’d probably need to get a hold of medical equipment, which is expensive, and/or fast food equipment, which is expensive and often proprietary and secret. But I think it’s one of those good ideas that sounds really weird when you first hear about it.

This one probably exists as an open-source project somewhere

You know what would be really cool? A script or gedit/Sublime extension that changed your text so it fit within eighty columns. Same for code, it should be able to recognize file extensions and put in the appropriate thingy to continue the line of code. That sounds a little more difficult though.

(Ooooh, maybe I’ll write this one in Clojure later.)

Programmers and writing

Okay, so I started this post a while ago, not entirely sure what I was writing about. I wanted to write about how I’d suddenly realized I’d gotten to the point where I could tell the differences in personality between programmer bloggers, and how some of them posture more than others in order to look logical and educated and authoritative, and how this didn’t actually seem to correlate with whether I agreed with them. I wanted to talk about how readers of programmer writing expect posturing so much that it takes a real effort to sound friendly and welcoming instead, without the help of body language, but that this allows one’s writing to become more convincing, more motivational, and more enjoyable to read.

Then I thought, why am I writing this? If it’s about not writing like a snob, I’m preaching to the choir. You guys don’t do that. My own post sounded like an ironically self-indulgent rant about why how I write is better, or something. (It’s true that I put a lot of energy into not seeming arrogant. I hope it works.) Or, worse, it might sound as though I were accusing you of needing correction in this area. Neither was something I was aiming for.

Rather, I wanted to warn you about these behaviors, because of the effect they’d have on you as you read about your craft. But I didn’t pin this motive down until I read the intro to an online book LucasFF linked to me, and found this couple of paragraphs:

If you look for help you may find people are not patient with you. You may find that, rather than help, they take the time to express how much they know about the subject. Experienced programmers might tell you that you are wrong. The subtext to their tone might be that you should stop now, rather than inflict your bad code on the world.

After a couple of engagements like this you may decide that you are not a programmer, or don’t really like programming, or that you just don’t get it. You may have thought that you once enjoyed the idea of building your own programming language, but now you have realised that it is too abstract and you don’t care any more. You are now concerned with your other passions, and any insight that may have been playful, joyful or interesting will now have become an obstacle.

For this I can only apologise. Programmers can be hostile, macho, arrogant, insecure, and aggressive. There is no excuse for this behaviour. Know that I am on your side. No one gets it at first. Everyone struggles and doubts their abilities. Please don’t give up or let the joy be sucked out of the creative experience. Be proud of what you create no matter what it is. People like me don’t want you to stop programming. We want to hear your voice, and what you have to say.

Realizing why this post had come about, I decided it was worth writing after all.

A friend of mine emailed me a few months back. He was replying to my request for collaboration on an idea I was toying with. The response came late, because he’d been dreading disappointing me with the news that he’d stopped programming. He’d had it with the infighting.

This is something you need to protect yourselves against. Creativity and motivation are fragile creatures and must be guarded.

Three types of writing

Some programmer writing is just kind of awful to read. It goes off on rants. It boasts about the writer’s knowledge and accomplishments. It insults the reader, or the writer’s coworkers or friends. It’s unprofessional, sexual, or discriminatory. Or it’s any of a dozen other things I haven’t listed.

Sometimes that writing has a valid point to get across, and sometimes it doesn’t.

My thesis here is that if you’re not sure of yourself, it’s not worth reading anyway. There’s a wealth of tech writing that doesn’t do these things.

But I’m getting ahead of myself.

Quora demonstrates this divide a lot. Questions get a lot of variety in their answers. About once a day (that I see when I’m on), someone posts this question:

“Hey so I have this HUGE GREAT IDEA and it’s worth $10B but I don’t know how to code it. Can I get a developer and pay him 20% equity to build my great idea? Should I make him sign an NDA so he doesn’t steal it?”

and the answers are, on the whole, predictably snarky. It’s funny to read the first few times you see the question, and then it gets boring. But there’s usually a range of variation, from

“People like you are the reason I never tell anyone I’m a developer. We’re sick of being badgered with people’s ‘billion-dollar’ ideas that usually don’t even make sense or have a market.”

to

“Dude. Execution is everything, the idea is nothing–nobody would buy your idea for $20. Go out and learn to code, or figure out something else you can bring to the table to actually earn your ridiculous 80% share. [then optionally actually answers the question]”

to

“[actually answers question]

“But you’re unlikely to be able to do that, I’m afraid. Most developers have lots of ideas of their own, and they’re more likely to invest their time in their own idea than yours, especially since they’d get all the reward for building their own idea, not just a fifth of it. It’s hard, time-consuming work to build things. If you really believe in your idea, you could start building it on your own by learning to code, and then see if you can get others on board once you’ve made a prototype.”

#3s usually get comments back from the OP, because even though they’re basically saying the same thing as #2, they do the OP the courtesy of actually answering the question first (the order is more important than it seems) and then giving them the benefit of the doubt that they’ve asked out of honest ignorance rather than from a place of superiority and disdain for working devs. In other words, they treat the OP like an adult, even if he’s a 14-year-old boy on a cheap netbook somewhere.

In turn, OP usually listens to them. #1 seems really hostile–an outright declaration of animosity merely for the fact that OP dared to ask such a question (which is never a good approach; if the OP was really so despicable the best thing to do would be to deprive them of an audience)–and #2 is condescending and unapproachable, if somewhat more on topic. #3 is reasonable, diplomatic, and friendly. They’re offering the help OP came for, even if the message they have to deliver is bittersweet.

Be aware of what you’re reading

Joel Spolsky of the blog Joel on Software, as much as I like his posts for other reasons, has a lot of #2 posts on his blog. “If you don’t know this, you’re incompetent!” is a common theme, and to me there are two outcomes to reading that sort of thing: either you know the thing he’s talking about, and you feel smugly superior or think “at least I’m not incompetent at this thing”, or you don’t know it and you think, “oh, great, another thing I don’t understand, I’m farther behind than I thought.” If the latter, maybe you’ll think about learning whatever it is, but now you’re feeling bad about your skills and that doesn’t help anyone.

On the other hand, Jeff Atwood of Coding Horror seems way more approachable, because he’s willing to admit upfront he may not be competent at everything, including the thing he’s talking about. He gets pretty upset when he hears about people who actually can’t write code at all pretending they’re programmers, but I’ve never seen him go off on a wild rant because they didn’t know the difference between UTF-8, ASCII, and Unicode. (For the record, I read both posts all the way through.)

I’m not saying JS’s post on character encoding wasn’t worth reading. I’m saying it was a #2 post, not a #3. It has useful information, but instead of introducing you to it in a friendly way, it kind of beats you over the head with it.

In this article I’ll fill you in on exactly what every working programmer should know. All that stuff about “plain text = ascii = characters are 8 bits” is not only wrong, it’s hopelessly wrong, and if you’re still programming that way, you’re not much better than a medical doctor who doesn’t believe in germs. Please do not write another line of code until you finish reading this article.

It was worth reading, to me, but if his aim was actually to educate people on how to use character sets in code, this was a really roundabout way of doing it and there are several things that are ishy about the post.

  1. I’m not going to infect someone with Ebola if my web site shows up with weird question mark characters. So far, nothing I’ve written has been a matter of life or death depending on if it works in Turkey. This holds for probably most programmers. Ergo, the comparison to a doctor who doesn’t believe in germs is straight-up overdramatic yelling at people who happen to not know this thing you know.
  2. Most of the post is a lecture on the history of character sets and how they work, which, while somewhat interesting, actually doesn’t have much to do with solving the problem JS is complaining about.
  3. His actual message, if his intent was really to stop broken international code, could have been condensed to: “PSA–make sure you declare your character sets, folks! Using UTF-8 will make international users’ lives easier.” This would fit in a Twitter post.

I know I’m kind of picking on Joel, here, but he’s not actually a bad guy. He’s written some really cool software and I think his writing is interesting. This post I’m quoting was written in 2003, and I imagine he’s changed a lot since then. Really I just want to dissect his old writing as an example.

What if you were a new programmer, stumbling upon this post? You’d be really discouraged.

Character sets? What’s a character set and why is it so important? But this guy sounds really impressive and he knows all this history… how am I supposed to know everything I need if there’s really important stuff like this and I’ve never even heard of it? Maybe this is too difficult.

Yeah. No. That’s not a good situation.

Add in the fact that this person, if they have an online presence and are asking for help, is probably hearing from ten different people:

Wait, you’re learning PHP? Why would you put time into learning such a horrible, broken system?

Your design is all off and your conventions are sloppy. Can’t you even indent properly?

You’re going to be horribly ineffective unless you learn how to work with APIs.

Burn that book, you won’t really learn anything effectively in 24 hours like it promises.

You’re not a REAL programmer unless you’ve made something someone will pay you for.

Java is for sissies, here, learn C instead.

That framework does too much for you–you’ll never learn unless you build from scratch!

Why are you still using Notepad++? Let me introduce you to…

Learning Visual Basic first will ruin you as a programmer.

Wait, you don’t know anything about pointers? Seriously? Oh, you’re self-taught, I get it…

…and you’ve got one ex-newbie programmer.

Don’t let that be you–on either end, but particularly not the newbie end. This kind of talk, even if the writers think they mean well, is nothing more than posturing and bullying. It may not be all #1. Some of it may be #2. But unless it’s #3, it’s not something a beginner needs to hear. Even #3 writing is colored by an individual’s specialties and preferences.

Be aware of what you’re reading.

Some writers just posture a lot, without any mind to whether it’s actually justifiable. When you don’t know much about your field, #1 (ranting with no point, or a bad point) and #2 (ranting with a point) are hard to tell apart. Heck, #3 writing can be wildly off target too–but it’s less likely to be if the writer doesn’t need to resort to grandeur to get their point across, and furthermore, #3 writing doesn’t make you feel bad about yourself. Yes, that’s important. You might be thinking this this approach is some crazy feel-good thing where you only read stuff you like, whether it’s true or not.

But how important is it, to a beginning programmer, to have everything right? It’s far easier to realize, “Oh. So that polite guy actually didn’t know quite what he was talking about and it’s really more like this,” than it is to get over the kind of verbal abuse listed above. Your priorities should actually be geared toward protecting your motivation, rather than always getting accurate info. I mean, unless you’re programming kidney dialysis machines first thing, it’s better to be a wrong newbie than a newbie so discouraged that you stop.

Be careful, fellow larvals. Guard your motivation, and be cautious about what you read.