The Office

Yesterday, I got the opportunity to go to Wikimedia’s offices and work a bit. I’m fortunate enough to be close to my organization’s offices so I can choose to work with the staff and integrate myself into a real internship. I feel that I could get a lot more work done when I’m actually working alongside other people. With that said, I think it’s also very interesting that in this modern world, we can essentially work in a virtual office. I was asking Mark, whom I was sitting next to, questions, but I was also conversing with my new mentor, Sebastien aka Dereckson, halfway across the world.

The office was a nice and quiet. It was much quieter than I expected because people were taking time off for the holidays. It had an industrial feel to it that’s very Bay Area. I wish I had snapped some pictures, but it was already quite overwhelming to be working in an office for the first time. But I got a lot done. I’ve gotten my extension’s repository set up and set up accounts for their workflow.

I haven’t officially started the internship yet, but I’ve been really getting my feet wet with PHP. It’s not as scary as it used to be, though it feels like everyone I ask replies with “PHP is the devil”. Sumana, one of the other mentors, also gave me some good resources.

All in all, I left the office feeling pretty happy and energetic. I think this was what I needed after my long reign of unemployment. It started to feel “real”.



I’m almost shaking trying to write up this post. But I can now say that I’m officially an intern for Wikimedia!! I debated on whether to make this text super obnoxious with confetti text and flashing colors because that’s how I feel right now, but decided to spare the eyes of whoever’s reading this.

I haven’t been updating the last few days because after I saw that it was time for the mentors to get together and discuss the candidates, I was just so nervous. All I could think about was when this day would come and whether I would be accepted or not. Granted, I had already resolved that I would continue to work on FOSS and Mediawiki, but it’s nice to be in a program that has mentors and a structure to it, and I definitely need that. Plus, it’s nice to have some cash to pay off my student loans! Cannot lie about that.

The internship doesn’t officially start till January 2, but I’m gonna try to get a leg up learning PHP. As you can tell from my last post, PHP just looks weird to me so maybe I should write some small programs to get familiar with it.

Ah, I’m so excited! I don’t even know what else to write. This job hunting journey has been so stressful and depressing that the thought of spending time doing something meaningful is just so… ahhhh, overwhelming! I’m no longer dreading the question “So, what do you do?” and can answer “How was work?”. The best part is just getting my foot in the door. I can finally start my journey as a developer and I just can’t be happier!

OH! I want to congratulate all the other lovely ladies who’ve made it through! I’m hoping that I’ll get to meet some or all of you at one point!

Staying up with Tech

A few months ago, I started subscribing to tech news. Currently, I follow The Verge, Ars Technica, and The Next Web. It was pretty overwhelming at first because I felt that I had to read EVERY article and when there’s 100 new links in my RSS feed everyday just from tech news, its easy to get buried, especially since a lot of the articles are similar. But staying up with what’s happening in tech has been an interesting experience. I’m not like a lot of people who go into the field of computer science. I didn’t get interested in computers as a career until I actually stumbled into a computer science class. Before then, I always saw computers as a hobby, not a career. I wasn’t interested in learning how hardware works or going on Telnet and form a community. I just thought computers were neat and I could make simple layouts and be creative.

Having subscribed to tech based news has really opened my eyes to the world of technology. It’s such an intricate and enormous network. There are articles about companies who are successful in certain aspects of business or innovation and then there are articles about companies who are losing money. Articles about how to treat employees or new products on the market. Just a huge repertoire of articles. It really makes me feel like I’m part of the tech world when I read these articles, like I know what’s going on, even though I usually forget most of the articles I read.

Anyways, the article that prompted this post was Next Web’s article “Wikimedia explains why, after all these years, Wikipedia still doesn’t have a visual editor”. Since I started this application process, I’ve actually just learned how to edit a wiki page. I never did it because I was afraid of making a mistake (which isn’t a good reason, I know). While filling out all my user info and setting up my proposal, I found myself trying to learn wikitext and finding it somewhat difficult to work with. And I’m more tech savvy than the average user (allegedly). Reading this article gave me some insight as to why the system is as it is. It’s really quite interesting how difficult it is to modify an existing codebase to support changing demands. Wikipedia has gotten so huge that changing the editor is a monumental task. I’ve never really thought of it this way before.

Also, it’s really exciting to read about a company that I have some connection to. The “Oh! I know what they’re talking about.” feeling is quite satisfying because for the longest time, I’ve felt quite disconnected from the tech world. There’s something about how vast it is that’s really hard for me to feel like I’m part of it. I think if you’re working in tech, you should at least try to stay up to date. There’s so many things changing in the world of programming and you don’t want to get left behind.

Journey to PHP

I got the go-ahead from Mark to start porting my Python code to PHP. When I found out that Wikimedia’s code base was PHP, I was a bit apprehensive. I liked learning new languages (in theory), but PHP always seemed to just look weird to me. Maybe it was because of the $’s,

An interesting side story about my history with PHP: I actually tried learning it in my teens. I can’t say exactly when, but it must have been when I was 14-15 years old, nearly 10 years ago (where does the time go?!). I had found the world of text-based role-playing games and my platform of choice was using forums. Back then I had already been somewhat indoctrinated in HTML and CSS, but then I saw .php extensions and thought, wow, I should learn that too!

