If you can't read please download the document
Upload
john-vandenberg
View
94
Download
0
Embed Size (px)
Citation preview
Besut Kode
Workshop 1Google Code-in
John VandenbergMentor Wikimedia
Welcome
Do you want to become a programmer?
It is frequently said that learning to code is as important as learning language and maths.
While everyone should be able to read code, writing good software is hard, and needs people who are dedicated to improving software development.http://www.wired.com/insights/2015/02/should-we-really-try-to-teach-everyone-to-code/
But...
Even weak programmers can make a good living in the United States. - Forbes
https://www.forbes.com/sites/quora/2012/06/21/why-is-being-a-programmer-a-good-career-choice/
Do you like mathematics or science?
Then Besut Kode & CGI is for you.
Google Code-in (GCI)
Google Code-in is extreme programming.
Six weeks (December January)
Many open source projects
Thousands of 13-17 year old, across the globe
Tasks of varying difficulty and typeCoding
Documentation/Training, including creating videos
Outreach/Research
Quality Assurance (testing)
User Interface
Wikimedia has participated since 2013
Wikimedia includes hundreds of projects, but is premoninately Php and Python. I organise the Python component of Wikimedia.
https://commons.wikimedia.org/wiki/File:Extreme_programming_in_action.jpg
Google Code-in (GCI) outcomes
GCI participants are challenged every day, from the best mentors, and learn _a lot_ if they stick with the program until the end.
https://www.mediawiki.org/wiki/Google_Code-in_2015#Wrap-up_blog_posts
Participants get better each year they are involved.
GCI winners go to Google Plex, meet other winners and meet the mentors.
https://commons.wikimedia.org/wiki/File:Android_building_in_Googleplex_with_sculptures.jpg
https://commons.wikimedia.org/wiki/File:Google_Conference_Bike.jpg
Github your portfolio
Who are you, really??
Most importantly, GCI participants build their online portfolio on Github.
Github has more than 14 million users and more than 35 million repositories. 125,000 LOC added per day.
It the largest host of source code in the world.
It also host websites.
Github is the 61st most visited site on the Internet.
Github your profile
But, Github is not a hosting company.
It is a social network and job recruitment company.
Your Github profile is your most important CV.It doesnt lie.
Github Archive
https://www.githubarchive.org/
And Github publishes their prime asset; thier metadata .
You can download it on Github Archive.
Github - statistics
http://octoboard.com/ (Defunct) on March 11, 2012
Which other companies than use, and sometimes publish new information
Such as http://octoboard.com/ (Defunct) showing statistics as of March 11, 2012
https://web.archive.org/web/20150801193208/http://octoboard.com/
Github Awards - Indonesia
http://github-awards.com/users?type=country&language=c%2B%2B&country=Indonesia
Another tool shows the most starred developers, per country
Github Awards - bsdnoobz
http://github-awards.com/users/bsdnoobz
And per city.
If you are a startup company in Surabuya, and you need a good developer, who are you going to call
Github Awards - yukiisbored
http://github-awards.com/users/yukiisbored
Github Awards is biased somehow this chap is5th Go user in Jakarta, and 25th in Indonesia
Github not just software
Sharing anything
Open Data
Writing
Translation
Open Company
Open house
Github - sharing
https://github.com/CMAA/nova-organi-harmonia - Music
Github open data
https://github.com/arkka/data-jakarta
https://github.com/cstrzadala/ballarat-town-planning
(and not so open data ...)
https://github.com/jayvdb/era_data
http://radar.oreilly.com/2013/03/github-government-bureaucat-open-source.html
Github - writing
http://kylerush.net/blog/meet-the-obama-campaigns-250-million-fundraising-platform/
http://jj.github.io/hoborg/ - Novel
http://forkthecookbook.com/
https://github.com/dylanegan/travel - Travel logging
https://github.com/progit/progit
http://prose.io/
Github - translation
https://www.transifex.com/
https://github.com/integrations/phraseapp
Github project management
https://waffle.io/
https://huboard.com/
https://www.zenhub.com/
Irony alert Github does not use Github for issue management
Github open company
Open Company pledgeWe who belong to the Open Company Initiative commit to openness as a defining element in how we create value.
https://github.com/opencompany/www.opencompany.org/issues
http://www.opencompany.org/https://gratipay.com/about/http://inside.gratipay.com/
https://wiki.p2pfoundation.net/Open_Company
Github open house
https://github.com/frabcus/house/labels/building
Github open house
https://github.com/frabcus/house/labels/building
Github open house
Git what is it
https://en.wikipedia.org/wiki/File:Git_operations.svg - GFDL (c) Duesentrieb
Github is website built around Git.Every programmer must know git.
Git is the canvas on which you work.
Git is an open source distributed version control system (VCS).
It manages files that are being edited by people all over the world, giving each copy its own version identifier. So each person knows which version they have, and how to merge their changes with other peoples changes, to the same file.
Git was created by Linus Torvalds, to help him build an operating system that you may have heard of, called Linux.
Git is replacing all other version control systems used previously.
Git what it is not
https://commons.wikimedia.org/wiki/File:Port_of_Shanghai,_2004.jpg CC-BY (c) Tibor Vgh
Well, not all VCS are being replaced.
Git is not industrial quality.
Git what it is not
Git is not good at:
Binary files
Large files
Large repositories
Access control
Mecurial is also common, but has the same problems above. Try it on https://bitbucket.org
Perforce is the answer for the above problems.
There are some weaknesses in Git.
The only other common open source DVCS is mecurial, and most developers are migrating from mecurial with git. If you want to try mecurial, create an account on Bit Bucket.
To solve the problems of git, use Perforce, but is not open source, and it is not cheap.
https://www.quora.com/What-are-some-advantages-of-Perforce-over-githttps://bitbucket.org/mats_ekberg/boar/wiki/Rationalehttps://en.wikipedia.org/wiki/Comparison_of_version_control_software
Google coding programs - participating organisations
Universities
Programming languages
Operating systems
Open content
Web Application frameworks
Applications
other!
Projects - Universities
Berkman Center for Internet and Society, Harvard University - JavaScript, Ruby, Go
Australian National University
Boston University - C
Biomedical Informatics, Emory University - Java, Python
Canadian Centre for Computational Genomics (C3G), McGill University - Python, R, JavaScript
SFT (Software for Experiments), CERN - C++, Python, JavaScript
Computational Science and Engineering at TU Wien, JavaScript, Java, C++
McGill Space Institute - Python
MIT Media Lab - Java
Portland State University
Stony Brook University Biomedical Informatics
Would you like to study at one of these universities?
Or, would one of these look good one your resume..?
Projects - Languages
Python - Python, C/C++
SageMath - Python, C/C++
SymPy - Python, C/C++
R - R, C/C++, Fortran
Ruby - Ruby
SciRuby - Ruby, Java
Chapel - Chapel, C/C++, Python
D Foundation - D, C++
GNU Octave - C++
Scala - Scala, Java
Julia - Julia, C++
You want to a Python job, fixing bugs in Python will look good on your resume.
You want to prove you are good at mathematics to potential employers, get involved in SageMath.
Etc.
Projects Operating Systems
Linux - C/C++, Python
Debian - Python, C/C++
Gentoo - bash, C++, Python, Perl, SQL
Ubuntu
SUSE
FreeBSD - C/C++, bash, make
NetBSD - C
ReactOS - C/C++
WINE - C
What to be an Operating System expert You can participate in building an Operating System.
Projects Open content
Wikimedia - PHP and Python
OpenStreetMap - Java, Ruby, JavaScript
DBPedia - Java, Scala, Python
Or do you like large knowledge foundaries?
Projects
Web Application Frameworks
Drupal - PHP
jQuery - JavaScript
Django Python
Apache Foundation - Java, JavaScript, Python
Or building websites...
Projects - Applications
Gnome
KDE
Mozilla
Eclipse - Java, C/C++
Blender Foundation - C/C++, Python
Or building applications ...
Projects specialist tools
CVXPY (modeling language for convex optimization problems) - Python
DUNE (Distributed and Unified Numerics Environment) - C++, Python
Gambit - Software Tools for Game Theory - JavaScript
Git - bash, C
Github - JavaScript, Ruby, C#
Copyleft Games Group/PySoy Python
Classical Language Toolkit - Python, JavaScript, Java
Or you want to do specific types of mathematics, like- writing computer games, or- solve network theory problems (git), or- natural language theory
GCI winning tips
Be ready to start on Day 1.
Choose a project, now
Learn about the project, now
Become part of the project team, now
Read the GCI tasks before Day 1
Or ... write your own GCI tasks! ... now
GCI choose a project
Find a project that best suits you
You will do it for 6 weeks non-stop.
Choose something that is fun!
Find a project that best suits you.Either something you are good at, or something you are excited about learning.
There is a possibility that your first choice isnt part of GCI 2016.
So, pick a second/fallback project, just in case.
------
2015- : https://developers.google.com/open-source/ https://codein.withgoogle.com/archive/ https://summerofcode.withgoogle.com/
2009-2015: https://www.google-melange.com/archive/
https://developers.google.com/open-source/gci/resources/example-tasks
2015 tasks:
https://codein.withgoogle.com/archive/2015/organization/
Project specific documentation
https://www.mediawiki.org/wiki/Google_Code-in_2015https://phabricator.wikimedia.org/project/view/1587/
https://groups.drupal.org/google-code-inhttps://www.google-melange.com/archive/gci/2014/orgs/drupal
GCI choose a project
Copyleft Games 2015 GCI tasks
https://codein.withgoogle.com/archive/2015/organization/4935850504749056/task
Everything about the previous CGI tasks is public, so read the archives.
GCI choose a project
Copyleft Games 2015 GCI task
https://codein.withgoogle.com/archive/2015/organization/4935850504749056/task/4622918113820672/
Check their GCI tasks from previous years, to ensure the tasks in GCI are what you want to work on.
You can write up GCI tasks, which will help the project become eligible for the next GCI.
GCI starting on Day 1
Install all of the tools
Be familiar with their coding guidelines
Watch them work
To really start on Day 1, you need to be prepared before Day 1
People participating in GCI for their second year, are already prepared. You can be too.
Install and use all of the tools
Be familiar with their coding guidelines
Watch their code reviewsSometimes parts of their coding guidelines are not formally written down *anywhere*, but are communicated during code reviews.
Understand which problems are HARD. Some of the GCI tasks may be labelled easy, but intersect with unsolved HARD problems, and youll waste a lot of time on the task.
If you were prepared, your first task will be approved immediately
GCI become part of the team
Learn how they communicate
Dont worry about your bad English
Dont use Sir
Learn who are the most helpful mentors
Become part of the project team, today.
Join their live discussions. Typically IRC.
Today.
During GCI, check in every day.
If you have prepared, you will be more advanced than other GCI participants. Help them.
Your mentor will love you!
GCI practise communicating
No more Sir!
When you are part of a group working closely together, informal English is used to communicate.
Learn appropriate communication in software projects.
Dont use "Sir" !
If you commit good code, and you will, you are not lower value than the mentor.
When you are part of a group working closely together, informal English is used to communicate.
Dont be shy of your English skills. Dont let it stop you from getting help.
Open source projects have many people where English is their second language, just like you.
Dont say sorry for my bad English every sentence.They know your English is bad. They only care about your code.
Static analysis
programming languages
https://www.amazon.com/Electric-Cordless-Clothes-sweater-Shaver/dp/B00F3C3I7W
How can I do all of these things, today
The easiest approach is carefully cleaning existing code.
Lint is the rubbish that sticks on clothing.Lint is also the bad code that sticks to good code.
De-linting, if done carefully, can provide endless number of tasksthat do not involve changing functionality, or require understanding the code.It allows you to be productive while familiarising yourself with the code.
https://github.com/mcandre/lintershttps://github.com/mre/awesome-static-analysis
Build and use new linting tools. They improve your understanding of the language itself,and common problems with using the language and its standard libraries.
Static analysis
natural languages
https://commons.wikimedia.org/wiki/File:Misspelling_In_The_Tower_Of_London.jpg
CC-BY (c) Onofre Bouvila
Misspellings are another easy way to contribute to a project.
In this image, the Spanish word -- Gua - has a grave accent on the "i", which does not exist in Spanish. Immediately obvious to the Spanish.
Misspellings are a very hard problem to solve beyond simple cases like incorrect glyphs.
Practise using tools to identify misspellings.
http://jwilk.net/software/mwichttps://pypi.python.org/pypi/misspellingshttps://github.com/mcandre/aspelllint
Improve misspellings tools.
Also be familiar with grammar checkers.
https://www.languagetool.org/
http://gci15.fossasia.org/
FOSSASIA as an umbrella organization for projects and developers in Asia.
FOSSASIA is a GCI participating organisation, and here are a few of their 2015 mentors
Your first Besut Kode challenge was a Wikimedia project.
Your second Besut Kode challenge will be a FOSSASIA project....
loklak social harvester
loklak is one of the FOSSASIA projects.
loklak is a server that provides untracked use of twitter data, and other social media.
----https://github.com/loklak
http://asksusi.com/
https://github.com/loklak/GCI2015
http://loklak.org/images/loklak_collect.png
loklak social harvester
https://github.com/loklak
The project includes- server- wordpress- android apps- javascript, java, go, python, php, and C# client libraries- Github Pages websites
----https://github.com/loklak
http://asksusi.com/
https://github.com/loklak/GCI2015
http://loklak.org/images/loklak_collect.png
loklak - open issues
https://github.com/issues?q=is%3Aopen+user%3Aloklak
https://github.com/issues?q=is%3Aopen+user%3Aloklak
189 issues; languages
82 Java 62 JavaScript 30 PHP 4 Python 4 CSS 2 C# 1 Shell 1 Objective-C
Loklak - Challenge 2
A private repository will be created, and all participants who have finished Challenge 1 will have access.
1. Create five new "GCI sized" task/issues in the Besut Kode loklak repository.The mentors will mark them as easy, medium or hard
2. Solve issues created by someone else. To pass this challenge you must solve one medium or hard difficulty task, or three easy tasks.
Warning: DO NOT COMMUNICATE with the loklak project during Challenge 2. Besut Kode participants who successfully finish Challenge 2 will be mentored on how to interact publicly with loklak project.
Note: a more formal description of Challenge 2 will be provided before you when Challenge 2 starts.
Challenge 2 example tasks
https://github.com/loklak/loklak_api_go
It has a .travis.yml, but does not have Go linting.Create a task to implement Go linting, suggesting the linter to use.
Another participant can then solve the task.
Challenge 2 example tasks
http://loklak.github.io/ webpage improvements
http://loklak.github.io/
"*We never share your email with 3rd parties"
should be
"* We never share your email with 3rd parties"
" 2015"
should be
" 2016"
or
" 2015-2016"
or ...?