– blog

Learning in motion

Installing virtualenvwrapper with python3 on macOS

without comments

I started to tweet about this but then the explanation was too large for a tweet. I also read that someone stated that if it’s too long for a simple tweet then blog about it…

I’m a Django fullstack developer currently and do so on a linux desktop at work. I honestly haven’t done much developing at home in almost a year and my mac’s setup is in need of some maintenance.

So doing something once can make the pain points memorable but fuzzy when you try to do it again a year later. That’s what occurred this evening while installing virtualenvwrapper. It’s handy once configured correctly and installed. So here’s some help.

I started with this refresher

Which is a nice start of course except for the fact that my file was not where it was “supposed to be”.

The pip tells you where it’s installing everything.

For me it was here:


Then I moved on to this tutorial

Which was helpful in troubleshooting with the reference of the /.bash_profile but really that’s all it helped me with.

More looking at directories, more trying different tutorials etc… then I run into this stackoverflow question that was my eureka!

export WORKON_HOME=$HOME/code/.virtualenvs

source /usr/local/bin/

Save, close.

then:  $ source ~/.bash_profile

and: $ mkvirtualenv test

Except I had to change the above up a little bit to match what I had going on.  First I needed to confirm the location of my file.

Which I did with:  sudo find /Library -name

RESULT: /Library/Frameworks/Python.framework/Versions/3.5/bin/

Then I noted that my python directory is actually a python3 directory so I threw a 3 at the end.

Ultimately I added the below to my .bash_profile file:

export WORKON_HOME=$HOME/code/.virtualenvs
export PROJECT_HOME=$HOME/code
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.5/bin/virtualenv

source /Library/Frameworks/Python.framework/Versions/3.5/bin/

Saved and closed the file.

Went back to my terminal..

naomisee at Naomis-MacBook-Pro-8 in ~/repos on master [+!?]

$ source ~/.bash_profile

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/premkproject

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/postmkproject

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/initialize

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/premkvirtualenv

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/postmkvirtualenv

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/prermvirtualenv

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/postrmvirtualenv

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/predeactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/postdeactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/preactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/postactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/virtualenvs/get_env_details


naomisee at Naomis-MacBook-Pro-8 in ~/repos on master [+!?]

$ mkvirtualenv opug

Using base prefix ‘/Library/Frameworks/Python.framework/Versions/3.5’

New python executable in /Users/naomisee/code/.virtualenvs/opug/bin/python3.5

Also creating executable in /Users/naomisee/code/.virtualenvs/opug/bin/python

Installing setuptools, pip, wheel…done.

virtualenvwrapper.user_scripts creating /Users/naomisee/code/.virtualenvs/opug/bin/predeactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/code/.virtualenvs/opug/bin/postdeactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/code/.virtualenvs/opug/bin/preactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/code/.virtualenvs/opug/bin/postactivate

virtualenvwrapper.user_scripts creating /Users/naomisee/code/.virtualenvs/opug/bin/get_env_details

(opug) naomisee at Naomis-MacBook-Pro-8 in ~/repos on master [+!?]

$ deactivate

naomisee at Naomis-MacBook-Pro-8 in ~/repos on master [+!?]

So that is that! I’m super happy that I took the time to jot this down because a year from now I’ll probably have to do it again.


Written by seenaomi

November 15th, 2017 at 1:23 am

Posted in Allthecode

Do it anyway

without comments

Growing up I always had curiosities about technology. Meanwhile fighting off the forces around me pushing me to be the ultimate housewife. Growing up everything was so focused on appearance that I rebelled. That and femininity seemed to attract weirdos and was confusing. I didn’t get what the big deal was all about. Now I embrace my femininity.  I’m a woman who enjoys pink and wearing dresses. But that seems to confuse some as I still dig technology. It’s ok to be into both. I am also creative and passionate about art. Incorporating them all together is a dream come true. Thankfully I live in a community that encourages such incorporation. But I didn’t always.

