Sunday Bloody Sunday

u2Artist: U2
Album: War
Released: 1983

One of U2’s most overtly political songs, its lyrics describe the horror felt by an observer of the Troubles in Northern Ireland, mainly focusing on the Bloody Sunday incident in Derry where British troops shot and killed unarmed civil rights protesters and bystanders who were there to rally against internment (imprisonment without trial), while at the same time rejecting hate and revenge as a response noted in the lyrics, “There’s many lost, but tell me who has won.”

Continue reading “Sunday Bloody Sunday”

Let The Freaky Fridays BEGIN

FREAKY FRIDAYIt occurs to me that it might be easier to write every day if I have a series going or a daily guide for what a day might be about.

And since I want to write every single day, I humbly present.

The Daily Series

AKA The Weekly WiseCracks

AKA Holy Shit I’m Actually Going To Write Every Single Day of the Week WTF

AKA Just Read It Already

Moody Monday : Because the first workday of the week needs all the help it can get, especially when it’s just another manic Monday. Inspiration, health, and self improvement will be the name of the game. Continue reading “Let The Freaky Fridays BEGIN”

Tackling Talker’s Block With a Sledge Hammer

seth-godin(A friend of mine will be so happy that I’m starting this post this way…) I was listening to a podcast the other day. Specifically, the Tim Ferris podcast featuring Seth Godin who talked about so many amazing things like how he makes honey vodka and his obsession with chocolate and that if you’d like to tackle writer’s block, write every day.

And I do.

Sort of. Mostly. On


I did.

Continue reading “Tackling Talker’s Block With a Sledge Hammer”

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 ( (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 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 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
$ wget

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

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 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!

I would buy it.

6777694048_775ba01a70_o (1)I have thought about some books I’d like to write – in no particular order:

– project do: goal achievement because SCIENCE
social psychology research for goal achievement; applying it to a goal achievement method. invent or better define a method.

– play with stuff: getting started with Internet of Things
clear cut playing with IoT and toys from the 80s, but making projects that are applicable to other things

– control your house: cloud computing at the dinner table
figure out how to enter the contents of the fridge and pantry into a central database that records amount / expiration date and set up a scanner for ordering more automatically… possibly that compiles a list until you send a different signal to actually order. so it doesn’t order things a little bit at a time.

– writing something about getting started as a new coder. maybe as a new woman coder. getting started as a newb female coder. resources. speaking at conferences. learning and practicing. figuring out how you learn. how to do it in your copious spare time.

What would you like to read?