“Men, commit to mentoring women”

Today on LinkedIn, I saw a post from Melinda Gates publicizing Lean In’s #MentorHer message: Men, commit to mentoring women.

I wasn’t aware of this campaign, but think it’s a wonderful answer to the question, “I’m just one person; what can I do?” When we see major imbalances in the tech industry, it’s so easy to feel overwhelmed and think the problems are too widespread and deeply ingrained for us to really make much difference. But if we can stop and shift our focus outward, and actively seek opportunities to mentor people who are less likely to receive that kind of help, we can make a huge impact in their lives. They are then much better positioned to lend a hand to someone else who could use some help. You never know how far one kind gesture can go, or how many lives it can change for the better.

One day, when I was about 9, a neighbor and family friend called me over to come check out the new computer he had just bought. This was a long time ago in the ‘burbs, and nobody we knew owned a computer, so this was a Big Deal. He briefly explained the hardware and peripherals and how everything was connected, then typed in a simple program and ran it. I was awestruck. You mean, you can make this thing do whatever you want, as long as you understand how to talk to it?? Show me another one! I was hooked forever. Soon I had my own computer, where I spent countless hours learning to program and creating new projects. Later on, I learned how to upgrade my computers, and take them apart and repair them when things went wrong. Thus began my lifelong love of technology, and a successful IT career. My neighbor had no idea at the time that it would be such a life-altering experience for me. I made a point to come back as an adult and let him know just how influential he’d been in my life.

Mentor girls and women, especially girls/women of color, and people from disadvantaged or under-represented groups. It might change someone’s life, and indeed the world, more than you ever thought possible.

Ω

Advertisements

Developer resources

If you haven’t heard of these resources yet, I highly recommend checking them out. Two of them have been completely life-changing for me, and I fully expect the others to become so as I continue to learn from them.

Medium – The coding articles are very informative. Covers many other topics, too. Here’s a tremendously helpful article on The 10 Best Coding Challenge Websites for 2018. I’ve tried #2, 3, and 6, and they’re all good stuff.

Free Code Camp – Learn to code for free! Then use your knowledge to help non-profits while gaining valuable real-world experience. Here’s their Medium site and podcast.

Outreachy – Internships for Under-Represented People in Tech – In case you’ve missed my posts on this, I will be forever grateful to the GNOME Foundation and the Open Technology Institute for giving me a much-needed boost into the field of software development. Outreachy provides paid 3-month internships to selected applicants from  from groups traditionally underrepresented in tech. This includes women (cis and trans), trans men, genderqueer, and U.S. residents and nationals of any gender who are Black/African American, Hispanic/Latin@, Native American/American Indian, Alaska Native, Native Hawaiian, or Pacific Islander. They are always expanding the program to reach out to other unrepresented backgrounds.

Learn To Code With Me – An excellent website and podcast aimed at helping new and early career developers, and non-techies wanting to break into tech. Here’s a compilation of 49 of the Best Places to Learn to Code for Free.

Western Governors University – Fully accredited, non-profit university offering online degree programs in software development and other IT. Programs are flexible, more affordable than typical state universities (at least $3000 less per year than the state-funded CSU system here in California, including fees and such), all online, and geared specifically toward working adults. Classes are competency-based, not time-based, so you can skip the material you already know. Pay a flat fee for each 6-month school term and then you’re free to complete as many classes as you can. Bonus: you earn several IT certifications as part of your degree. Awesome mentors are ready to help if you get stuck on the material, encounter technical or procedural problems with classes, or need advice on work/school/life balance. I did a lot of research on this until I was satisfied that WGU is a solid and worthwhile choice, and I am now enrolled and working on a bachelor’s degree in software development. I can honestly say I get a lot more student support here than I ever did in community college. I discovered WGU through an article on Medium called How I got a second degree and earned 5 developer certifications in just one year, while working and raising two kids. It’s an inspiring read, and a smart roadmap to a career in software development.

Learning How to Learn: Powerful mental tools to help you master tough subjects – Arguably the most popular MOOC (Massive Open Online Course) known to humankind. This free online class teaches you about your brain’s learning processes, how to hack your study habits to maximize learning and retention, and how to tweak your test-taking methods for maximum efficiency and performance. I found it very useful, and I suspect it’s no coincidence that this class is a favorite for many people who are learning to code.

Speaking of MOOCs… see also my short list of MOOC providers on Online Learning. You can also use Class Central to do a meta-search of multiple providers.

Happy coding!

Ω

PHP & MongoDB – resources

This is going to be quite a short post, but I will elaborate on some of these topics when I post documentation for my MongoDB geospatial query.  In the meantime, for your viewing and learning pleasure, here are a few excellent resources I found helpful for working with PHP and MongoDB:

PHP.net:

MongoDB for the PHP Mind:

How to install MongoDB on Ubuntu

Ω

 

OPW – Project update, aka “tenaciousness is key”

The last few weeks have presented a series of extremely trying RL (real-life) challenges to deal with outside of my coding life.  There were a few rounds of very upsetting news, on a personal level.  I had to make a move on short notice, to a remote area where (believe it or not) internet and cell reception are hard to come by.  It took a week and a half to get internet, due to various hold-ups… and since I had no cell reception either, it was very hard to get much done as there was no easy way to look up syntax or examples when I got stuck.  Other obligations are suddenly making increased demands on my time and energy, while a number of things have simultaneously gone awry which have been or will be very time-consuming to sort out.  Staying focused through the trials and upsets has taken a monumental effort at times.

In short, it’s been pretty horrendous.

I’m a determined soul, though, when I have a goal in mind, so I refuse to quit.  It’s just going to take some serious tenacity (and sleep deprivation) to see things through.  I love what I’m doing, I’m enthusiastic about this project, and I want this experience, so I’m going to give it all I’ve got.

