Shawna C. Scott

Learning to hack, one day at a time

Archives (page 3 of 4)

Editorial Note

I discovered that my little headers with resources and topics and such were mostly just a duplication of effort, and so you won’t see them from now on. I will definitely still provide links to any resources I use, and of course discuss what I’ve been doing. Soon, I will add a link somewhere to my Hack Track page, so it will just be there all the time, not per post.

Expect lots of changes in how this page looks and acts in the near future. And if you don’t see changes soon, poke me!


Streamlining My System

Running Total Hack Time: 78.5
Topics: Portland Code School, streamlining workflow
Resources: Google, Team Treehouse

Through a completely unexpected chain of events beginning on Tuesday, today I signed the paperwork to start learning at Portland Code School on Monday! I am super excited to start their Rails class, and so I cancelled all the rest of my hacks for the week (except Women Who Hack, since it’s awesome and I help out with it). I did that so I can focus on getting myself set up well for the class. There are a few fiddly workflow issues I haven’t yet worked out, so I thought now was the time to do that, before I begin the whirlwind class-and-full-time-work schedule of the next few months.

One of the things I’ve been meaning to do (and which seemed like low-hanging fruit) was set up the “subl” command so that I can actually open things with Sublime Text 2 from the command line. I successfully accomplished this using this gist, although I changed this line:

ln -s /Applications/Sublime Text /usr/local/bin/sublime

to just say “subl” at the end, because I didn’t want to have to type the whole word every time, and so that if someone else uses my computer, they’ll be familiar with the command.

Other goals before class time include finally getting ZNC to be connected to Colloquy and/or another IRC client. I managed to finally get it installed on my server last night after much ado. But I have no idea how to do the part that I feel like should be easy and hook it up to my client. Ah well. I’m sure I’ll get it soon.

I also want to fix my iTerm 2 setup so that it will actually be a decent color scheme, and be color coded in a useful way; work a bit on streamlining this site to my liking; and set up storage space on my AWS account. Once I do all those things, I’ll be working on the new Team Treehouse Git Basics tutorial.

I’m sure I’ll not get all of this done by Monday, but I can try and get it as close as possible. I doubt I’ll have much spare time after that!

EDIT: Check out Streamlining My System, Part 2 to find out how I did!

Learning to Hack: EC2, Server Configuration, and Finally Launching My Domain

Running total hack time: 71.5
Topics: AWS, EC2, server configuration, nginx
Resources: EmilyErin, Kronda

Ya’ll. If you plan on setting up a website? EC2 is pretty much the most labor intensive way you can do it. Seriously, I’m coming up on about ten hours worth of setting up the instance, configuring the instance, adding myself as a user in a non-irritating-to-use way, installing nginx and configuring it, installing MySQL and configuring it, and installing WordPress and configuring it. Actually, listing it out makes me feel a bit better about it. Apparently, a lot has gone into this.

I have to say a huge thank you to all the people listed in my resources, because they all sacrificed hours of their time helping me get up and running. I could’ve put a hundred hours into this on my own and not gotten to the place I am now. Emily especially is the EC2 instance goddess. She will straighten you out, come hell or high water. Although, this was all her idea in the first place. She just had to tell me that AWS was free for the first year. I am nothing if not penny-pinching!

This is quite a few topics to cram into one post, but while I learned a lot, I honestly couldn’t reproduce these results on my own. A step-by-step tutorial this is not. I did solidify some broad-stroke concepts, though, so let’s talk about those. This will probably seem silly to a lot of you, but I’ve committed to an honest description of my learning, so you’re gonna get it, warts and all:

  • The concept that a server is just a computer I can’t touch had never really clicked in a visceral way for me. Sure, conceptually I understood that, but now, having SSHed in and played around for a bit, I get it in a more concrete way.
  • I’m beginning to get a handle on the concept of a database as well. Again, makes sense on an intellectual level, but I’m getting close to that visceral understanding, too.
  • Using the command line as much as was required for this has helped me feel more like I’m doing things with it intentionally and with an understanding of the consequences, rather than just regurgitating something someone told me to type. Although, believe me, I did a lot of that in this process!
  • I used vim a decent bit during this project. I will no longer get stuck in my own terminal! I’m by no means efficient wile using vim, but I can add, delete, save, and (most importantly) quit. I doubt vim will become my one true love as far as text editors go, but I can navigate it without fear when necessary. That’s pretty flippin’ sweet, in my opinion.

