Django Girls Groningen on 23 April!

djangogirlsI am super stoked to announce that the FOURTH Groningen Django Girls workshop will take place on the 23rd of April 2016. Our goal is to introduce women to the wonderful world of programming.

We believe that the IT industry will greatly benefit from bringing more women into technology. We want to give you an opportunity to learn how to program!

And, as always, workshops are free of charge. Continue reading “Django Girls Groningen on 23 April!”

Change is Terrifying. Do it Anyway.

1743566_10101043400404271_1932748396_nOn Saturday, 05 March, I am one of the keynote speakers for Django Girls den Haag.

Hi. My name is Rain Leander. Welcome to Django Girls den Haag. Today I’m going to talk about programming – what it is, why you should do it, what you can do with it. I’m going to tell you my programming story including how I got the job I have now. And I’m going to give you a little programming advice.

First, what IS programming? Ashley Gavin gave a great TEDxNYU talk where she defines computer science as a medium for problem solving and self expression. Just like a dancer will solve a problem or express themselves with movement in space, a programmer uses technology.

But then why should you learn to program? There are so many reasons. Steve Jobs said, “Everyone in this country should learn how to program a computer because it teaches you how to think.” And code.org is putting out some great you-tube videos of “code super stars” saying that everyone should learn to program. Paraphrased, some of the reasons include:

Whether you’re trying to make a lot of money or change the world, programming is an empowering skill to learn. Software is about humanity, helping people by using technology. To come up with an idea and see it and make it, then press a button, and it’s in millions of people’s hands is amazing. The programmers of tomorrow are the wizards of the future. You’re going to look like you have magic powers compared to everyone else. Great coders are today’s rock stars.

Basically, you should learn to code because it pays really well. Because if you prioritize happiness, programmers are ranked second in job satisfaction in the United States. Because of job security. Based on growth projection, there will be one point four million jobs in 2020 and not enough people qualified to do them. And because almost everything that teenagers use is a product of computer science – video games, wikipedia, the selfie.

And you don’t have to use programming to be a developer, there are lots of opportunities out there for people with programming skills. Mikey Ariel has a presentation where she shows some of the major career paths for code monkeys: developers, designers, support engineers, testers, project managers, and writers. Just to name a few options.

Learning to program is intimidating at first, but I promise, it becomes easier over time. Just like learning to play an instrument or play a sport, you have to start small and practice and break problems down into smaller tasks. You don’t need to be a genius to learn to code, you need to be determined. You should probably know your multiplication tables.

I am an OpenStack TripleO RDO software engineer with Red Hat. Specifically, I am a developer evangelist which means I am an active technical contributor to the OpenStack TripleO RDO projects and also I travel around talking about those projects and asking people to join me as active technical contributors.

You might think that this means i am really smart and have a computer science degree and tons of experience programming.

NOPE

NOT AT ALL

I am a DjangoGirl. I attended a DjangoGirls workshop last year in March, but that’s not where my code story begins.

I had an entire dance career before I “retired” to program full time. I taught myself HTML, CSS, and PHP many many (many) years ago when I was dancing full time. How did I know I could do that? I met a woman who was an amazing web developer and asked her how she got started. “I taught myself.” Well, if she could do it, I could do it.

I taught myself to code and I used it as a bartering tool to pay for goods and services for my dance career. Rehearsal and performance space, costumes and make up – I didn’t have money, but I could code. “Would you like a new website?” At the end of my dance career, the next step was obvious – time to code FULL TIME. I joined Red Hat as a support engineer and absolutely loved it.

Years later, I gave birth to my kickass son, Sasha. And decided to go part time. My job wasn’t allowed to be part time, so my job became looking for a new position within Red Hat. At first I applied to everything, but then I took a DjangoGirls workshop in Groningen.

And I remembered how much I loved to code.

Sure, because of my current job, a few of the chapters from the tutorial were refreshers, like the git, command line, code editor, and HTML chapters, but a few were completely new like the python and django chapters and I had never deployed to heroku (the previous deployment platform, now we use PythonAnywhere).

From then on, I applied only to developer jobs. And here’s part of how I got my job that I do now.

I answered a job opening for a ‘Junior Application Developer’ and when they saw my resume, they sent me the following request:

