Clojure Makes Me Feel Stupid

…but I’m kinda in love with it. Thanks to a friend/coworker I’m cautiously dipping my toe into the world of “functional programming”. I’m still not 100% certain I get the full gist of functional programming but, to my newb mind, I’d explain it as programming without consequences. Functions only depend on their inputs and external forces/state cannot muck with your function.

Apparently this makes it easier to predict what’s going on, but I still have issues reading what I just wrote. Parenthesis all the way down dudes. Also prefix notation is technically useful, but warping my poor little brain.

So 1 + 1 in Clojure is actually written as (+ 1 1). Makes sense, right? Sorta, except for the years and years of basic math classes that NEVER LOOKED LIKE THIS. Oh my brain. But it’s kinda cool that instead of 1 + 2 + 3 + 4 I only need to write (+ 1 2 3 4).

But seriously. This is a function in Clojure:

1
2
3
4
5
(defn adder
  [x y]
  (+ x y))

(adder 3 4) ;; 7</pre>

Wat? So the first line defines the function name. The second line is the parameters that you give to the function and then the last line adds those two parameters together. I then call the function on line 5 with the arguments 3 and 4 and then the semicolons denote comments and I use that do show what the output of the function is… 7.

As a super ridiculous aside. Parameters vs arguments? Parameters are the things that you define with the function. So x and y on line 2 are parameters. Arguments are what you pass to the function when you what to actually use it. So 3 and 4 on line 5 are arguments. Now go forth and be awesome!

So how do you be Clojure learners too? Currently I’m running through the clojurebridge curriculum on my own. Clojure in 15 minutes looks like a decent-y rundown of most of my syntax options. If you don’t want to put anything on your system yet, or just want to mess around with the syntax, there’s always Try Clojure which lets you program from your browser. And I’ve bookmarked Clojure for the Brave and True mostly for the title, but I haven’t really read any of it yet.


Bored Again - Time to Create

On Repeat

Tomorrow is my three-month reunion for Hack Reactor. I’ve done some cool things since I graduated, but I’m still not doing everything I wanted to. I want to be the change I want to see in the world, or however that goes. I just became a mentor for Hackbright Academy so I feel a little less adrift without a social purpose, but I’m still itching to create things.

I’ve started knitting again, but it’s not solving the itch. I have half-finished things on the needles again, but I’m still bored. I think there is no hope for me. I just need to be coding.

About a year ago. I was sitting in a crappy gelato shop in downtown Burlingame with two of my best friends who already lived in California. I was still living and working in Oregon, but I knew I needed to be moving on soon. I was getting restless. That day we made a pact, all of us before this crazy thing called a dream turned us into a software engineer, a software engineer, and a novel writer. We were The Clever Girls and we were going to create something amazing together eventually. Part of that dream is how I ended up down here and now I’m realizing I need to start doing my share.

So I’m going to dive back into programming completely solo, completely public, with my work, as shitty as a lot of it probably is, committed for all to see on Github. I hope soon the three of us can get back on the same page and actually make something amazing. For now I’ll just leave you with the copy I wrote for a fake starter page a year ago when The Clever Girls were still fresh in my mind:

“Computing is too important to be left to men.”
Karen Spärck Jones

Women are underrepresented in computing not because they aren’t good with computers but because they are never given the opportunity to fall in love with them. The Code Girls‘ goal is to create fun, educational games geared toward younger girls that will teach them the basics of how programs work. Using an easily readable language like Python, girls will code their way through the platform challenges and create fully functioning programs as they progress.

Code Girls present Octavia and the Clockwork Code is the first game in the series. It tells the tale of 12-year-old Octavia, a precocious tween who sets out to win a mechanical competition. Along the way she codes her way through puzzles and helps out friends and competition alike.

The Code Girls is a fledgling startup created by three women who are passionate about women in computing.

Lindsey - The Creator

Founder, primary coder and herder of cats. Lindsey always wanted a game like this when she was growing up. Now that she’s technically grown up, she decided to take the idea into her own hands.

Ava - The Teacher

Our resident little girl expert. Ava has a Masters in Education and a passion for teaching children using methods that create a deeper understanding.

Alyssa - The Storyteller

