Shes Geeky

The unConference for women geeks

  • Home
  • Events
    • Recent Events
      • Special Convening January 2017
      • Bay Area 2016
      • Salt Lake City 2015
      • Seattle 2015
      • Bay Area 2015
      • Bay Area 2014
      • Minneapolis 2014
      • Seattle 2014
  • About
    • How Does an unConference Day Work?
    • History of She’s Geeky
    • Press
  • Sponsorship
  • Contact
  • FAQs
    • She’s Geeky – where did the name come from?
    • What are some of the benefits of attending?
    • What is Core to She’’s Geeky?
    • Who Comes to She’s Geeky Events?
    • Why don’t you have local She’s Geeky Chapters?
    • How do we pick cities?
  • Blog
  • Notes
You are here: Home / BA 2015 / BA 2015 Notes / Diving into a Large Codebase and Contributing to Open Source (notes)

Diving into a Large Codebase and Contributing to Open Source (notes)

February 3, 2015 By Kas Neteler Leave a Comment

Day: 1 Session Time/Number:   2-3pm Session Space: D

Convener: Daphne
Notetaker: Angela

Specific resources to share from session:  (links, books, organizations, articles etc.)

Books:
Working Effectively with Legacy Code – Michael Feathers (http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052)
Clean code – Robert C. Martin (http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882)
Debugging – David J. Agans (http://www.amazon.com/gp/product/B002H5GSZ2)

Links:
How to Debug anything – Talk by James Golick (https://www.youtube.com/watch?v=VV7b7fs4VI8)
Women who code (https://www.womenwhocode.com/)
Hacker School (http://www.hackerschool.com/)
OpenHatch – find an open source project (http://openhatch.org/)
Julia Language – (http://julialang.org)
Gandi VPS hosting – (http://www.gandi.net/hosting/)
GitHub trends (http://github.com/trending)
Homebrew package manager for OSX (http://brew.sh/)
SCIKIT learn (http://scikit-learn.org)
Linux Kernel Debugging (http://elinux.org/Kernel_Debugging_Tips)

——————————-
Discussion Notes:
Tips to keep in mind when starting to work on a new/large project

– Don’t try to understand everything all at once
– Approach with the goal of only understand small pieces at a time
– Principle of Dynamic programing – start with the smallest sub-problem and build your understanding from there

Debugging techniques – Gaining iterative understanding and “flow”

– Break things!
– Insert things like exit(1) or #ERROR
– try to see what happens when it fails
– test the scope of #IFDEF
– Try to get a stack trace to understand how the functions are layered. Who is calling who?
– Use GDB for C debugging
– Linux Kernel Debugging (http://elinux.org/Kernel_Debugging_Tips)

Working with others:

– Don’t be afraid to ask for help – it’s not a sign of weakness.
– Especially if you are new, it’s great to take advantage of being able to talk to more experienced people on your team or community.
– Spinning your wheels is not efficient.
– Show people you are genuinely interested & you care by asking questions.

Working with open source:

– Code bases are searchable, search for strings/error messages to help you narrow down to a section of the codebase.
– Nothing is ever a black box if you have the source code, the problem is in there somewhere.

Learning opportunities:

– Hacker School program – you have to be a developer to apply
– At a coworking space in NYC. Learn and work on whatever you want for 3 months.
E.g. working on Julia (interpreted language) – http://julialang.org
– Language good for learning, especially as Julia is written in Julia
– Start with a List of Bugs
– Ask current maintainers what is the best bug to start with for a beginner.
E.g. follow the problem from top to bottom to find out where the problem is. You can take a “vertical snapshot” of the language.

Contributing to open source – How to get started?

Try fixing mistakes in documentation & submitting patches.
– you don’t need to re-submit or revise as much
– Use it to learn the tools and processes for creating patchsets before you have a lot of code to submit
– use it to learn the culture of the mailing list and submit system
– as a beginner you are the customer of the documentation as you are learning the source code
– no submission or pull request is too small – it’s still valuable as you are improving
– small submissions/chunks are also easier for those reviewing/moderating the pull requests
– it’s empowering to make your first submission
Other options are – making code more legible & more readable without changing functionality
– readability is important, write for other humans, method names are important
Be brave and make your first submission

GIT tips:

– Try using GIThub as it’s a good visual tool (create a fork, make a change within your fork, submit pull request)
– take time to understand the syntax as the GIT terminology is not always clear (e.g. verbs are from the repository perspective instead of the user)
– if you are already familiar with GIT syntax perhaps you can laugh along with these fake GIT commands (http://git-man-page-generator.lokaltog.net/)

Finding a project to contribute to:

– OpenHatch (http://openhatch.org/) – you can use this tool and resources to search open source projects (e.g. by language, advancement level)
– GitHub trends (http://github.com/trending)
– Look for a new project as an opportunity to learn a new language
– Look for a new project to work on in a language you love

How to start in a new language?

– Try to change your perspective at the beginning so that you can learn the language *and* it’s coding style.
– Ask coworkers – what are best practices ? what are good resources? – there are a lot of language specific blogs and forums you can learn from. People are (usually) kind to learners and genuinely want to help. Look for beginners forums.

IRC tips

– IRC is a great place to go and learn and ask questions. A lot of open source projects may have an IRC channel listed on the project page that you can join.
– IRC clients
Linux – Pidgin (http://www.pidgin.im/)
Windows – MIRC (http://www.mirc.com)
Windows – XChat (http://xchat.org/)
Mac – Adium (http://adium.im/)
Android – Andchat (http://www.andchat.net/)
Also some Web based clients
LinuxChix has a good getting started guide for how to set up a client (http://www.linuxchix.org/irc-chat.html)
– There might be one nasty person to ignore, but you can also find a new community/project if they are rude! Most are great and welcoming to all – good experiences with Linux Kernel, Systemd etc.

Upstreaming
– Always run the latest version to see if it’s already fixed upsteam and you can patch your fork
– If you find it’s not fixed this is a great opportunity to help both your customer and the community
– GIT workflow – try to keep up to date/pull daily as things may have changed overnight!
– Can I submit your patch on your behalf? e.g. Try to get vendor code to mainline

Suggested projects & good experiences:

Homebrew package manager for OSX (http://brew.sh/)
– good place to start, good community, package descriptions

Translation and localization

SCIKIT learn (http://scikit-learn.org)
– Machine learning (and similar on Coursera)

Data Analytics/Visualization Look for other projects using open data
– Find out where the data is coming from (e.g. government) and look for other sources to get inspired
e.g. (http://bdon.org/, transit data, NYC taxi data)

Learn Databases using MySQL and postgreSQL

Share this:

  • Click to email this to a friend (Opens in new window)
  • Click to share on Facebook (Opens in new window)
  • Click to share on Twitter (Opens in new window)
  • Click to share on Reddit (Opens in new window)
  • Click to share on Pinterest (Opens in new window)

Filed Under: BA 2015 Notes Tagged With: Debugging, Kernel, Legacy Code, Linux, open source

Related Posts Bay Area 2015

  • Bay Area 2015: Friday Topics (1/30/2015)
  • Bay Area 2015: Sunday Topics (2/3/2015)
  • As a Result of Today… (Saturday) (2/4/2015)
  • Being a Unicorn (notes) (1/30/2015)
  • Open Source (notes) (1/30/2015)
  • Open Source (notes) (1/30/2015)
  • Ask A Tech Recruiter (notes) (1/30/2015)
  • Pair Programming (notes) (1/31/2015)
  • Kids + Technology (notes) (1/31/2015)
  • Remote Working (notes) (1/31/2015)
  • CS Careers without a CS degree (notes) (1/31/2015)
  • Human Error (notes) (1/31/2015)
  • Tech Hacks for Work-Life Balance (notes) (1/31/2015)
  • Helpful Help (notes) (1/31/2015)
  • Strategies for Engaging Tech Fearful Folks (notes) (1/31/2015)
  • How To Negotiate What? (notes) (1/31/2015)
  • Tips on Networking (notes) (1/31/2015)
  • Learning Styles (notes) (1/31/2015)
  • Hackathons (notes) (1/31/2015)
  • Maker Jamboree Resources (notes) (1/31/2015)
  • Mentorship and Sponsorship (notes) (1/31/2015)
  • Diving into a Large Codebase and Contributing to Open Source (notes) (2/3/2015)
  • Transitions: Changing Roles/Disciplines (notes) (2/3/2015)
  • 5 Keys for Self Performance Evaluations (notes) (2/3/2015)
  • Androgynous, Queer, Gender, Queer (notes) (2/3/2015)
  • Travel Hacking II (notes) (2/3/2015)
  • Challenges and Secret Weapons (notes) (2/3/2015)
  • Understanding and Managing Personal Data Privacy (notes) (2/3/2015)
  • Interesting Research (notes) (2/3/2015)
  • Women Don’t Ask (notes) (2/3/2015)
  • How to Negotiate for What You Want (notes) (2/3/2015)
  • Django (notes) (2/3/2015)
  • Latest Trends in Web Development (notes) (2/4/2015)
  • Java Script and Video (notes) (2/4/2015)
  • Critical Reading (notes) (2/4/2015)
  • Networking at a Conference When Others Don’t Look Like You (notes) (2/4/2015)
  • Cal Poly University Q and A (notes) (2/4/2015)
  • Good Reads (notes) (2/4/2015)
  • Sharing Economy (notes) (2/4/2015)
  • As a result of today… (Sunday) (4/24/2015)
  • Learn to Use OpenSCAD (notes) (4/24/2015)
  • Wonderful World Of Learning By Making (notes) (4/24/2015)
  • Open Computing Language 101 (notes) (4/24/2015)

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Powered by Eventbrite

Sponsor She’s Geeky in Your City

Email Kaliya at Shesgeeky.org to request information.
  • Email
  • Facebook
  • Twitter

Join Our Mailing List

Subscribe to our mailing list

* indicates required
I'm interested in attending She's Geeky:

Recent Tweets

Tweets by @shesgeeky  

Testimonials

idneyMiller

ahhhhh #ShesGeeky you blow my mind so hard!!! amazing conversations. all day long. with honest, thoughtful, smart, talented women. <3! idneyMiller24:37pm via Web

April

Screen Shot 2014-10-18 at 1.07.37 PMaprilmpls2:18pm via Seesmic
Got to teach the Monty Hall Problem and Public Key Cryptography to an 11y/o girl today. Thanks to @GiTMSP, @shesgeeky, and @Clockwork_Tweet.

Amanda

Screen Shot 2014-10-18 at 1.09.09 PMamandaesque2:27pm via Tweetbot for iOS

Another phenomenal #shesgeeky! Thank you so much @GiTMSP for hosting such an amazing event.

Tags

advice Agenda BA 2016 being geeky blog career career life balance conference confidence digital identity DIY education empowerment feminism HR inspiration jobs learning Mountain View negotiation networking Openspace open space personal growth resources salary saltlake self-confidence shesgeeky shes geeky social media STEAM STEM STEM careers tech technology tips topics training twitter unconference women women in STEM women in tech work & play

Copyright © 2019 · Sitemap · evelurie.com web design/develop

loading Cancel
Post was not sent - check your email addresses!
Email check failed, please try again
Sorry, your blog cannot share posts by email.