All in all, I can’t say I would recommend this method of setting up your own hosting for a beginner (and if you don’t have someone in your life with prodigious knowledge of EC2 and time to spend with you, I would actively lobby against it), but I can say that I learned quite a lot, and am excited to see it all coming together. Still have a lot of work to do to make this a site I can be boast about, but for now, I’m pleased as punch that it all actually works!

Learning to Hack: Team Treehouse, Green Mercury, & Ruby on Rails!

Running total hack time: 34

Topics: Team Treehouse, Ruby on Rails, git, github
Resources: Team Treehouse, Ruby on Rails, omg so much StackOverflow, Erin Call, Emily Strickland

Over the last few days, I’ve been diving headfirst into Ruby on Rails. And what a dive it’s been. My friend described Ruby on Rails as like an iceberg. The code you see is only the tip, with this massive, inscrutable architecture underlying it all. I have to say, I’m finding the description apt.

My learning right now is simultaneously working through the Team Treehouse Ruby on Rails tutorial and also (attempting) to contribute to the green-mercury project to relaunch the Code Scouts member network. It should be really amazing once all is said and done, but for right now, I’m mostly just trying to keep my head above water. Erin Call, the technical lead on the project, has been really awesome, sending me little tidbits to bang on, and then letting me debug them when my eensy little pull request broke other stuff. As a result, Iet’s just say I’m having to get a lot more familiar with version control and the git commands that go along with it.
I can’t honestly say I have much idea what I’m doing at this point, but the longer I stare at the code, and the more I fiddle with it, the more familiar it becomes. It’s a concept I’ve found helpful about tech in general. It’s a much different kind of learning.
For example, when I was in school and learning other things, I felt like while I was learning I would understand 75-95% of what was going on in classes. I would do some readings, or ask some questions, and do a few assignments and voila, I was up to speed. Tech hasn’t been like that at all. At first, I thought I was just bad at it, and that was why I couldn’t understand what was going on around me. For a long time, I actively told people how “bad” I was at technical things, and that I was just “one of those people” that technology never works for.
Luckily, I had a friend, a CS major, who was really patient and really invested in sharing the things he was learning. So, he found ways to describe the concepts with metaphors and without language in a way that was comprehensible. I still only understood maybe 15-20%, though. But I listened to him, to be polite and show an interest in his life. Eventually, though, I started to realize I was understanding maybe 25% of what he said. Then 30%. And I realized that, unlike other subjects I was taught how to learn, tech just requires constant exposure. You are literally learning not just one, but multiple languages. Not just languages, but an entirely new framework and infrastructure. The more you immerse yourself, the faster and more thoroughly you understand.

I’m up to maybe 35-40% understanding at this point, I would say. My comprehension still lags behind, but I can occasionally ask pertinent questions, and I’m beginning to be able to have a tiny little bit of a frame of reference. I’m beginning to understand who in my life is the best person to bother about certain topics, and that not everyone has the knack for making things comprehensible to beginners. That has been such a huge leap forward in my ability to learn, and my ability to overcome my impostor syndrome And that is probably the most crucial thing necessary for me to see this through.

Sexism: Not Just for Dudes

I had a strange experience today. I think, for the first time ever, I intimidated someone (a woman who is a coworker, specifically) because of my association with technology. It’s surreal to think that I am now in the position to be the intimidating one. Sometime just recently, I’ve begun to cross the barrier from someone who wanted to learn technology to someone who is learning technology. I’m decently well connected, for a noob. I know about lots of resources around town, and I’ve checked out a lot of them at least once. I’ve had extensive discussions with people in tech in Portland about what they know and how they know it and how they would suggest going about this whole learning and getting employed thing.

