Friday, August 22, 2014

Time to Take This Show on the Road


I hate excuses, even though I make them all the time. So life happens and for the past three months, I’ve not been a good newbie programmer. I’ve gone to workshops, I’ve gotten excited, I’ve gotten overwhelmed, I’ve started to learn some of what I need, but I’ve not gotten my hands dirty. It’s time to dig in. 

This requires some life structure changes. I’m leaving my part-time job in just a few days. My youngest will be entering daycare shortly, and I’m *making* the time to learn. Right this second, I’m attending my first conference (as an attendee rather than a guest) in Madison. I knew this would be a good fit for me partially because there appeared to be a culture of encouragement and acceptance (a RailsBridge workshop was offered as well), but also because I’ve been familiar with this conference in the past (Thanks Madison+Ruby!). So I’m jumping in. I’m also attending Windy City Rails in September, Twin Cities Code Camp in October, and RubyConf in November. My goal at these confs is to learn, absorb, and do a lot more listening than talking. 

As I’m considering my options, and working on maintaining my focus without letting life interfere too much, I realize I need structure. I hear so much about boot camps which I think would be a fantastic fit for me…if there were one in my area. I’m exploring other options, but frankly having my youngest kid out of the house for some amount of time during the week is the biggest hurdle/asset to my studies. The next biggest was my job. While I GREATLY appreciate the opportunity I had to renter the paid employment arena, it wasn’t the kind of work that was going get me where I want to be in the future. It was a difficult decision, but if you’ll excuse my language, it was time to stop fucking around and get serious. 

I’ve been fortunate to be able to have participated in both ClojureBridge (in May) and RailsBridge (twice, in June and just yesterday). I’ll go into detail on those workshops in my next post, but I’ll just say if you have the opportunity and you are even remotely interested in learning to programs, they are excellent starting points. I’ve found out more specifically what my weaknesses are, thought up all kinds of embarrassingly simple (but mysterious to me) questions, and I’ve learned what’s intuitive and generally clicks for me. 

So while I’ve neglected this blog and my studies since May, I’m committed to making progress in the coming months. One of the reasons I decided to start going to confs is that the enthusiasm is contagious. I’m inspired by the speakers. I’m excited to work through my hurdles and settle on making something simple, but improvable as I learn. Working on something knitting or beer related have been the obvious suggestions (if you know me at all, you know I’m extremely passionate about both). Boot camp may not be an option for me right now, but there are other resources that are available to me for face to face guidance. Not unrelated, I’m pretty excited that we have a Girl Develop It chapter *just* getting started in Minneapolis! So I’m back on track!


Cheers! 

Coming soon: My Bridge Experiences

Tuesday, May 20, 2014

Why Programming, Why Now? (Really...Why?!)

I wanted to talk a little bit about why I chose to take up programming now. I've mentioned some major life shifts earlier this year which prompted me to go a different direction, but if you know anything at all about me, you know that I've been partnered with a fairly prominent programmer for more than 15 years. I've been around you techy types for many years, so it's kind of a mystery as to why it took so long to pique my interest. So, why now?

I've had my own projects and interest in the past, but the timing, along with other changes, has coincided with a lull in those projects. I've been having many conversations about job hunting, trying to figure out what to do after 14 years as a mom and volunteer with a degree that's not exactly lucrative. I have been told over and over that programming is something any reasonably intelligent person can pick up and learn on their own with some time, commitment, and gumption. I like to think that I'm a reasonably intelligent person most of the time.

The seed had been planted. Around the same time, I ran across a New York Times article on twitter about women in tech and some of the challenges they face, including some of the more recent controversial incidents. I'd been following this particular topic for the last couple years through my partner because my background, in part, is in Women's Studies. The gender discrepancies, occasional hostile attitudes, and active movements to address these issues were very interesting to me. As I read the article, I found myself thinking "Wow, this sounds incredibly discouraging to women thinking about going into tech." However, immediately upon finishing the article, I realized that my personality is very well suited to both the current and evolving tech culture. So why the hell not? I *want* the opportunity to be a participant in change and possibly even a voice in the community should I ever figure out what I'm doing. :)

Just today I read a blog post about a RailsConf experience that was overwhelming positive despite low expectations based on past anecdotes of sexism and racism at tech conferences. It was both funny and encouraging for someone like me who is just starting to test out these waters. I'm a confident, opinionated, logical, occasionally outspoken person and I still have trepidation about merely attending a tech conf as someone who doesn't yet "belong" (although this nervousness is diminishing).

Since I made the decision to go down this road just a few weeks ago, I've gotten nothing but encouragement and enthusiasm. That says a lot. And it keeps me going. It's worth the frustration and pain of pushing through my weak spots because the payoff will be worth it. I've spent years around someone who loves what he does, who was so passionate about his project that he took a vacation from his day job to spend a week in the basement working on his "fun project." Now his fun project is his bread and butter. I have always found this inspiring. It's an exciting challenge that I'm definitely up for.

Friday, May 16, 2014

Frustration, Plans, and Pre-ClojureBridge