It’s important to note that back then, I didn’t even know about the concept of programming, so as you can imagine, it was basically flew over my head. I looked at it and tried it out for a few hours, scourging up tutorials and basically gave up.

Now that I’m a more seasoned programmer who has learned weird languages like lisp, prolog, and R, I thought PHP wouldn’t be so bad. Mark said it was supposed to be similar to C/C++, I like C/C++, I should like this.

I have to confess, PHP isn’t exactly on the top of my “I want to program in this language” list. I tried looking at some PHP code and it honestly transported me back to being 15 years old and trying to learn a programming language.

To be honest, it probably isn’t so bad. It just feels that way. I think my trajectory for learning a new language is this:

  1. Ooh, a new language! Let’s roll up our sleeves and get going.
  2. Okay, so this is what it looks like. Why does it look so weird? Where are all the things I’m used to?!
  4. Oh! Yay, it runs! … but it returned the wrong objects/output
  5. I feel like crying…
  6. More tinkering and some semblance of a program emerges. YAY!!
  8. More bugs.
  9. Fixed the bugs.
  10. Work on a different part of the program
  11. Repeat 2-10 until you manage to cobble together something that works(ish) or have already given up and is enjoying a glass of beer or wine or shots.

I’m probably over-exaggerating, but that’s about how it feels like. I’m sure it feels like that to many people (right?!).

In any case, I’ve decided to try going through PHP’s Language Reference first because I just want to get acquainted with the look of PHP before I get overwhelmed with trying to directly translate my Python code to PHP.

Crossing my fingers and hoping that it’ll start looking less like chicken scratch and more like code.

OH! If anyone has some additional resources for PHP, let me know. I’m thinking that maybe a book is the way to go because online tutorials never really seem to help me much.

Added optional input functionality.

For some reason, it’s easiest to program at night for me. Hopefully, I can adjust my programming schedule to a more “normal” work day. Does anyone have any tips to get motivated to program for the day? I end up just contemplating what I want to do, hashing out all the details, but not actually writing till the wee hours of the night.

I just updated my code to have optional inputs: branch name, start line, and end line. It was actually kind of hard to trudge through Python’s documentation to find exactly what I needed. But I’m happy that I managed to make it work. argparse is pretty neat. It’s really awesome to learn new techniques. I’ve always said that I’ve been interested in scripting, but I now realize that I’ve only really hit the tip of the iceberg. It’s actually quite interesting.

Do I always seem excited when I talk about code? Honestly, I really am excited, but there’s definitely moments of frustration. Those are my more embarrassing moments plus who wants to read about complaints? Programming is such a roller coaster sometimes. Excitement to learn, frustration at the lack of documentation or answers, excited to finally start coding, frustration at the bugs, EXUBERANCE at the code working, DEPRESSION when it doesn’t actually work, sigh of relief when it’s finally done and time to get myself a drink. Is that the same kind of process other people go through?

Thoughts on Open Source & Initial Contribution

I managed to submit my application last night and I thought I would write a blog post as to what I’ve done so far. When I started this process, I really didn’t know what to expect. I knew that I wanted to get into open source because I felt that open source would be a good way to showcase some projects for my resume as well as helping out the FOSS community. It wasn’t until I attended WWC’s “Getting Started in Open Source” tech talk by Cat Allman that I’ve actually decided to do something about it.

I’ve always been curious about the underpinnings of FOSS. It had always seemed to be such an abstract thing: people get together and work on code and then distribute it for free. But how was I supposed to find projects I would be interested in? Honestly, I had no idea where to look. Googling “open source” is quite overwhelming.

During the talk, Allman mentioned that GNOME hosted outreach programs to get more women into FOSS and that they were expanding their program to include other organizations. This was basically a godsend to me. I had missed my chance to participate in Google’s Summer of Code because I honestly hadn’t heard about it until last summer and I had already missed the deadline to submit. Since I graduated this year, I was no longer eligible to become a candidate.

I have to admit, I get very nervous when trying to approach people, especially online. So when I decided that I wanted to be part of Wikimedia’s internship, it took me a while to work up the courage to contact my mentor, Mark. But Mark managed to quell all my anxiety because he turned out to be so nice and helpful. It actually livened up my spirits to work on my code and churn out something.

I’ve been working on a Python script that takes in the a git repository, file name, branch name (optional), and line range (optional) to return a chunk of lines. This is supposed to be a quick introduction to the type of program I’ll be working with if accepted. You can find the code here.

It’s nothing spectacular, but I’m quite proud of it. I’ve only been learning Python for a couple months and I hadn’t written a Python project from scratch before. Admittedly, Python isn’t all that different from C, C++, and Java which I’m more familiar with, but I still have quite a sense of accomplishment.

Although I’m only in the application process for this program, I have to say that my first impressions of FOSS are very positive. While I hope that I’ll get accepted in the program, I feel that just this initial dip in the ocean of FOSS makes me want to just dive right in.