An update, a project, a new book

I apologize for this post coming a week later than I’d planned! To be honest, life happened and I forgot I’d left you hanging until I got an email about a reader’s comment on it. Sorry about that!

No more suspense, then. Saturday’s event was a complete success! We didn’t have all seventy kids, though. We had thirty-five or so again, and since we’d scheduled for seventy, they were a lot more spaced-out. It was a lot more laid-back than the day before (when we’d scheduled to pack the house), and let us work with smaller classes. Which, as any teacher will tell you, is an easier crowd to handle.

This time, we also handed out live Linux CDs with mass-printed disclaimers on them about not installing on the host computer, etc etc, disclaimer of warranty/responsibility/legal cya stuff. We also passed out slips with the URLs of my FAQ and the GitHub where the game I used lives. (I’ve been meaning to write some decent non-techie documentation for how to use that thing…)

I had originally volunteered to be part of the Hour of Code portion of the event on Saturday, rather than the Linux part, but stuff got a little mixed up. The teacher who was going to take the Linux event hadn’t looked at the Hour of Code activities for a year or two and hadn’t realized that it had changed; it now looks like Scratch or Alice, not a text-based activity like she’d thought. She’d planned on letting the kids play around with Scratch (because it’s a good intro to code, which is why HoC uses a similar system) on their Linux live CDs.

When she emailed me with her plans a day or so before her event, I didn’t connect the dots immediately–it took me a few hours before I emailed back to warn her that she had a duplicate activity on her hands, and by then it was rather late. She showed up on Saturday as we were starting to prep the Linux room (I was kind of early and was helping another teacher who had been in the building for a while). I warned her again about her duplicate and she pulled up a computer to look at the HoC activity. But before she could really panic, I reminded her again that I had a different setup that I’d already used, and which had worked well. So I swapped places with another volunteer who was going to help in the Linux room (he went to HoC instead) and kind of took over working my system.

And that’s how I ended up mostly in charge of that event again. Combined with the Raspberry Pi she’d brought, I feel it’s safe to say it was a really good experience for everyone involved.

Mind, this teacher is totally competent and a great teacher–she’s no newbie, she just happened to be relying on old info and I just happened to have something good up my sleeve. I got to squeeze more use out of my script game, and I earned major brownie points with someone I respect. 😉

As the participants fiddled with the game, I stood up and gave a little background info about Linux and the open-source world. I’m actually a decent speaker, believe it or not, when I’m speaking on something I know well. I’m still a much better writer than speaker, but I’m reasonably good at giving impromptu lectures if I know the subject matter. I read audiences fairly well, and though I have plenty of other fears and self-doubts, public speaking isn’t really one of them. (What I’m actually awful at is video. I can’t read a camera. It’s not a good audience.)

The people liked my game so much. A good number of them thought it was funny–one of the older girls got to the part about forfeiting your firstborn son to Microsoft (it’s deliberately campy) and couldn’t stop laughing until I gave her a juice box. Her friend, in turn, discovered the potential to create text-based adventure fanfic. (What have I done??) It was only too difficult for one person, a young girl about eight years old who put up a valiant but losing battle against it until I redirected her to the games that came with the operating system instead and she started playing Potato Guy. (It’s a virtual Mr. Potato Head. The kids seemed to like it a lot.)

One of our other volunteers, a second teacher with minimal (nonexistent?) Linux experience, seemed to not like me very much on the first day. Don’t ask me to name her, because I won’t. I think we got off on the wrong foot, and it was exacerbated by the reality of how disorganized the first run through the activity was, which had been partially preventable if my (and everyone else’s, honestly) brain hadn’t been scrambling around like a drunken monkey. It’s not like we had a dress rehearsal for this sort of thing. I think the kicker was that I’d dropped her online class earlier this semester, and it’s hard not to take that personally; I know that it was because of work overload from my other classes and how well I don’t do with online stuff, but she couldn’t know that.

Whatever the cause, she seemed to kind of radiate disapproval the whole day; I tried to meet her halfway in my speaking to her, trying to apologize for the disarray, but I guess she wasn’t in a good mood. I gave up and got on with what I was doing. The second group was much better handled, at least.