My work schedule has not been very conducive to self-study for the past couple weeks, so I'm afraid I don't have much to update.

I have continued to work through the SICP while realizing that I truly am learning a new language. I'm definitely getting the simple stuff, but when I get to the exercises, I can't help but think "I see that you've written these things that I'm supposed to understand and answer, but I do not know your language." There is a vocabulary that I don't have. I admit, I've had moments of frustration.

I'm hoping that watching some of the SICP lectures will help, but I have not yet had a chance to get to them. I'm so anxious to start an edX course because I feel like it's a better way to break down those vocabulary barriers. In the mean time, I'm going for the submersion technique. I'm continuing to read, doing the exercises I understand, and hoping that at some point, something clicks and I suddenly understand (at which point I can go through those things I couldn't comprehend the first time through). This has worked for me in the past, so it's not a baseless plan.

It's difficult to admit that I just don't understand some things. Not that I'm not capable of understanding, but that right now at least, much of what I'm reading is Greek to me. My language is based in the humanities, literature, and policy. It's an adjustment.

About a week and a half ago, I attended a Clojure.mn beginners night that was geared toward preparing for Clojure Bridge, which starts tonight. I was clearly very much a beginner. Of course people like me are exactly who these workshops are designed for, which is comforting. The install process was definitely a following directions process and while I'm still not entirely sure what I'll be using some of these tools for, I suspect I'll know a good deal more come Saturday night.

I went through a series of installs, with help, at the beginners night. Over the course of the night, I installed Leiningen, Light Table, and Heroku. I needed a SSL public/private key in order to set up a repository on GitHub (where I was already registered) and to deploy apps to Heroku. I cloned an app from GitHub, made some modifications, and deployed it to Heroku; I believe it was designed to be a “hello world” application. This is basically what’s going to be happening at tonight’s InstallFest. If you are curious, the curriculum for this weekend's workshop can be found on GitHub.

I have a few things in the works for the near future. I'll be attending a RailsBridge workshop here in Minneapolis on June 6 and 7. I had planned on attending one in Madison later this summer, but when this popped up a few days ago and there were spots still open, I jumped on it. I only hope that I'm not muddying the waters having *just* started playing with Clojure. In all fairness, I did start playing with very basic Ruby first. I'm working through a couple books, but have not had the opportunity to delve very deep into the more tutorial based books given recent time/work/logistical demands. As I mentioned above, I am digging into the SICP though it feels like a painfully slow pace as there are some basics to pick up as I go. Just today, my copy of The Pragmatic Programmer arrived which I understand is a good read and something I can easily fit into the time I have available.

As I wrap up this post, the ClojureBridge InstallFest is getting underway. I'll be posting a recap/post-mortum/personal takeaways in the next few days!


Cheers!



Thursday, April 24, 2014

Things Just Got Real (Expensive)

It became clear, when I was ready to start putting some serious stuff on my laptop so I could actually *do* something, that my old macbook was going to be a problem. When you beach ball while typing an email, it's a bad sign. It was at this point that my amazing partner told me that he was planning to get me a new laptop for Mother's Day but maybe we should get it now so I don't have to suffer for the next couple weeks thereby risking frustration and discouragement. This definitely makes up for the time I got a tv antenna for Mother's Day, by the way. I'm now the proud owner of a shiny new MacBook Pro.

I'm currently working through the Rails book. I had a list of things to get on my machine now that we've migrated my old machine over. Over the last day or so I've installed Ruby, Rails, a JavaScript interpreter, and I'm figuring out what I already have or need as far as a database. I'll be honest, I'm not entirely sure what I'm doing yet. This is, of course, a dual lesson where I've also been learning about yak shaving. Between the new laptop set up and installations (oh, and my job), I've had this thing for three days and I've only been able to do a few basic things with it. I've been familiar with the frustration of yak shaving, but this is my first personal experience. It does indeed suck.

I also have a couple books arriving this week. It may be a bit luddite-ish of me, but I often prefer hard copies of books. I've been reading the SICP as much as possible, squinting at my phone, but I'm anxiously awaiting my own copy. I ordered Chris Pine's Learn to Program as well. I have two or three more books from my list that I'll be ordering shortly as budgets and reading time allow. I've been looking for a balance of tutorial heavy books (for home, coffee shop study days) and reading heavy books (for bus rides, work breaks, etc) as I have a fair amount of reading time during which I don't have access to my laptop.

As of late Tuesday night I have my ticket (and the time off at work) for Clojure Bridge coming up May 16th and 17th! I plan on going to the prep night on the 7th as well. So things are moving along. Since my partner is in Taiwan this week, I'm largely left on my own to figure out what needs to be installed and how I'm supposed to use it. I find this to be an advantage as I believe it would be far too easy to fall back on his expertise. My goal is to head into Closure Bridge knowing a little something.

I learned of an opportunity to attend a Rails Bridge in Madison, WI this summer as well. I'm tentatively planing to be there if we can work out the logistics.

Cheers!

Wednesday, April 16, 2014

Here We Go: Where the Hell I'm Starting