I would like you to try the following 2 assignments, both preparing for a position as application developer: 1. Make a function which accepts a string and returns the Google-results for this string. You can use Python and the requests-module. 2. Also make a function which accepts a string and returns the Google results. This time do it with a different method: use Python and Selenium, which controls a browser (default: Firefox). For both I would like to receive your solution before we have our conversation, if it is possible.

The first thing I did when I got this email was panic.

WTF IS A FUNCTION? WHAT IS THE REQUESTS-MODULE? WHAT IS SELENIUM? HOLY SHIT!! !

Then I calmed down and rewrote the problem:

  1. Make a function
    • accepts a string
    • returns the Google-results
    • use Python and the requests-module
  2. make a function
    • accepts a string
    • returns the Google results
    • use Python and Selenium
      • which controls a browser (default: Firefox)

Writing the sentences like this helped me see the parts of the problem that I needed to google, making it much easier to digest. You might find that you need to write it out another way, but you’ll find it as you practice and learn.

Once I googled and found the information I needed, I tested it locally and then uploaded the information onto github. Now, don’t just throw your code up there, but document it.

github-docs

Yes, I received a job offer.

Finally, I have a few pieces of advice for new programmers, but if you don’t remember any of these, please remember that you can visit My Django Story where the DjangoGirls people have been interviewing programmers for years and one of the questions that they ask every single person is “What advice do you have for new programmers?”

Ola Sitarska, one of the co-founders of DjangoGirls says:

If you like doing this, then stick to it. Programming can sometimes be frustrating or boring, but it will get better. Don’t ever let someone tell you that you shouldn’t be programming. Ask for help often and help others.

And Ola Sendecka, the other co-founder of DjangoGirls says:

“It is very hard at the beginning when we know almost nothing. The worst thing is that it is hard to ask good questions. We don’t know what we don’t know :). All answers are there – you will find them on the Internet, books, you can ask people around you. But knowing what you want to know is crucial. So you don’t need to be perfect at the beginning. You will make many, many mistakes and that’s ok. You will improve. The best thing you could do is learning how to ask questions and how not to be afraid of asking them.

And my advice is twofold:

First, learn to google. Finding your own answer is key to being a successful developer, imho. Although, figuring out when to ask others for help is also very important. But, still, learn to google. Second, don’t be afraid to make mistakes. One of the reasons why children are so good at learning things is that they aren’t embarrassed when they make mistakes, they just get back up and try again. Adults have a stumbling block of “feeling embarrassed” or “looking silly”. Give yourself permission to make a mess, learn from it, and progress.

Now let’s get coding!

So I spoke at PyGrunn

b4mUbtAwAnd I just now found the video which has been up since June 2 this year by looking for “K Rain Leander” results via images.google.com. If I search for the same phrase on google.com it doesn’t show on the first page, which is not ideal.

I’m so bored with that previous paragraph that I fell asleep.

*zzzzzzz*

AND THE BIG NEWS IS (drumroll, please)

Red_HatNo, we’re not pregnant.

No, we’re not moving.

I have a shiny new job.

But first, some history.

I used to dance. And to pay for rehearsal space and costumes and performance venues, I taught myself HTML / CSS / javascript. Eventually I retired from dance and took web development seriously – interned in New York, worked with a few internet marketing companies in North Carolina.

Had a blast.

Then Red Hat changed their new hire scope – you had to have two of three requirements – customer service, technical skills, or linux. I had the first two. I was hired. I had a blast.

But when you work at Red Hat, every day is drinking from the firehose and I had to stop coding entirely.

Fast forward to a few months ago – you may have heard, I had a sweet little boy. I took advantage of the Netherlands parental leave policy and switched to part time to save money on daycare and spend more time with the new operating system.

The position I have now doesn’t allow part time work, so my main job was to find a new job. I didn’t know what I wanted to do, specifically, but I knew I couldn’t be a Technical Account Manager anymore. I started shot gun blasting anything that sounded interesting.

Fast forward to a few months ago when I took a DjangoGirls workshop and remembered how much I loved to code.

BAM!

That narrowed down my search to anything with development work.

But then it got tricky.

I’m starting over, effectively. I just started learning Python / Django / Ruby on Rails / MongoDB. But I can’t move to Brno where most of our junior developers start.