But on the second day, she came back with what seemed like new respect for me, even before I took things over. Maybe it was the presence of the other teacher (the competent Linux teacher), who already had respect for me; maybe she’d spent the previous evening trying to fact-check my FAQ and decided that I was competent after all; maybe she decided that the way I bounced back on the second group the previous day meant I could run things all right after all. Maybe she’d just taken that second cup of coffee and the barista complimented her outfit, so she was in a better mood. There’s no way of knowing, I guess. But she was a lot more helpful then.

I rarely see people change their mind the way she did, and to me, that engenders respect in return–not stubbornly holding on to an ill opinion of someone like a lot of people do. I don’t know her very well, but I was pleased to have her help. So few people have the willingness to change a poor opinion of someone. I’m not trying to be condescending or even implying that I’m any better than average about that. Just… major kudos.

Anyway, that’s enough about the STEM thing.

I’m still kind of designing and turning over the job site in my mind. (I talk about the idea and my design changes for it here.) I want to build it, but I’m not sure where to start. I have basic, slightly dated knowledge of HTML and CSS, and of course I know Python, and I’d like to build the site on those. I think I’d rather not use big frameworks or anything like that–no Django, no Rails, DEFINITELY NO .NET, although I’ve cloned Django and I might poke through the code for ideas if I need to. I want to keep my code fast and lean and I want to know what everything does.

My experience with web design has been pretty limited since I was 13-15. Even this blog is just a plain old WordPress site. Still, it’s not the front of the web site I’m worried about; it’s the backend. Databases? Files? Search? It’s the real code design stuff that I just don’t have the experience to be confident with, which school can’t teach, and the backend stuff, that school won’t teach because it’s too preoccupied with showing you how Microsoft’s latest product “solves that problem for you” and teaching that instead. Paradoxically, this is a very good argument for trying to get into it and screwing it up so badly that I learn.

I’ve got notes in my design notebook about the stuff I plan to do better, which is a lot easier than actually trying to do it better. But I need to get to the latter sooner or later.

I’m reading a new book. It’s called The Charisma Myth–it’s all about how charisma isn’t inborn and can be taught, and then turned on and off like a switch. It’s a really good book.

It says that charisma is composed of three main components: presence, or how in-the-moment you are and how focused you are on other people when you speak with them; power, or how much influence you have to potentially change people’s situations for better or worse; and warmth, which is how compassionate and empathetic you are towards people.

Basically, others assess 1) whether they have your attention, 2) whether you have the power to do stuff for them, and 3) whether you seem like you’d want to. If the answer is “yes” across the board, you have their immediate attention and they want to be around you.

Then the book goes on to say what actions you should take to increase those three qualities. Focus on the feelings in your toes to bring you back to the moment and increase your presence. Visualization and thought exercises to increase your apparent power and warmth. So much of charisma is in body language, and body language is so hard to fake, that you have to learn to manipulate your brain into feeling confident and powerful, and warm and full of goodwill, so that your body language follows. None of those are bad things and none of them change your personality–they just make you kind of a more attractive person to be around. They make others feel better about talking to you.

The book goes on to explain that there are four styles of charisma (actually, it hints at more, but these are what it touches on).

  1. Focus: people are drawn to you because you pay attention to them, because you seem genuinely interested in what they have to say and respect their ideas and opinions.
  2. Visionary: people are drawn to you because you have some big idea you’re intent on bringing about, perhaps something that promises to improve people’s lives. They feel inspired by what you say and more creative after talking to you.
  3. Kindness: people are drawn to you because you broadcast loving acceptance of them for who they are. They feel they can be themselves around you.
  4. Authority: people are drawn to you because you’re in charge. You seem like an impressive decision-maker with some sort of power, so they think you might be able to help them or do things for them.

Everyone has some kind of charisma to some degree, often a mix of them. You shouldn’t try to adopt a style that is alien and unnatural for you, and you need to be wary that you use the right style in the right situation. You should also try to cultivate as many as you can, so you’re adaptable.

I naturally have a fair bit of visionary charisma, particularly in my writing. (But you knew that, didn’t you, you clever thing?) But I think I’ve been walking around with a lot more authority than I’ve realized. I think that’s a big part of why people were so wary of me in high school and thought I was unapproachable. I wear nice clothes–I don’t generally leave the house in sweats or yoga pants unless I’m sick or in costume, and I’m lucky enough that my family can provide me with more expensive, good-quality clothes.