World builder and character flaw creator. Alyssa creates and drives the stories we tell. She lives and breathes the Code Girl worlds.


Home - For Now

The updates got away from me. Life has just been flowing one day to the next. A mix of sun and California and coding. Days will go by where I forget how I got here. It feels like I’ve always been here and then I see or hear something so stereotypically Bay Area-ish that I have to shake my head and realize I don’t know if I ever want to be completely sucked into this candy coated, rose-colored-glasses kinda world.

Life is pretty amazing now. I’m happy and working and finally have my cats and my car. I could never live in San Francisco proper for the sheer joy I get in sitting in my car, driving on a long stretch of road with my music blaring. I drove from Portland home to Burlingame and the views were breathtaking and I felt so much at peace as I curved around the mountains of Northern California.

Oh yeah, cats:

I was terrified they would hate it here and then I’d be the horrible person who drove them 14 hours away from Oregon. I haven’t lived with my cats for 7 months and it’s been excruciating. Thankfully they seem to be enjoying themselves. There are windows that I can actually keep open all the time and floors to stretch out on in the warm, warm sun. And of course I’m here to know Isaac really likes his head scratched and Jack likes to hold your hand with his paw. So yeah, I’m pretty happy. I do have more nerdery and tech blogging to do (I’m trying to learn Swift! and hopefully tech mentoring! and maybe even public speaking?!) and I plan to get to it, but I first had to get the reintroduction out of the way.

Also, this post (and maybe many posts to come) has a theme song:


Week 4/5: #FAIL

Life has been awesome, so awesome in fact that I have had no time to put words to “paper”. I’m finishing projects and starting new ones at work. I’m having fun with friends on weekends. I even signed up for online dating, but that’s a hilarious post all by itself.

I also managed to do the age old terror inducing thing that most programmers do at least once in their lifetime. I broke our website. It was fast, over before most people noticed and totally my fault. The silver lining was that I was able to also fix my own mess without much assistance and in less than an hour. Still I felt like an idiot for the rest of the day.

The next day though we were on to the next feature, the next quirk, and I was able to breathe again because I’m slowly realizing that none of this will ever be the end of the world. Just like I don’t believe any one thing can “disrupt” the way we do things (and I hate that most startups think that they will), I believe that we can all help to shape something. That we each contribute our own little parts and my contributions also don’t have to be perfect. We have code reviews and tech leads and lots and lots of awesome mentoring opportunities to fill in our lack of knowledge.

Also, FYI, I’m including my Twitter feed to the right for now because I update it more than it might this blog.


Week 3: Giving Back

Week 3 ended a few days back (sorry y’all I had a busy weekend) and it was awesome. I’m learning new intricacies of our systems and learning to be more confident in myself when I know I know it (or maybe even think I do! Being wrong isn’t the end of the world!). My favorite part of this week though was the weekend.

On Saturday I got to volunteer at an all girl (10-17) JavaScript intro class with CoderDojo. I was a tech mentor, but I didn’t have to do a lot . I was super impressed with the girls! And I got to teach a couple of them that docs are super helpful! They were all so creative and awesome and I hope a lot of them decide that programming is as awesome as I think it is. For a short write-up (and to see what some of the girls made!) check out the write up for the event here.

Also, as an aside, can I just take a moment to say that I think Pamela Fox is amazeballs? She spoke at Hack Reactor during my time there and I’ve been following her on Twitter for a while, but I fan-girled hard when I realized she was the instructor for the class. She is such a smart, funny presenter and she was amazing with the girls. I aspire to be more like her when I “grow up”.

I could see myself filling my weekends with tech mentoring/hanging out at places like Women Who Code, Girl Develop It, and PyLadies. It’s something that I’m super passionate about (it’s why I wanted to work at Udacity so badly). I think mainly because it’s something I wish I had when I was growing up. I wish I could have seen women being awesome programmers, making a career out of it, and how much fun it could be. I never thought I would be one of those people who didn’t just have a “job” they had a calling, but I’m positive I’ve found me.


Week 2: Ticking All the Checkboxes

How is it possible that I’ve already been working for Udacity for two weeks?!