It took a few months to find the right opportunity within Red Hat.

So when I say “I have a shiny new job,” what I actually mean is “OMGOMGOMG I JUST LANDED MY DREAM JOB!”

I am a Red Hat OpenStack Software Engineer.

Hello, Hi, I am speaking at DjangoCon US

djangoThat’s right, Folks.

You heard it hear first.

Unless you follow me on twitter and don’t have so much in your following list that you saw my really quick announcement that…

I’M TALKING AT DJANGOCON US 2015!

Dear Rain,

I’m pleased to tell you that your talk “Leveraging Procedural Knowledge” has been accepted for DjangoCon US 2015. Congratulations!

That’s right, it’s got the same title as the talk I just gave at PyGrunn but since I’ll be further along in learning Django, having finished deploying to OpenShift and practiced practiced practiced and completed and all the other things I said were the next steps, the talk with evolve.

And, if you’d like to see me speak and experience a kickass conference about all things django, early bird registration is open until JULY FIRST!

This post is brought to you by the letter ‘a’ and the number LINK.

My PyGrunn 2015 tech talk – Leveraging Procedural Knowledge

photoPyGrunn 2015 SLIDES Leveraging Procedural Knowledge

ONE

Hello. I’m Rain.

I encourage you to send your comments, feedback, and snide remarks to my twitter handle @rainsdance during the course of this presentation.

I am a Technical Account Manager with Red Hat and I know a lot about a few specific technologies, I am a django / python newbie. At Red Hat we have SBRs – specialty based routing – it means that I know a lot about Satellite, but very little about clusters. We realize that everyone’s a newbie about something even if they know a lot about something else.

While you may not be new to django or python, this talk will show you how to leverage the knowledge you already have to learn something new.

TWO

In this talk I will define procedural knowledge. I will discuss how, in order to leverage procedural knowledge, you need to know what you know.

I will talk about one of the first time I leveraged procedural knowledge – when I was initially hired at Red Hat I had to drink from the firehose.

Then I’ll share lessons learned at a recent Django Girls workshop and what I’ve done since. And finally share my next steps as a django python newbie.

THREE

There’s procedural knowledge and declarative knowledge and it’s sometimes easier to understand declarative before procedural.

Declaractive knowledge is that Amsterdam is the capital of the Netherlands. J is the 10th letter of the ISO basic latin alphabet. It rains in Groninge ALL THE TIME.

But procedural knowledge is HOW to ride a bike. HOW to prepare for a marathon. HOW to learn a new language. You may know the importance of a perfect arm stroke and the use of coordination while swimming, but drown in the pool.

There are two schools of thought – one is that declarative knowledge precedes procedural knowledge. You need to PRACTICE for hours, days, weeks, years before you can DO without effort. The other school of thought is that you need to know the theory before the substance.

Both are correct.

You do need to practice, but you can also use procedural knowledge to make practice more efficient.

FOUR

But first, KNOW THYSELF.

In order to leverage procedural knowledge, you need to know who you are and what you know.

My first computer was a TI-99/4A, a clunky keyboard thing you connected to a television to program BASIC. I love languages and logic puzzles and math. I danced and choreographed for twenty years and didn’t have money for rehearsal space or performance space or costumes or lighting rental. Therefore I taught myself HTML and CSS in order to barter web and graphic design for goods and services. I have a Master of Information Technology.

This is who I am.

FIVE

I heard of Red Hat back in 1993 from a friend who taught me about open source. I thought, “Wow, cool.” And then finished my degree in dance.

Years later I ended up moving to North Carolina, right near Red Hat headquarters and they changed their hiring policy for frontline support. You had to have two out of three of the following criteria: customer service, technology ability, or linux experience. I had customer service and technology ability – I was hired.

At the time, you had to pass the Red Hat Certified Engineer test within ninety days or you’re fired.

No pressure.

I applied logic and my afinity for languages to learning linux command line.

I passed the RHCE within sixty days.

SIX

A few months ago, I was looking through the devconf.cz presentations and came across the Django Girls talk.

Before joining Red Hat, six years ago, I had a blast as an HTML / CSS / PHP / javascript developer with several internet marketing companies.

I googled “django girls groningen” and there was a workshop in two weeks.