An in-depth understanding of Git has been slow in coming, I’m afraid.  I used Subversion, once upon a time in a class far far away, so the concepts of branching and checking out code and merging aren’t new.  Much of the time, technology just kind of innately makes sense to me, and new concepts fall into place with relative ease (considering the complexity of the topic at hand, anyway).  I’ve found it inexplicably difficult, however, to wrap my head around Git.  I know what I want to do in a given situation, but figuring out how to make Git actually do it has taken an inordinately long time.  Recently, some relatively minor fixes were made, but stored on a different repository, and I couldn’t figure out how to pull the changes to my local machine.  I ultimately ended up waiting until the changes were merged into the origin.  By then, unfortunately, I was half-configured for the other repository… so it took time and some fancy dancing to get everything back to normal.  Ick.  Well, mistakes lead to more learning, even if the resulting predicaments can be frustrating at times.  This evening’s learning, however out of place it may be in the middle of this post, was how to pull the latest changes from the remote of a branch you’ve been working on. I want to post it here, now, because I may not remember to do it later:

git fetch upstream yourworkingbranch
Continue reading

OPW – The learning process

It’s 2:00 a.m., and I’m feeling like a rockstar again. 🙂  Just pushed a bunch of bugfixes (plus a whole lot of code standardization, and some occasional refactoring) to the GitHub repository and submitted a pull request.  Progress is significantly faster now, as I learn (or get re-familiarized with):

  • Proper configuration and integration of Apache, MongoDB, and PHP on a server
  • PHP methods and usage
  • MongoDB – general functionality, forming queries
  • coding styles and standards – the need for establishing them, and how to adhere to them
  • standards for best practice
  • how to check various error log files for problems
  • what different error messages mean, and how to troubleshoot and resolve them
  • version control, and usage of Git and GitHub
  • how a software project is organized and coordinated, even when contributors are in disparate locations
  • online project management tools – tracking tasks, bugs, issues, ideas, resources, documentation, schedules, and people
  • how the various pieces of a project come together
  • how differing languages and applications work together
  • the different types of developer tools that are available (e.g., IDE’s, frameworks… even vim),  and how they can make life easier
  • where to find help online if I get stuck (StackOverflow, for one, is the bomb)
  • how to think like a programmer

Yeah, we’re just 4 weeks in, but holy crow.  It blows me away how much I’ve already learned in this short amount of time.  Sure, it’s a crash course in all of the things I knew I needed to learn… but perhaps more importantly, in a ton of other things I wouldn’t have thought to ask.  I think the things you don’t know you don’t know are often the ones that can hold you back the most.  After all, you can’t fill in the gaps if you don’t even know they’re there.  All of this has been so much more than I envisioned.  I’ve grown so much more confident in my abilities, and also in my decision to change careers from sysadmin to programmer.  I’ve also been able to draw many parallels between the two, on multiple levels.  The tools are very different, of course,  but the basic concepts of troubleshooting remain the same.  It’s all just problem-solving. I’ve realized that, starting with my first programming experiences on a C64 as a child, and through many years in the field working in IT, I’ve already been using and building upon the core skills one needs to be a successful programmer.  That’s immensely encouraging to know!

Ω

OPW – Miscellaneous web development tips

The Ubuntu virtual machine (VM) I was developing on decided to have a thermonuclear meltdown yesterday. I reappropriated a 16GB thumbdrive and have installed Ubuntu natively on that. Since I have to redo the nice little setup I’d done for myself, I might as well document it while I’m remembering. I can’t take credit for it, as it came from other developers who were nice enough to share their wisdom with me, either directly or indirectly. In the spirit of paying it forward, here ya go.  🙂

First, a bit of background info:

When you clone from a GitHub repository with Git, it automatically creates the main project directory for you.

Rather than cloning to the Apache document root /var/www and fiddling with sudo every time one creates, moves, or edits a file, it’s nice to be able to work from a folder in one’s home directory… but then it’s a pain to keep copying the modified files to /var/www for testing.

Here’s how I made my life a little easier:

Continue reading

OPW – Forking and Creating a New Branch in Git and GitHub

This week, we are working on getting familiarized with Git and GitHub, and writing up some more detailed documentation to facilitate future deployments of TidePools. I am a complete n00b to Git and GitHub, so here are a few of my notes about them to help me keep things straight. I’m posting them here in the hopes that they may be useful to others, as well.

The TidePools code was recently moved here:

https://github.com/opentechinstitute/TidePools

I was added to the organization as a team member and given permissions to push and pull. I was told that the preferred way to contribute for this project is to add branches, which will then be reviewed before being merged. I didn’t know where to start, and while GitHub’s tutorials are pretty good, I had to read between the lines to figure out how to set up proper branching. Below are the steps I used. I tested functionality by making small modifications to the README file and then checking whether the changes were reflected on GitHub.

The first step was to log in to the GitHub site, go to the TidePools repository on OTI (linked above), click the Fork button at the top, and tell it to fork to g33kgrrl. That creates a copy of the code in my GitHub repositories. Then I make a copy of the forked repository on my local machine:

g33kgrrl@saturn:~/TidePools$ mkdir fork
g33kgrrl@saturn:~/TidePools$ cd fork
g33kgrrl@saturn:~/TidePools/fork$ git clone https://github.com/g33kgrrl/TidePools.git
Cloning into TidePools...
remote: Counting objects: 1788, done.
remote: Compressing objects: 100% (1734/1734), done.
remote: Total 1788 (delta 63), reused 1778 (delta 53)
Receiving objects: 100% (1788/1788), 50.49 MiB | 280 KiB/s, done.
Resolving deltas: 100% (63/63), done.
g33kgrrl@saturn:~/TidePools/fork$ cd TidePools

Continue reading