I have done real tangible things since last week (I did real, tangible things my first week but nothing I could really point you to). This week, I integrated Github linking!! If you have an account on Udacity, you can now link your Github account to it here. This doesn’t actually do much more at the moment, but it’s all a part of a master plan. If you don’t have a Udacity account (why not?!) or aren’t using Github, here’s an action shot from my account:

My first contribution to Udacity

I’m settling in to my place a little more (I also discovered the spider I threw outside was not Selma, but Selma is in fact outside now too). I have a new whiteboard that is currently just practical (groceries and upcoming things), but I’m sure it will end up with weird pictures of animals and penises.

The Whiteboard of Doom

My plans this weekend involve groceries and finally getting a San Mateo County library card, so I’m pretty excited!


How to Git Ignore without .gitignore

So I had this problem at work. I’m running a virtualenv instance on our main git repo for all my python packages. The global .gitignore obviously doesn’t know about it the way it knows to filter out node modules and other fun bits of localization and I sure as heck don’t want to add my own one line fix to the global .gitignore file.

So what’s a girl to do? Does she just ignore that one annoying untracked file line every time she does a git status from the terminal? Nope, she uses git exclude.

1
$GIT_DIR/info/exclude

So for me this meant I had to create a info folder in my .git folder in the repo. Then I created a file called exclude (no file extension). The syntax in that file is exactly like the .gitignore file, it’s just very very local (to your computer and only for that repo).


Week 1: I Feel Like I've Been Here Before

First week of work is over and it felt a lot like a less intense week of Hack Reactor. I still can’t believe this is what I’m actually doing with my life. I still definitely have lots and lots of impostor syndrome but I also deployed live things my first week! And learned a few of my coworkers names! And did a two minute all staff demonstration on how to knit!

I also got exactly what I wanted. I’m working full stack in JavaScript and Python in non startup-y startup (e.g., we’re not out to make lots and lots of money or making a product we don’t believe in for the money) doing things that I feel are making a tangibly good contribution. We have a gong that gets rung when a person graduates a class. That small bit right there proved that I was exactly where I wanted to be.

And yes, I’m still terrified some days that I’m too slow or too newb or just not cut out for this, but here’s a secret, I don’t think that will ever go away. Maybe it’s a good thing or maybe it’s just human nature, but I just need to learn to live in my own skin I think and take the impostor syndrome as a mark of being human, of caring about my work and wanting to always get better.

And a minor update: Selma is no longer in the house, I got the balls to move her outside finally.


Not Working is Worse

So first off, mad props to those of my cohort who have jobs now too! And major hearts to those still looking, because y’all are amazing. And a special shout out to my platonic soul mate Ava who starts at SurveyMonkey in a week!

I have had two weeks of quiet reflection (read scrambling to get an apartment, utilities and furniture in my pad) and it sucked. While I definitely don’t want to go back to the terrifying job finding phase anytime soon, at least I felt like I was doing things (and I got to code once in a while). Now I’m just sitting around waiting for utility services to call me back or deliver my stuff or de-spidering my apartment (mostly dead, the one that’s alive I’m naming Selma, because I’m a giant crippling softie who can’t even kill bugs).

I start work on Monday and I’m nervous-excited-terrified-ecstatic. I’m already on the email lists and I love the few random all-staff conversations I’ve read. I think the culture here will be awesome. My zen today though has been putting together IKEA:

Made Bed

RED Couch

Blurry Table

And a super special thank you to Ava for being awesome and watching TV with me and putting together my table:

Ava Puts Together A Table


Confirm my eccentricities

I have discovered a new sense of zen since I got my job offer. I’ve also discovered amusing things about myself. The biggest and most noticeable change is in my music choices. When I was stressed and scared and about to go to an interview I would want nothing more than to listen to a couple of songs over and over again. Bravado was one, Problem, Wrecking Ball, and Dark Horse were my staples. I needed strong songs sung by women that I knew by heart. I listen to basically nothing else. Now I’m still listening to them, but I’ve added back in old favorites and non-female vocals like We Fought Monsters, I Hear the Bells, and Madness. It feels awesome emotionally and physically. Music is a huge factor in my moods and it’s awesome to be able to experience the full range of it again.