I used to be able to sneak into the school library to sit out a period I technically wasn’t supposed to have free under the usual rules, without leaving the paper trail of signing in, by walking past in my wool trenchcoat with a gait that suggested I was supposed to be there (I copied the quick, confident walk of the school administrators). The librarian rarely looked up, and when she did, she ignored me. Even though I had turquoise hair at the time. My body language just said that I was not to be stopped and bothered, so she didn’t. And when I sat around reading and knitting, nobody thought I was out of place.

This mostly went away when I got to college, where nobody knew I was underage until they got to know me a little better and had already seen that I wasn’t so unapproachable. And the average level of confidence is higher around here, so I didn’t stand out quite so much.

So, apparently I channel authority well? But… that’s not the most appealing of the charisma styles to me. I’d rather make people feel respected (focus) and then inspire them to go do great things (visionary). I don’t really want to boss people around. If other people rely on you to give orders, they can’t handle not having you around, and they can’t go off and do great things on their own. Besides, it’s more fun to be doing great things too rather than making other people do them. I prefer the power that comes from controlling things (like computers), rather than that of controlling people, and I’d rather persuade than barge with my ideas. I’d be okay with directing and organizing a bunch of people to do something they want to do, though. There’s a lot of overhead and grunt work in organizing a collaborative effort. But it probably wouldn’t be as fun as doing things myself.

Uh… looking back on that paragraph… I wonder if I’ve just read Ender’s Game one too many times or if there was a seriously deep reason I connected with it the first time I read it. Anyway.

Focus isn’t something I currently do well, because my mind wanders so much. Even if it’s wandering on something the other person just said, it doesn’t make them feel so great if it looks like I’m zoning out. I’ve decided I’m going to work on cultivating that.

As for kindness charisma–I actually do care about people and try to think the best of others. I also happen to be completely awful at expressing it. (It’s an INTP thing.) I’m actually a pretty warm person, but the associated body language isn’t really wired well into my brain. (Authority’s wired in instead. I’m so girly.) I tend to surprise people by doing nice things for them instead, which catches them completely off guard.

Here’s another story. I was taking a college Psych course in my senior year of HS, and I was working on knitting a super-long pink scarf as a Christmas present for one of my friends. After having worked on it during class for a couple days, a girl comes up to me and asks, “Hey, will you knit me a scarf?” In retrospect I think she meant it jokingly, but I was so caught off guard that someone had talked to me that I blinked and said, “Uh… sure. What’s your favorite color?” It took a minute for her to recover and reply. The next day, she asks, again jokingly, “Hey, have you finished my scarf yet?” I say no, I want her opinion on the color first, explaining that I don’t have any light purple yarn and offer a skein of baby blue instead. She’s taken aback but accepts it and I start knitting. I give it to her a few days later (I was really fast at that point through practice). By then of course she was totally cool with it and thanked me.

Knitting seemed to make me look more approachable, I think. A lot of people were more willing to talk to me while I was doing something so low-key. Especially working on something as absurdly pink as that scarf was. (It was a copy of the really long, bright pink scarf from Homestuck. It was like eight feet long or something crazy and took me… I think well over a month?)

I know that book isn’t technology related, except in the sense that people skills are important in this field, as in any. But psychology is also one of my interests, as are self-analysis and social analysis, so I hope my readers don’t mind my going off on tangents like this.

For sticking with this really long post, here’s a set of Muse songs. These three were among my very favorites for their incorporation of beautiful classical music. Part 3 is particularly striking.

It seems there’s also a Part 4 on YouTube that I’ve never heard before? I’ll investigate it when it isn’t 3 AM.

 

 

 

Friday’s STEM event is over

There’s another round tomorrow, twice as big. I’m not sure how well we’re going to handle that. This group was big enough!

They were mostly 7th graders. There were three HS freshmen in the group, I’m told. They all looked really young and the main group was huge–ostensibly 35 kids, but it seemed like more. After Hour of Code, they were divided into two groups between the virtual reality room and my Linux room and spent half an hour in each. Both rounds, the group I got filled nearly every working computer in the room.

And they… liked my game?