I had the exposure but lacked the encouragement. It’s so important for a child to feel encouraged. Without it, it just became very “what’s the point”? I had no idea. I was not taught what the point was. My talents and interests were not encouraged. They were not honored. As a result I ended up being rather lost on what my future was to be. I had no idea what I was supposed to do. I had no idea what you do once high school is over. I was told I was on my own to figure it out. So I didn’t bother. I didn’t know where to start and was already pretty discouraged by some poor experiences I had with my school’s administration and instructors. As it would turn out my parents were told that I was good enough to qualify for an art scholarship. Thing is everyone forgot to tell me this.

There was always a computer in my home that I wasn’t allowed to touch. In high school my buddy and I would go to the library and spend hours on weird forums learning about whatever we could. The library at my school had computers that I would get on and play SIM City while all the trench coat dudes would play magic the gathering. Once the internet was a thing at school I would spend all the time I could trying to learn and hack (before I knew it was hacking) around the schools security filters to learn more.

One of the good things that came out of my parents divorce is that I got my dad’s computer. It was a ridiculous beast of a machine. The Gateway Navigator if anyone remembers that thing. HUGE tube TV screen that you can watch TV and compute with. The ole picture in a picture. The computer box was huge as well. It was just a lot if you think about the computing power of a cellphone or tablet today. Anyways it was mine all mine and I constantly broke it trying to make it do things I read about other guys doing. Unfortunately during this time other things in my life were falling to pieces. Being an insanely curious person that everyone tried to keep in the dark or discourage I found myself experimenting with chemicals. Life got a bit crazy for a while for me. I ended up in a 3/4 house and in the end sold this monster computer for a months rent. As I journeyed to come back from the ‘dark side’ my curiosity was still there but not at my finger tips.

It wasn’t until I found myself back in Iowa that I bought an old desktop from my aunt for $100. I think it had win98 on it. I eventually installed Mandrake (old linux OS) onto the machine because I was reading a lot about linux and these dudes on IRC said I don’t need to worry about learning about linux. I need to worry more about being ‘hot’. My hot self went out to a office supply chain and bought Mandrake for $60. It came with disks and this horrible manual. The manual was horrible only because it was written by several people all of which had broken english (they were French natively). But I managed to do it! I installed it. I even got dual boot to work so I could login into windows or linux depending on my mood. I felt so friggin rad. I was on the computer again, a lot, learning and communicating. I got a lot of grief from forces around me they didn’t understand that I was learning. They thought I was just wasting my life on the computer. Perhaps I was but it felt better than my reality of living in a dead end city with no idea what to do with myself there.

I ended up getting a job in a small office calling locals for donations. My boss was super impressed by me and when I got a car had me start picking up donations for him. I would get my route and rush to my house (we didn’t have computers in the office it was cord phones and a piece of paper) Yahoo! map my route and then head out. I was the best he had and he was really impressed by me. While doing this I was also helping to organize for the second year in a row a tent at a music festival in Wisconsin. We had 3 days 25 + talent from Nebraska and Iowa that I was wrangling to get ready to head out to the event in Wisconsin. I wrangled the talent, the equipment, the tent, the activities that would occur in our area to draw people in. I mean I had a ton of people helping but I directed the traffic. A promoter from Minnesota contacted the webmaster for a website I was involved with about participating.It was an opportunity I thought would be great for our scene. Hype started but no one really took the lead to get it going so I stepped in and gave it a go. Turned out I wasn’t bad at it despite a few freak outs. Both years were big successes. Thanks mostly to all the awesome people that were involved (All of which was wrangled via my trusty $100 desktop and fancy internet). But anyway I told my boss about this and he was instantly impressed and offered me an opportunity in Idaho to make some killer cash in a short months time doing what I did locally there. He would put me up in an extended stay motel and pay for everything. Sound too good to be true? Well it was but I went (computer in toe) and it was an adventure in itself I’ll save for another day. The short of it: I ended up not being able to attend the event in Wisconsin and found myself involved in a project with the Deputy department that was ripping off the community). When I escaped from Idaho I immediately quit the job.