I recently got a promotion at my company, and I was excited to learn that two of the women in my new department are starting school for computer science in the fall. I asked one of the women about her upcoming schooling–I was hoping to use that as a jumping off point to make a connection. I was trying too hard, and I name dropped a bunch of awesome orgs because I was hoping we might have one in common.
Turns out, I can say enough tech-associated words now that I can induce impostor syndrome in others. It’s a strange feeling. In some ways, it has caused me to reflect on what I’ve learned over the past year that I’ve been dabbling in tech. It’s helped me realize that I really have learned some things. I’ve barely scratched the surface, but hey, a scratch is a mark.
In other ways, though, it has been a wake up call. A reminder that it’s my responsibility to try my damnedest to reach a hand back to others. It’s a reminder that there is a back now; that if I make the mistake of talking about how I don’t know anything when I know a few things, I am contributing to the problem.
Sexism in tech isn’t just things-that-brogrammers-do-to-women. Sexism is a system, and that system gets ingrained in all of us in different ways. One of the effects is that I have a fine line to walk between over- and understating my ability. Overstate, and other women may give up, thinking I achieved so easily while they struggled, and therefore they must not be “smart enough”. Understate, and I give the impression that if what I know is “nothing,” they have no hope of ever achieving something. My actions have consequences in a sexist system, too. The fact that I have to carry that burden is something sexism inflicts on me, but that’s for another time.


Learning to Hack: Command Line

Running total hack time: 17.5

Topics: Command line

Resources: Erin Call, Command Line Crash Course

Oh my god, Command Line Crash Course. Ya’ll. If you are not already a command line wiz, go check this out. It’s awesome. Just go read through it. You will not be sorry.
I’ve been talking to Erin over the last few days about command line and Git, and she’s set me straight on some things. I’ve been treating Git and the command line in general as if they are interchangeable, and they most certainly are not. She also took a look at my Totally Informal Command Dictionary, so for this very moment, it is somewhat accurate. Yay! And I only had one incredibly embarrassing and glaring error! I have now been disabused of the idea that -m when using git commit means “master.” It in fact means “message,” which makes sense if I had stopped and thought about it. Committing makes changes to the working branch, so -m couldn’t really mean master. Now, that was not at all my only error, just the most glaring one.
She showed me how pipe is useful, which I was somewhat murky on. I knew it took the output of whatever was before the pipe and used it as the input for the next command after the pipe, but I wasn’t really sure what that could do. She showed me how:
$ cat <really long file>
prints a super long and unwieldy result. She explained that the “tail” command prints the last ten lines of whatever its input is, so:
$ cat <really long file> | tail
creates the former output, then carries it over to tail, so it ends up only outputting the last ten lines, making things much more easily manageable. Nice!

I’ve also been reading up on some of the terms used in the constellation of things to know about the command line, trying to get a clearer image in my head of what all these things are (bash, vim, nano, Git, csh, and on and on…). Once I have a more solid picture, I’ll explain it all here!

Learning to Hack: Mac Update

It’s been a few more days, and quite a few more hours of hacking since the last time I talked about trying to understand my new Mac I’ve learned some tips and tricks that have eased the transition considerably, and have made my experience much better.

Tip 1: Command+space bar brings up a search bar that will search the index of all your files and applications. Kind of like Launcy, if you’re familiar. If not, also similar to the Windows start menu search function. It’s pretty neat.
Tip 2: Open your Finder. See all the default links on the left? With the exception of the “All Files” and “Applications” links, these are folders in your User folder. So, /Users/shawnacscott/documents is the file path for that “Documents” link. I’ve found that using the column view (the third option from the left at the top) shows a much more analogous-to-Windows view of the file structure. I found reading through this discussion of how someone coming from Windows to Mac can understand Finder very helpful.
Also, the one area where I will say unequivocally, and without remorse of any kind that Macs perform better than Windows machines is in battery life. When I got this laptop, the friend who gave it to me apologized for the measly four hours of battery life. Four hours of battery life has never been a thing to complain about, in my opinion. If any of my Windows laptops had had four hours of battery life, even out of the box, I would have been thrilled beyond words. So, good on you, Apple. Your batteries are sweet.

Learning to Hack: Linux Installation

Running total hack time: 14