When I learned I was getting a younger group than I thought I was getting, I started wondering how a really nerdy text-based adventure was going to go over. But they either liked it enough or wanted to impress me enough that things went really smoothly. I’m not questioning it.

I’m exhausted. I’ll update with more details later.

I made a thing!

I wrote this text-based adventure script to introduce some basic Linux commands. It’s mainly for the Linux thingy I’m doing on Friday with the Plant Yourself In STEM event, but it’s probably useful to more people than that.

I only got the idea earlier today (err… yesterday now), so I haven’t spent a TON of time on it. I spent more time writing the story than putting it into the code, which is brain-dead simple (validation of specific, static commands). There are certainly more commands I could include and better ways to write it out there, but right now it’s functional and goofy and not boring or over-technical. I’m quite pleased with it.

It lives here and it’s MIT licensed, so you can play it for yourself and/or improve it as you please.

Plant Yourself in STEM: Linux FAQ

I. Questions about Linux

Q: I want to play with Linux some more.

A: Great! You have a few options.

  1. Use a virtual machine. Here are my instructions on how to make one. I recommend this one most because you can run the software well on most modern systems, and there’s no risk of accidentally overwriting Windows or whatever you’re running, and losing all your files in the process. Also, if you break a virtual machine, you can reload it from a snapshot or just make it over again. VMs take a little patience to make the first time, which is why I wrote that tutorial. (It contains a lot of stuff I had to learn by trial and error.)
  2. Use a live CD or USB. Google is your friend on making these, but check at least two tutorials when you make Linux-related stuff. Be careful not to install it over your current system.
  3. If you have money: get a Raspberry Pi and its associated accessories. This can be fun, but you’ll probably end up dropping quite a bit of cash on it. If you want to anyway, again, Google it.
  4. If you REALLY know what you’re doing and this is your own computer, not your parents’, you can make a Linux partition. Be careful with this one. You have to be a little more technical to get it right, and it’s risky to get it wrong. You might want to choose your distro a little more carefully with this option too, to make sure it’s one you like.

Q: What’s with all these different “distributions”?

A: Linux distributions, or distros, are just different varieties of Linux. They all have the same stuff running at the core of the system, roughly, but they can have different software installed and sometimes different commands. Each distro is meant to serve a particular purpose.

Ubuntu and its variants (Kubuntu, Xubuntu, Lubuntu, etc) are meant as a beginner’s Linux–they’re designed to look roughly like Windows and be as easy to use as possible. Linux Mint has a clean design for users and programmers who want something simple, elegant and effective, without tons of shiny graphics. Debian and Fedora are often used in servers or on the personal computers of programmers. Kali is for network security administrators. There are even advanced distros such as Arch and Gentoo, for increased customizability or transparency to the core system below–Arch doesn’t even come with a desktop environment installed, you start out with just the command line interface.

It’s best to start with a simpler distro, like Mint or Xubuntu (which is preferable to normal Ubuntu because of the interface it comes with–it runs faster and I think it looks better). I’m fond of Debian, personally. GNOME 3, the window system it comes with, is rather heavyweight but very shiny. You can put different interfaces on it, though.

Q: Wait, what do you mean “interfaces”? What’s a “window system”? Are they different things?

A: In Linux, the command line is the default interface that’s built into the system. But you can put window systems over the top of it. You know how Mac desktops look different from Windows desktops? Like, the windows look different and Mac has the dock instead of the taskbar? That’s because they use a different window system. Linux has tons of these and you can just swap them around.

“Interface” is a more general term than “window system”–the command line is an interface but not a window system. (Apart from that distinction, they’re interchangeable as far as I know.) That’s semantics, though.

Q: What makes Linux so great, anyway?