I found another job at a kiosk in the mall selling cellphone face plates and purses. I would have to take the cellphones a part to put on the plates. That was a delicate task especially when the owner of the phone is looming over you. I ended up doing well selling the products the kiosk next-door ended up offering me a job making more money. That opportunity went so well that it lead to me getting offered a management position in Omaha. I jumped on that and after a year realized retail management is the worst for me. I got another job and it was becoming clear to me that I needed to get an education. Unfortunately I was in default because I had half heartedly attempted to start school with the wrong intentions. As a result I had to pay myself out of default before I could get back into school. I ended up moving into a room in the house of a couple I had recently met. They wanted to help me. I was able to save and pay high payments to get myself out of default as well as save up enough money to buy a car cash down (2500) that I still drive to this day (the car story was pretty great, I posted on a forum that I was in need out of woe and a friend who was moving to Dubai with his wife offered to sell me one of theirs).

So that was the start of it. 8 years later I have an associates degree, a certificate completion from a code school, and a bachelors degree. During the 8yrs it took me to get where I am today I had SO MANY curve balls and negative encounters hit me from every direction. But I pushed on. I refused to stop. I had a goal. I didn’t have the best directions to achieve my goal so my journey was very long. I often worked full time as well as had 1 or 2 part time jobs all while taking college classes. I often feel out of sorts and uncomfortable because my journey has not been like others. My past is very much my own. I don’t always know how to be as I’ve had so many tell me how much I can’t or shouldn’t or won’t. Thing is, I did anyway and I did well.

Now the skies the limit and I’m a few years shy of 40. I can dive into anything I want. I still desire approval and acceptance but I think that’s human nature. It’s not my driving force however. It’s not why I do what I do. I do what I do because I can.

Written by seenaomi

September 18th, 2016 at 9:47 pm

Posted in Allthecode

Commanding the commandline

without comments

Ok I’ve gone through several tutorials and they all repeat the same basic commands. Not that this is a bad thing! The key here is to do it everyday. Not only do it everyday but take notes and create a cheatsheet which I have been doing. Of course this cheatsheet is sprawled now amongst 3 different Google docs so a simple todo would be to consolidate and create 1 single commandline cheatsheet doc. Top of the TODOs!

I’m zonked.

The interview today went well. I’ll know more in a week or two. I don’t really want to say more than that!

Tomorrow I will have the full evening to fiddle more with the InterfaceBook Gradle project.

I want to create more concise JavaScript error messages.

Also – remove the ~/java/<tomcat8> folder and move ~/java/something/<tomcat8> into the ~/java folder.    Confirm that everything still works.

So again tomorrow’s TODOs will be:

  1. Consolidate commandline notes into one singular building cheatsheet.
  2. Edit JS error messages to be more concise
  3. remove the ~/java/<tomcat8> folder and move ~/java/something/<tomcat8> into the ~/java folder.    Confirm that everything still works.

Written by seenaomi

September 2nd, 2015 at 10:01 pm

Posted in Allthecode

School is back in session and COBOL

without comments

My college course started yesterday, Applied Statistics. The discussion was to watch 1 of 13 TED talks pertaining to Statistics. I chose: “What country does the most good in the world? I could only use 75 words in my summary – I did over 90 I believe. It got me thinking about the importance of “doing good” and surrounding yourself with others that “do good”. And working for a company that “does good” and living in a city that “does good” and living in a country that “you guessed it”. He touched on globalization issues that we as a world created and how we as a world are really dragging our feet to restore. How we all developed as a world as if we were on our own continent on our own planet. Not like we all share the same planet. Think bigger than yourself. Think bigger than your own country. How will your decisions affect those around you?

Now that is over I’m going through a commandline tutorial via Code Academy. So Tonight will be about that.

Oh! I have an interview for a COBOL entry level position tomorrow –  I’m going through those tutorials instead!


COBOL stands for Common Business Oriented Language, this information along with details below came from a COBOL tutorial from