As I started playing with several of the suggestions I received, I believe I have settled into my focus for the next few weeks. I went through Try Ruby and Why's Poignant Guide which made sense to me, but demonstrated a need to get more accustomed to the basic terminology and gain a deeper understanding of the theories and principles behind programming in general. It's a "language" that's not completely foreign to me, but it's as if I'm only understanding every third or forth word.

I've started reading Structure and Interpretation of Computer Programs for that missing background. It has been immediately appealing to me. I enjoy the writing style, the metaphors, and the philosophical undertones. I will be picking up a hard copy of the book as the only suitable device I have for reading ebooks is frequently wrestled away by a toddler. I also picked up Agile Web Development with Rails 4 to work through at the same time. It was recommended by several people and I was able to locate it locally. I was pleased to read in the introduction a paragraph that was very similar to my spiel given to non-tech friends and family explaining JRuby. I'm looking forward to building my library over the next few weeks as there have been more good suggestions. I have updated my initial post to include these new options.

The main challenge so far has most definitely been time. I figured out that I'm going to have to physically leave the house, in most cases, to make any kind of progress. This is how things went when I went back to school to finish my degree when my oldest was a toddler, so at least I know it works for me. I feel like I need larger chunks of time to immerse myself but I'm only getting 5-15 minute snippets. We are making adjustments to accommodate more quality study time. Overall, I'm very excited to get my hands dirty, to start playing with the tutorials, and applying the things I'm reading about even in the simplest of ways. I feel like this is how I learn the best.

I didn't make it to Minnebar last weekend as my wait list number didn't come up and I didn't feel comfortable signing up to do a lightning talk yet, but I'm still looking forward to the upcoming Clojure Bridge (I'm told sign up opens very soon).

Cheers!

Friday, April 11, 2014

Learning to Program: Where the Hell Do I Start?

Updates in italics

I've been having one of those moments where everything in my life has seemed to shift or in some cases, change drastically. I've been a part of the tech community in a social or supportive capacity for many years. I've never taken on any technical projects. My background is in the humanities with several years of political volunteer work followed by non-partisan civic volunteer work. I'm ending a 14 year run as an at home mom with a new job, which I'm very thankful for, but it doesn't provide the kind of intellectual challenge that I feel like I've been missing. So it's time for a new project. I'm about to learn how to program.

I've been familiar with Rails Bridge which seems like a great place for me to start. I've just missed a local event, but thanks to Twitter I have many great options to try out. I'm going to compile them right here for my own reference. I'm excited to see what will and what won't work for me.

As I collected suggestions on where to start, in became clear that they were falling in a few categories. As a very basic opener, I started at Try Ruby and I'm reading Why's (Poignant) Guide to Ruby as they were the very first suggestions from my partner who knows a thing or two about such things.

Tutorial
Try Ruby
CodeKata
Developing iOS Apps
Lua Missions
Codecademy

Workshop
Clojure Bridge (locally: Clojure.mn)
Rails Bridge
Dev Bootcamp

Academic/Basic Skills
Structure and Interpretation of Computer Programs
Khan Academy
Udacity
Coursera
EdX/HarvardX
MIT Open Courseware
TheNewBoston

Community
Stack Overflow
OpenStudy
Reddit (/r/learnprogramming) 

Tools
Scratch 
RubyMotion
Apple Xcode

Reading Material
Why's (Poignant) Guide to Ruby
No Bullshit Guide to Math and Physics
Learn Python the Hard Way
Learn to Program, Second Edition (The Facets of Ruby Series)
Land of Lisp
Learn You a Haskell for Great Good
Beginning Ruby
The Well-Grounded Rubyist
Programming Ruby: The Pragmatic Programmers' Guide
Starting to Learn Computer Programming with Rebol
C Programming Language

Other Possible Starter Languages
Wolfram Language
Julia Language

I was directed to another blog post (108 Ways to Learn to Code) of a similar nature written by someone who is already in the field. It provides better descriptions which come from experience that I don't yet have. Another helpful blog post: "So, you think you want to be a web developer?" In the context of this post I'm most definitely a beginner, but I'm on this path for the challenge, not necessarily a new career path. I want to have fun, I want to enjoy it, I want it to be hard. If a new career path is where this leads, that's wonderful, but I have no delusions of grandeur (at least not when it comes to programming). 

I think the best approach for me will be to brush up on some basic skills and concepts while playing with something like Scratch in hopes of applying some of those skills while learning them. I prefer to jump right in, even if it's a simple or slow start. I realize I'm starting at an elementary level (my oldest son played with Scratch a couple years ago in a kids programming class), but that's where I am.

Locally, I'm hoping to attend Minnebar over the weekend and next month's Clojure Bridge. I believe it will be valuable to seek out a peer group. I know of a couple networking groups for women in tech that I'll consider in the future. My intention is for this blog to be as technical as my skills allow. I will continue to update this list as I receive new suggestions. I want to offer a huge thank you to everyone who reached out with ideas and suggestions on twitter, in person, and via email.

And so it begins! Cheers!