The Calm Before The Red Hat Summit Storm

13528972_10102312628171651_8735613755261196809_nToday is about recovering from an incredible translatlantic journey filled with flight delays and SamsungVR action and sleeping in awkward seats and meeting amazing geeks along the way.

Today is sleeping in and posting later in the day and painting nails.

Today is polishing slides and practicing your talk and realizing you have sixty minutes, not thirty, so those people are going to get ALL THE KNOWLEDGE.

Continue reading “The Calm Before The Red Hat Summit Storm”

I Am LITERALLY Flying BACK To The United States RIGHT NOW

photo-1459179379156-37103a6cfa72Via Iceland.

Cause DAMN they’ve got some good sales.

This time I’m headed to California for Red Hat Summit where I’m giving a talk on Wednesday, Jun 29, at 10:15 AM – 11:15 AM and I’d rather not think about that right now because it’s a very intimidating and stressful subject[*] so let’s play WHERE WERE YOU A YEAR AGO TODAY?!?

Continue reading “I Am LITERALLY Flying BACK To The United States RIGHT NOW”

Same Bat Time. Same Bat Channel.

typingsome things happened after i wrote [trigger warning] “I woke up in the tub”.

one, the hits / visitors / stats went through the roof. higher than i’ve ever seen, one day there were over five hundred hits. when the average before was around ten.


two, people sent their support in the form of email, calls, private messages, comments, and such. it was overwhelming and beautiful and amazing and i wanted it to never end.


but also, i felt an incredible pressure to leap forward and write the rest of the story. and simultaneously, what if the rest of the story isn’t as engaging? or what if i say something that turns people against me? or what if i can’t find the words?

Continue reading “Same Bat Time. Same Bat Channel.”

Throw Back Thursday Except It’s Sundae Sunday

openstackThis week I ran into SO MANY PEOPLE that I haven’t seen in over five years, since before moving across the pond, because we have all moved to different departments and whatnot and we all convened at OpenStack Summit in Austin.

See, cause before I was in Engineering, I was on frontline and we used to work really REALLY hard, even on Christmas.

Continue reading “Throw Back Thursday Except It’s Sundae Sunday”

All Your Repos Are Belong To Us

rdo-logoToday (and tomorrow) are the RDO Mitaka Test Days in Brno, Czech Republic and I spent a few hours this morning catching up on the tripleo quickstart live demonstration video and the rest of the day bashing my head against the packstack sanity checks for RHEL 7.2, CentOS 7.1, and Fedora 22.

And I took awesome notes. To share with you.

Cause I love.

There are quite a few prerequisites assumed which I’d like to clarify right now because I had to figure this out myself.

My ThinkPad W541 laptop environment:

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.2 (Maipo)

$ cat /proc/version
Linux version 3.10.0-327.10.1.el7.x86_64 (mockbuild@x86-021.build.eng.bos.redhat.com) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) ) #1 SMP Sat Jan 23 04:54:55 EST 2016

$ free -m
total used free shared buff/cache available
Mem: 15516 2020 7846 382 5649 12796
Swap: 7879 1 7878

$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Model name: Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz
Stepping: 3
CPU MHz: 2667.328
BogoMIPS: 5587.36
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
NUMA node0 CPU(s): 0-7

I followed the instructions on https://www.rdoproject.org/testday/mitaka/milestone3/ to set up three virtual environments for testing purposes. This assumes you know how to set up a virtual system within Virtual Machine Manager which is fairly lacking, but the screenshots are helpful and the interface is fairly intuitive.

Note to self: write post about setting up virtual machines.

My goal for the day was to run a sanity check against packstack on CentOS, RHEL, and Fedora.


Read over all the steps because I included my mistakes / errors along the way, so the first few steps won’t work as written.

1. Download the .iso files. In order to set up the three virtual environments, I needed to download the files for Red Hat Enterprise Linux 7, CentOS 7 and Fedora 22. If you don’t have a RHEL subscription, you can’t get to those particular bits, but continue with CentOS.

You’ll notice I didn’t say continue with CentOS AND Fedora 22 – that’s because I ran into this error:

Pre installing Puppet and discovering hosts' details [ ERROR ]

ERROR : Failed to run remote script, stdout:
stderr: Warning: Permanently added '' (ECDSA) to the list of
known hosts.
+ trap t ERR
+ facter -p
/usr/share/ruby/vendor_ruby/puppet/defaults.rb:381: warning: duplicated key at
line 382 ignored: :queue_type uninitialized constanct Syck
++ t
++ exit 12

I leapt into #rdo on Freenode to verify that the RDO Community is no longer supporting / developing OpenStack for Fedora, sadly. But it means one less thing to test, so for now it’s okay. If you want Fedora supported again, join us on irc and make a case for it – this is how open source works. In the meantime, I updated the https://www.rdoproject.org/testday/mitaka/testedsetups3/ page and continued.