Simple Hello World in COBOL, main.cobol:





  DISPLAY ‘Hello World’.



Output after going through the compiler:


Compiling main.cobc source code....

$cobc -c -free -x main.cobc 2>&1


Linking the program….

$cobc -x -o demo main.o 2>&1


Executing the program….


Hello World


There is a recommended emulator called Hercules. Everything is so old school I can’t even explain why I am thrilled by this. I know, this is technology and I am weird for digging the old school. While everyone else was getting the latest whatever game station I was playing Legend of the Red Dragon on BBS. That’s just me. Once SimCity turned into The SIMs I lost interest. I prefer to IRC into slack, than API. That’s just how I am.


Cobol uses DB2  – its a database for enterprise solutions


A COBOL program structure consists of divisions as shown in the following image:

 A brief introduction of these divisions is given below:

  • Sections are the logical subdivision of program logic. A section is a collection of paragraphs.
  • Paragraphs are the subdivision of a section or division. It is either user-defined or a predefined name followed by a period, and consists of zero or more sentences/entries.
  • Sentences are the combination of one or more statements. Sentences appear only in the Procedure division. A sentence must end with a period.
  • Statements are meaningful COBOL statement that performs some processing.
  • Characters are the lowest in the hierarchy and cannot be divisible.



An example : Character Strings

Character strings are formed by combining individual characters. A character string can be a

  • Comment,
  • Literal, or
  • COBOL word.

All character strings must be ended with separators. A separator is used to separate character strings.

Frequently used separators : Space, Comma, Period, Apostrophe, Left/Right Parenthesis, and Quotation mark.


****That’s it for now! COBOL looks different than what I am use to but not something I can’t learn. I’m up for it and the company is a great company to work for.

Written by seenaomi

September 1st, 2015 at 9:43 pm

Posted in Allthecode

Gardening site

without comments

Let’s get real here, I have too much dancing around me to be doing any serious gardening related blogging. As much as I would love to! I have been learning so much and only documenting it with images. Ugh! I will regret this later.

Anywhosal I have a placeholder and it’s got nothin. So I want to create a simple feed. I’ll build it to pull from my DB but I would rather they pull from a DB elsewhere. I use dropbox, instagram, flikr, tumblr, apple cloud etc. There has to be a way to smoothly just pull from one of these resources first. I’ll have to research what would be best. I would assume the best would be to host the DB away from the above listed. But I will have to obsessively research this week and find out.


Written by seenaomi

August 31st, 2015 at 10:38 pm

Posted in Allthecode

Slack gateway and IRC via weechat

without comments

Welp it took me about an hour this evening of repeatedly typing the wrong command ! Missing 1 single letter and it kept jacking up the command and causing me to not be able to log in because “password or username” were wrong. NUH UH, They are not!

What did I do to get to that silly head bonking state? After confirming that the gateway access via slack was enabled by one of the Team owners. I then followed the link on the above provided url under “Connecting to a gateway” — Got redirected to another page with the goods I need to enter but not proper directions on how to configure the server properly via weechat.

The gateways page gives you the HOST, USER, and PASS that you need. I already use weechat to access the ##midwesthackerschool IRC channel on the freenode server. So I opted to set up another server via weechat. The directions were super clear yet I still kept getting them wrong because I was rushing and jumping to the command without reading a little bit before.

You literally want to include all of this:

/server add NAME HOST/6667 -autoconnect -ssl -ssl_dhkey_size=512 -password=PASSWORD -username=USERNAME -nicks=NICK

NAME = whatever name you want the server to be called, I chose MWslack

HOST = refer back to the gateway page

PASSWORD = PASS on gateway page

USERNAME = USER on gateway page

I opted to generate an IRC only password – because I was troubleshooting why on earth I was being told my password or username were invalid. You probably do not have to do this if you slow down and not repeat my mistakes. Also almost all the items within that command are needed. I tried to leave off -nicks=nickname thinking it was silly because username and nickname are the same. Nope that was what was causing my issue after my initial error!