A: Lots of things! There are so many reasons to use Linux over Windows (and, to a slightly lesser degree, over Mac)–ranging from the practical to the aesthetic to the philosophical. Here, I’ll list a few of the reasons you probably care most about, but understand that this list is by no means exhaustive.

  1. It’s free! Not only are the vast majority of distros free to download and use, but you can change them however you like or make contributions to them.
  2. Linux is faster, especially on old hardware.
  3. It’s far, far more secure than Windows. Linux very rarely gets viruses, even more rarely than Mac OS X, and when viruses for Linux do appear, an update comes out very quickly to protect the system. But it’s hard to write viruses for Linux because it’s designed so well.
  4. They’re easier to program on. Linux comes with better tools for coders and makes things a lot easier. Tools like git and shell scripting make Linux a far better choice than Windows for a coder.
  5. Linux has a powerful command line, which Windows lacks. (Mac’s command line is okay though.)
  6. Package managers make it easy to install and remove software without leftover files like you get on Windows and Mac. This saves space on your hard drive and keeps your programs working well.
  7. Linux is easy to use and customize! You CAN learn to use Linux without touching the command line (although you’d be missing out on a feature, and if you’re coding you should know it). The basic controls aren’t that different from any other operating system–it just has a few extra tricks it can do.
  8. Linux is becoming a platform for gaming! It’s not totally there yet, but there’s serious progress being made. Steam has certainly jumped on this bandwagon with Steam OS. Personally, Humble Bundle is my favorite place to find Linux games, and it’s for a good cause. And remember what I said about Linux being faster? Your games will perform better. It’s pretty awesome.
  9. Free software–you don’t have to pay for Microsoft Word or Photoshop, as Linux has open-source software that does the same thing. LibreOffice and GIMP are great programs.
  10. It’ll teach you about how computers work! Linux is a great behind-the-scenes of how computers function. To me, that’s really important and cool.
  11. Free support from a great community. Got a question? Google it, and if you can’t find anything to help you, there are forums full of people who’ll help you out for kicks–they just like fixing stuff and making users happy because it’s challenging.
  12. The power to fix your computer when it breaks. Windows doesn’t let you see where stuff is failing, it just pops up with the box that says it’s trying to diagnose the problem and fix it–and I’ve never heard of that working for anyone. Linux lets you see what’s going wrong, if you know where to look, and lets you fix it instead of making you give up. Linux boxes don’t really get the kind of issues that can be solved by rebooting–they work too well for that–but they do occasionally run into bigger blocks where Windows would just throw up its hands and tell you to reinstall.

I’m stopping there. Twelve is a nice round number, and I don’t want this to go on forever.

Q: How do I learn Linux?

A: This is actually a really good question. I was asking the same thing about a year ago. Now that I know from experience, I’ve covered it to send you in the right direction.

II. Questions about coding

Q: How do I start learning to code?

A: Starting to code is easy! There are great sites out there to help people take the first step into programming–I like codecademy–and there are plenty of books too–like this one, which is available for free (although I suggest buying a hard copy or tipping the author if you can). If you’re intimidated, you can start with HTML and CSS and make some basic web pages, in which case I recommend this book.

Q: I’ve been coding for a while… I know a language or two, but I feel like I’m missing something. Open source is really hard to get into and everything is confusing.

A: Basically everyone feels like this after working with books and classes and tutorials for a while. It doesn’t go away with more books and classes and tutorials. It starts to go away once you try to build stuff on your own. Keep your eyes peeled for stuff you think you might be able to build, and then try to build those things. Even if they’re terrible at first. Trust your ability to learn what you don’t need in order to finish your projects.

You’ll feel stupid. You’ll think your program sucks. You’ll get frustrated working on a problem and walk away. But then you’ll figure out something that might be the answer while you’re making dinner and you’ll rush back, and you’ll put it in, and maybe it won’t work but sometimes it does and sometimes it helps you figure out what works, and everything is exciting again. And you’ll forget you were making dinner, and you’ll keep coding and forget to eat at all while your cat eats the lunch meat you left out.

If you love it anyway, you should keep coding.

At some point, after months spent alternating between frustration and excitement, it’ll hit you that six months ago you would have absolutely no clue about anything you’re doing now. You’ll realize that, although you may not be as good as the open-source folks yet, you do know a lot of valuable things that would massively confuse most people.

Q: Uh… really? It’s that hard? But I bought a book that says I can learn Java in a week.

A: You might be able to learn Java syntax in a week, but it’s really just another tutorial. Programming is a separate skill, agnostic of any one language but tied to all of them, and it takes time and effort and trial and error to learn. Also, don’t start with Java. Start with Python, Ruby, or web development.

Q: Is HTML a programming language?