2. Install virtual machine manager, if needed.
3. Use VM manager to create a RHEL7 minimal install and a CentOS7 minimal install with 1024 memory, 1 CPU, 16GB storage. Remember to enable networking.
4. Enable repos for RHEL system if you have a subscription. If not, go to step five.

$ subscription-manager register
$ subscription-manager attach --auto
$ subscription-manager repos --enable rhel-7-server-optional-rpms
$ subscription-manager repos --enable rhel-7-server-extras-rpms
$ subscription-manager repos --enable rhel-7-server-rh-common-rpms

According to the documentation, only one repository needed to be enabled, but then you run into this beautiful error: [ ERROR ]
Applying Puppet manifests [ ERROR ]

ERROR : Error appeared during Puppet run:
Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install openstack-cinder'
returned 1: Error: Package:
You will find full trace in log

Which indicates that you are missing dependencies if you look into the full trace log. This is how I found out all three of those repositories need to be enabled and this has also been updated in documentation.

5. Install yum-plugin-priorities

$ yum install -y yum-plugin-priorities

6. Install the .repo files:

$ cd /etc/yum.repos.d/
$ wget http://trunk.rdoproject.org/centos7/delorean-deps.repo
$ wget http://trunk.rdoproject.org/centos7/current-passed-ci/delorean.repo

7. Update everything.

$ sudo yum -y update

8. Install packstack.

$ sudo yum install -y openstack-packstack

9. Run this command as a regular user, not root, because root will gloss over some error messages that will make life more difficult once everything’s up and running.

$ packstack --allinone


Puppet borked first. [ ERROR ]
Applying Puppet manifests [ ERROR ]

ERROR : Error appeared during Puppet run:
Could not evaluate: Cannot allocate memory - fork(2)

I realized immediately that I hadn’t allocated enough memory to each virtual system so I skipped back down to step number three:

3. Install minimal install centos7 and rhel7 systems with 4096 memory allocated, 2 CPUs and 16GB storage each.

And then continued with the same steps that had to be repeated because these are two new systems.

4. Enable repos for RHEL system if you have a subscription.
5. Install yum-plugin-priorities.
6. Install the .repo files.
7. Update everything.
8. Install packstack.
9. Run packstack –allinone as a non-root user.

By the time I finished the sanity checks with both CentOS and RHEL, another tester had verified CentOS, but I got to add my name as the official tester for packstack sanity check at https://www.rdoproject.org/testday/mitaka/testedsetups3/#packstack-based-installation-neutron-networking.

Now it’s time to relax and prep for tomorrow’s testing day. Be sure to add any questions / comments / snide remarks below and I hope to see you contributing to the RDO Project SOON!

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.



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.


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.


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!

Hello, My Name Is…

71395_10100661065596291_888663183_nI am in the midst of a new position within Red Hat and part of the new responsibilities include applying to public speaking opportunities all over the world. And since you have to include a short biography with these applications, I decided it was time for a bit of an overhaul. To give perspective, here is the old version:

K Rain Leander is an enthusiastic Software Engineer with a background in web development / graphic design / internet marketing and a Master’s in Information Technology. She is currently leveraging her procedural knowledge from over six years as an engineer with Red Hat to study Django and Python languages as well as OpenStack and RDO-manager technologies and become more active in the Fedora community.

I literally just fell asleep reading those sentences and if you did the same I DON’T BLAME YOU ONE BIT.

To figure out the new bio, I read a lot, diving here and there and everywhere for advice and insight and skipped over articles that similarly made me fall asleep until I put together something stronger, more interesting and, most importantly, a description of a person I WANT TO MEET. Sure, I could link those articles for you, but I’d rather be snarky about it.

K Rain Leander is a systematic, slightly psychic, interdisciplinary developer evangelist with a Bachelor’s in dance and a Master’s in IT. An epic public speaker, she has disappeared within a box stuffed with swords, created life, and went skydiving with the Queen. Seriously. Rain is an active technical contributor with RDO manager, OpenStack, DjangoGirls, and Project DO. Come say hello. Bring cake.

Seriously, though, bring cake.

And now I’m a Software Engineer

jim_w-1000x1000I recently switched career paths within Red Hat, but I looked simultaneously outside and within the company for the next opportunity. The not-so-obvious sign it’s time to switch jobs resonates with how that search went and my final decision to stay.

“…worry less about whether a new opportunity might be the “right step” for your career. Rather, look for those roles and organizations that are tied to things you enjoy doing or are interested in. And make the time to learn everything you can from those around you while you’re there. Don’t take those opportunities for granted.

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.


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.