Topics: Linux installation, command line

Resources: Ubuntu, Tina Hinojosa

There’s not a whole lot to report here, but I FINALLY GOT UBUNTU INSTALLED! This had become the never-ending saga. It took me three tries to get a successful install. I had gotten an Xubuntu 12.04 install disk from Free Geek, but the install they distribute is apparently their own version that they have set up for their purposes. I’m not sure what exactly the problem was, but it seems there was some issue with the display manager. So, after partitioning my drive and installing, repartitioning my drive and reinstalling, I decided to just make a clean install disk. I checked out DistroWatch’s “search” function, which allowed me to search for options better for beginners to Linux. I had planned on installing Mint, but I had only brought a CD and the install was just slightly too large. So, Ubuntu it is!

Some notes about partitioning. I set my partitions up to have a root (/) partition, which allows me to install a new version of Linux onto that partition later if I want without disrupting my file system. Neat! Mostly, I just googled around til I found some decent instructions on how to partition my disk, but you don’t have to do that. Both of the installs I used had the option to automatically partition your drive correctly, and allow the system to dual boot. It was honestly really easy. If you are a Windows user and want to learn to program, setting up your system to dual boot Linux is probably the cheapest and easiest way to get yourself up and running. I chose to find a way to get a Mac because I was looking at applying to a program that required you to have one. If you can avoid it, though, there is no reason you can’t use Linux. All it will cost you is a blank CD.

Learning to Hack: Git

Running total hack time: 6 hours

Topics: Git, command line, version control, vim, nano
Today I finally stopped puttering around and got down to some real learning of important skills. I’ve mostly finished setting up my new computer in a way that makes sense––downloading all the programs I need, tweaking settings and visuals and such. By now, I’ve also managed to not be completely baffled by gestures, and the ridiculous procedure necessary to install anything on this thing. So! Off to hacking I went!
I worked mostly on Git Immersion and I found it to be pretty helpful. I’m not super far into it, only to Lab 11, but I’ve already begun to clarify some concepts that have been floating around my brain without any tangible connection. Sure, I’d heard of all these commands. Doesn’t mean I really remembered which was which and what they did. I do think that this tutorial falls into the all-too-common trap of starting at an intermediate level when it purports to be for beginners. I’m sorry, but if you expect me to create a file from the command line, you might want to tell me how to accomplish such a thing. Maybe I just need to spend some hacking time working on my psychic abilities.
I found Git Ref to be much more accessible in that regard. It actually told you all of the necessary commands, instead of just most of them. It’s less interactive, though, so I felt the need to make challenges and experiments up for myself as I went along. Both Git Immersion and Git Ref follow a similar trajectory, though, so continuing to alternate between them every little bit seems like a solid strategy going forward.

I’m going to start keeping track of the commands I learn. Here’s my Totally Informal Command Dictionary if you’d like to take a peek. Just kind of define them for myself at my current level of knowledge. Plus, since Google Drive has automatic version control on its docs, I’ll be able to see how my understanding has evolved over time. Pretty exciting stuff! I’m sure I’ll get them wrong, or miss some huge part of the true power of a command, but hey, that’s how we learn, right?

Committing to the Journey

I’ve been fiddling around with learning to program for about a year now. I’ve worked played around with MIT Open CourseWare and it’s offspring, the edX 6.00x course. I’ve gone to Women Who Hack hack days, briefly glanced at Codecademy, attended an Intro to Web Development weekend-long bootcamp, joined Code Scouts, and played with Team Treehouse. But until now, it’s always been on-and-off. I’d go weeks at a time never talking about or touching anything related to programming. I’d work diligently for a while, then give up in distraction or despair. Now, I’ve gotten to the tipping point. It’s put up or shut up time.

So, in order to both keep myself accountable, and to record my journey from noob to (hopefully!) fully-fledged programmer, I’m writing this blog. I’ll be keeping track of what I’m learning [UPDATE: like my Totally Informal Command Dictionary!], what resources I’m using to do so, and my running total hack time from this point forward. This is primarily a resource for me, but feel free to follow along. Maybe you’ll find inspiration (or at least commiseration!) along with me!