A: Not technically, but you can still call yourself a programmer if you want, I won’t jump on you. HTML is a markup language (HyperText Markup Language), and it isn’t Turing-complete. That is, it lacks the different logic structures that programming has. HTML is more just a way to tell the computer how to display stuff, and the things you write with HTML aren’t interactive. To make interactive web sites, you need to use a programming language like Python, Java, PHP, Ruby… etc. You don’t think about it, but most websites you use on a regular basis have tons of programming behind them–it’s not just HTML and CSS.

Someone’s going to tell you you’re not a real programmer if you only code HTML and CSS. Ignore them. What matters is that you’re making stuff.

III. Inevitable diversions

These are here because I don’t want to spend activity time on them.

Q: Can I use Linux to be a l33t hax0r and break into computers?

A: Yeah, if you’re an idiot who can’t figure out anything more fun to do with your computer than break into someone else’s. It’s a lot more technically difficult and interesting to build things rather than destroy them, and it also pays more and doesn’t get you into legal trouble.

Also, that’s not what a hacker is. You’re thinking of crackers. Hackers are the people who build open-source stuff, and they don’t like it when you mix up their names with criminals.

Q: Will you teach me cracking?

A: No.

Q: Should I use Kali Linux as my desktop OS?

A: If you want to be a white-hat, it makes sense to know Kali and the network security tools it comes with. I wouldn’t recommend it as a desktop OS, though. A lot of people are attracted to Kali because it sounds edgy, though, and that’s not a good reason to use it. Don’t do anything stupid with Kali.

Q: What are the best energy drinks? Is Monster good?

A: I covered this, actually. And no, Monster is toxic waste–Full Throttle, NOS, or Venom are much better.

 

Plant Yourself in STEM: My school is running Hour of Code!

And I’m involved!

I was a volunteer last year, too. It was a very popular and successful program, so we’re doing it again this year–only now we’re not only full but overflowed. Originally, we were supposed to run the program on Saturday, 12/12. But we’ve got two more schools who want to send their classes, and they didn’t want to do Saturday because it’s not a school day (by the time they’d heard, Saturday was full anyway), so we’re running on Friday too. In total, we have 105 people coming. It’s really exciting!

I’m going to be there both days. On the first day, I’ll be talking to 35 7th-9th graders about Linux and helping them figure out some basics like how to install stuff and where the web browser is. Maybe I can fit in a few command line tricks, too. I’ll be putting up an FAQ on this blog for them later. We’re doing it off a bunch of live CDs that Raine’s going to burn. And the “we” is kind of questionable–I may be handling that event on my own because volunteers for Friday are harder to get since some of our Saturday volunteers have to work.

On the second day, I’ll be helping with the actual Hour of Code event, which will be attended by 70 people (!). It’s totally booked, so we have to make sure every computer works that we can and see that there are no problems logging on. I think we’re getting an older group this year. We had a lot of kids last year–like, younger grade-school kids, starting out at maybe seven years old? And they did really well. I wonder if the older kids will get bored more easily. Some of those seven-year-olds whipped through like five Hour of Code activities and then looked at me and went, “What next?”

Hopefully if that happens, we can just send them up to look at our Oculus Rift and Google Glass and Raspberry Pis and some other neat gadgets we have. Or one of the other events… demos… activities… panels?… whatever. We were discussing an activity on how to make crossover cable, too, but I don’t know if we’re doing it–both because of price with how many people are coming, and with the fact that making crossover cable can be really bloody frustrating. And I think Raine is going to do another Linux event on Saturday. I’d be helping her, but Hour of Code needs programmer assistants, and Raine’s more than capable of handling the Linux panel on her own.

They didn’t really give me specific instructions on what to teach in the Linux thing. I’m going to run one of my VMs and see what I can come up with–it has to be doable on a live CD, not overly difficult, and not have a ton of room to make trouble or get off track. For example, showing where the browser is will come last. Someone will probably figure it out anyway and start messing around on the Internet–I’ll have to get them back on track. And someone will stop listening to me and start just exploring the system–I’m not going to stop them. Proto-hackers 😉

I guess they trust me enough to just send me off and trust that I know what I’m doing and will whip up something decent without a bunch of guidance. Or they didn’t think about it, but that’s ok because I’ll do just fine on my own.

I think I should draft my FAQ and the activity outline now.