Once your server is created all you have to do is /connect NAME (in my case /connect MWslack) and if you are successful you will automatically be added to all the channels you are currently in, on slack. OH! You can omit -autoconnect AND -ssl_dhkey_size=512 as neither caused me any issues. I did opt to ONLY omit autoconnect because I have other servers I use as well. You can put weechat in different --dir(s) to have multiple weechats on different servers running at once. I have yet to do this but it will most likely occur sooner than later.

If you find that the command didn’t work properly and you created a server that is crap you can /server del NAME (MWslack in my case) and it will delete it. If you aren’t sure what you named your server you can /server list and a list of servers you have installed will appear. Tada.

Screen Shot 2015-08-31 at 9.08.17 PM












In weechat by default you can only see 1 channel at a time. To jump around you can /buffer #channelname also included a bunch of handy commands for navigating around your buffers/channels via weechat.

Oh and what was my initial error that sent me on a troubleshooting spin? I forgot the S on -nicks. YEP.

Thank you Calle Erlandsson your article on thoughtbot was the most helpful. 🙂


Written by seenaomi

August 31st, 2015 at 10:00 pm

Posted in Allthecode

IRC and Slack

without comments

I use to use IRC many moons ago… back when dialup was a thing. WHA?! Anywhosal I’ve only recently within the last year started using slack and left IRC behind several years ago because everyone was leaving it as well. Dalnet and Efnet according to are still the most popular of the servers although I don’t know anyone on them. Then its Freenode which I am currently always on now using weechat. Freenode apparently is very popular now. It’s like…who?

I wanted to connect slack and IRC as someone this weekend stated it could be done. Ofcourse it can! But how? Well pretty dang easily apparently — with the right permissions granted by the team owner. I’m working on confirming permissions! Once I do I’m going to give it a whirl.

I‘ll use these directions on connecting to slack with weechat.

That’s my mission, well one of many this week. I’ll document and report back once complete.


EDIT: As it turns out one of the teams I’m a part of has this feature enabled already. I’ll give it a whirl this evening and report back!

Written by seenaomi

August 30th, 2015 at 10:28 pm

Posted in Allthecode


without comments

If you haven’t picked it up yet – as I’m working through things I’m making note of them. I have to do this because I have to keep record. It’s more efficient for me than doodling in a notebook.

Do you have any idea how many doodles of notes I have sprawled across a vast number of notebooks? It’s terrible. I have been grabbing every notebook I find around the house as of late to piece the notes together. Like I found a bunch of really good core concept notes from my Java course I took at Metro Community College. I also am thrilled that I still have access to the emails I sent that instructor as I worked through the weekly projects. Oodles of good stuff.

Adding that to the TODO list

My college courses start back up tomorrow. This semester its Applied Statistics. It worked out that I was able to only take that course which is very heavy in the course content/homework/discussion etc.

I have been trying to get more involved in this TIF project with the Open Nebraska meetup group. We are sifting through a ton of data that is all over the place broken links to broken links, etc. The ultimate plan is to have all the necessary data cleaned and in a easily read format to show what organizations are getting TIF (Tax Increment Financing) for what, for how long, and a bunch of other data. The point is to make this easily accessible for anyone to view and interpret. So far the programming languages used have been python and perl. Neither I’m familiar with other than being aware of the languages. However I am a data nerd and I love to dig through docs. I’ve been useful that’s all that matters.

I’ve also been working with Interface for about 3 weeks now as a Course Experience Manager and it’s been pretty awesome. I am really enjoying the part I get to play in the process. Week 4 starts tomorrow!


Written by seenaomi

August 30th, 2015 at 9:53 pm

Posted in Allthecode

Tuesday 8/25/15 – TODO(s)

without comments