I applied.

I got in.

The day before the workshop.

Part of the workshop is a two to three hour preparation with a Django Girls coach – but with only one night notice, there wasn’t a coach available. Time to drink from the firehose.

The email to prepare for the workshop was something along the lines of:

– install python3
– install django
– set up a virtual environment
– introduction to html
– read the first few chapters of tutorial.djangogirls.org

Have you ever taken that ‘trick’ quiz with about a hundred steps – the first step is read all of the steps before doing *anything* then the 99th step is don’t do steps 2-98 and step 100 is put your name on the quiz and hand it in? It’s evil, but effective and the end result is you learn to read. And maybe patience. But mostly read.

Also, are you familiar with RTFM?

It means ‘read the … manual’.

I did not read the manual nor patiently peruse all the steps before beginning and therefore went down the rabbit hole and created a virtual Red Hat Enterprise Linux seven machine. It wasn’t until I got to the last step, read the first few chapters of tutorial.djangogirls.org, that I realized that setting up a virtual environment is part of coding with django.

Learned that lesson the hard way.

A little aside, I also installed python2.7 because RHEL7 doesn’t offer python3, it backports the stable functionality of python3 to python2.7 as long as it’s secure / doesn’t conflict because when RHEL7 was released python3 wasn’t enterprise ready yet.

At the workshop I zoomed along, troubleshooting and figuring out my own issues until [queue dramatic music]:

“OperationalError at /admin/ no such column: django_content_type.name”

I googled, I searched, I hacked, I raised my hand and asked for help. My coach googled and searched and hacked, he raised his hand and asked for help. Another coach googled / hacked and shrugged.

We let it go.

That night I rebuilt the app, saving constantly, and it worked.

http://leanderthalblog.herokuapp.com/

Which is not a Good Thing ™ because I don’t know *what* broke it in the first place nor *how* I fixed it, so if it happened again… [more dramatic music]

SEVEN

After the workshop I did the Django Girls Tutorial Extensions https://www.gitbook.com/book/djangogirls/django-girls-tutorial-extensions/details which includes adding more to your website, creating a comment model, and postgreSQL installation.

A colleague challenged me to deploy on OpenShift. I tried.

http://django-leanderthal.rhcloud.com

And I got the EXACT SAME ERROR MESSAGE “OperationalError at /admin/ no such column: django_content_type.name”. I walked away from that error message in order to prepare for the PyGrunn 2015 conference.

I am reading “Learn Python the Hard Way” which told me not to use vim because only people who want lots of control and have big beards use vim.

I beg to differ.

I highly highly highly recommend this tutorial for those new to python, though, seriously, as it’s thorough and breaks things down perfectly.

EIGHT

What’s next? I WILL finish the OpenShift deployment. Dangit.

Django Girls recently switched their deployment from Heroku to PythonAnywhere – I’m going to tackle that deployment, too.

Lots of practice.

I will contribute to the Django Girls community.

I am building a couple of applications with a friend of mine who is also new to django and python.

Girls Who Like to Code, a group of people from the March Django Girls Groningen workshop is getting together on June 19th to hack a bit.

And Django Girls is having another workshop in Groningen on September 19th which I will join as a coach.

NINE

This talk was written on and presented using Red Hat Enterprise Linux release 7.1 and LibreOffice 4.2 Impress.

Please be sure to leave any feedback, comments, questions, snide remarks on my twitter account @rainsdance.

Thank you for your time.

I am speaking at PyGrunn 22 May 2015 – COME LISTEN

11140249_10101740531248471_1478972152288265857_n

If you’re in and want to leverage procedural knowledge to learn your next language – come check me out on May 22nd!

“What is procedural knowledge and why would I want to leverage it?”

I’M GLAD YOU ASKED

Procedural knowledge, as opposed to declarative knowledge, is knowing HOW to do something versus WHAT something is – knowing how to ride a bike versus what is the capital of the Netherlands.

I attended a Django Girls workshop here in Groningen and applied procedural knowledge to prepare for the workshop, to use the limited time I had within the workshop as efficiently as possible, and to move forward with django and python afterwards.

On May 22nd, I’ll share the specific steps as well as lessons learned in this process at PyGrunn 2015 – hope to see you there!