Suggested future work includes:

  1. Check stuff into git and push it to bitbucket
  2. remove the ~/java/<tomcat8> folder and move ~/java/something/<tomcat8> into the ~/java folder.    Confirm that everything still works.
  3. Make a change to home.jsp and run the app via eclipse.   Be happy things work.
  4. Change the ajax (and other) “/book” URLs to use getContextPath
  5. check things into git.   Do this anytime something works.   git is your friend.
  6. Practice the fresh install from time to time to make sure it’s documented and you understand what’s going on.   A fresh install means you start with:
    1. a fresh eclipse (unpack from tar)
    2. a fresh workspace directory
    3. a fresh tomcat (unpack from tar)
    4. a freshly cloned repo from bitbucket
  7. Once you’re a bit comfortable with all of the above, consider the technique of a git branch for each major new enhancement to the project.


Commandline stuff:

I also have a ton of video tutorials to work through a friend provided me sitting on dropbox that I have been working through. I’m working through Chapter 6 of 10 currently. Same friend also provided me with a book on TMUX and

Other things I would like to do in no particular order:

  1. learn selenium – write tests
  2. Make the app accept more than 1 image at a time
  3. Enable email access requests
  4. Convert to a maven project
  5. Convert jquery to angularjs
  6. Convert into android app w/virtual DB
  7. Maybe even spring

Written by seenaomi

August 25th, 2015 at 8:00 pm

Posted in Allthecode

Monday 8/24/15 – happy results gradle2_ib

without comments

Continuing on where I left off Sunday with the error below:

HTTP Status 500 – javax.servlet.ServletException: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

type Exception report

message javax.servlet.ServletException: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z

description The server encountered an internal error that prevented it from fulfilling this request.


org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z


root cause

javax.servlet.ServletException: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z


root cause

java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z


8/24 — The above is fixed !

Solution : For some reason the mysql-connector-java-5.1.36.jar file had vanished from the gradle2>web-inf>lib folder within tomcat I copied it in there and tada success!

Well that was fun. Now I can actually work through these other errors. Goodtimes.

Also note jquery error on the home.jsp page – this error is stopping the page from pulling current public noted posts from the database and displaying on the page, the url is wrong – http://localhost:8080/gradle2_ib/book/InterfacebookServlet?start=0&count=20&username= 404 (Not Found)

^^ the above was fixed by changing the url path from being hardcoded to the former war file to now – url : “<%=request.getContextPath()%>/InterfacebookServlet”

Now I need to fix the image urls as they are not showing up on the page but the public posts are!

I will need to change all the book references to <%=request.getContextPath()%> which we learned in class but still hardcoded because I’m sure none of us thought we would be converting the builds into other project builds and the war names would be changing.

Ok so I still need to label the error alerts better however I was able to get them to stop on the index and home.jsp pages. By again changing all references to the book war in the ajax url path to :


           url : “<%=request.getContextPath()%>/InterfacebookServlet”

Images however are not showing up – I will have to dig deeper to sort that out. I did change the photo url references from book to the getContextPath but that was incorrect as they are not actually referencing getting images just uploading added images via dropzone. I made tweaks to the but that was also incorrect after further thinking it through that is just a local hosting folder for the images as they get converted. Long story short I haven’t located where the url string is but I will and I will correct it.

Pushed current changes to Bitbucket

I had been trying to figure out why images weren’t showing. Wasted an hour or more before I did a test post and sure enough the image showed up – so then I wracked the code a little bit more until I looked at the DB to see how they show up there.

/book/uploads/images/1434942682905seemenaomi2.jpg   22

/book/uploads/images/1435087780262coding.jpg 23

/book/uploads/images/1435088185658binary_code.jpg 24

/gradle2_ib/uploads/images/1440477705177coding.jpg 25

So there’s that. Wondering if it’s just that way now – or if I can hardcode the DB so all images reflect the new war or if that would work or … I dunno I’ll keep working on it.

The answer is YES! I can hard code the DB to change the war name and the images then show up – woo

Final commit — changed line 341 the url in the onclick was hardcoded to prior war

changed it to <%=request.getContextPath()%> of the home.jsp file

Written by seenaomi

August 24th, 2015 at 7:44 pm

Posted in Allthecode