SlideShare a Scribd company logo
Learning to Code
Sara Terp
@bodaceacat
Let’s Begin
Why are you here?
Being a Computer Scientist is…
•
•
•
•
•
•

…knowing all the gotchas that trip you up
…like security
…and scaling
…solving an endless series of puzzles
…sometimes deeply frustrating
…someone you can hire once your idea’s
funded and off the ground
… So Build Prototypes (MVPs)
“I went through 3-4 years thinking I was going to meet
some magical engineer who would build all the stuff I
was thinking about. But I never met that person, so I
taught myself ASP and MS Access out of a book and got
to work just hacking stuff together. I’m still a really
shitty programmer, but I know enough to hack a
prototype together”
- Dennis Crowley, Foursquare founder
… and Don’t Worry About Perfect
“Contestants must create a working software
application that uses one or more of the MTA
data sets or APIs available at
http://mta.info/developers/, and includes the
ability to update/refresh the data”
– 2013mtaappquest.challengepost.com
Choosing a
Language
Which Hardware?
Which Application?
don’t code

Minimally adapt
code

Build small

Use a framework

Build custom

Website

Use Wordpress,
Drupal, Joomla
etc.

Add Php to
wordpress, drupal
etc

Write html

Write in
Ruby/Rails,
Python/Django,
Php/Codeignitor
etc

Write in Ruby,
Python, Php etc

Mobile phone

Use SMS. Use
Funf, Conduit etc

Write html

Write Java,
Obective-C

Desktop tool

Use Excel,
download apps etc

Add Visual Basic
functions to Excel
etc.

Command line
interface

Graphical user
interface

Write in C++,
Java, etc.

Microcontrollers

Build circuits

Write in Python, C
etc
Which Mentors?
How Easy to Get Started?
• Html – very easy
• Css – easy
• Javascript – not so easy, but powerful
• Php – very easy, can be messy
• Ruby/Rails – easy, structured
• Python/Django – not so easy, structured, very
powerful data-handling libraries
Getting Started
Find Your Terminal Window
• Windows: from start menu, go to “all
programs -> accessories -> command prompt”
• Mac: go to “/applications/utilities” then click
on “terminal”
• Linux: you’re already there
Get a Good Text Editor
•
•
•
•

Notepad++
Komodo Edit
Eclipse
Idle (for Python)
Install GIT

https://help.github.com/articles/set-up-git
Install a Virtual Server
Front End
Languages
HTML code: *.htm, *.html
HTML Effects
HTML Help
• Getting started:
– Write a file with extension “.htm” or “.html”
– Open the file in a browser

• Getting help:
– Http://w3schools.com/
– http://learn.shayhowe.com/html-css
– http://www.htmlgoodies.com/
– http://www.dontfeartheinternet.com/
CSS code: *.css
CSS Effects
CSS Positioning
CSS Help
• Getting started:
– Write a .css file
– Add “<link rel="stylesheet"
href=“yourfilename.css">” to an html file

• Getting help:
– use the same sites as for html
– http://css-tricks.com/
Javascript code: *.js

Or add “<script src=“myjavascriptfile.js”></script>” to your html file
Javascript Effects
Javascript Help
• Getting started:
– Add javascript to your html files
– Write .js file and add link to html files

• Getting help:
– http://www.w3schools.com/js/
– http://www.codecademy.com/tracks/javascript
– http://www.w3schools.com/ajax/
Back End
Languages
Php: *.php
Php: Getting started
• First, set up a virtual server (WAMP, MAMP,
XAMPP etc).
• Then put your php file into directory
wamp/www (or mamp/www or xampp/www)
• Start the virtual server
• Point your browser at
localhost/myphpfile.php
Php: Getting started
Php: Getting Help
• Tutorials:
– http://php.net/manual/en/tutorial.php
– http://www.codecademy.com/tracks/php

• Meetups:
– http://www.meetup.com/nycphp/
– http://www.meetup.com/new-york-php/

• Resources:
– http://php.net/manual/en/langref.php
Ruby: *.rb
Ruby: getting started
Ruby / Rails: getting help
• Courses:
– http://www.codecademy.com/tracks/ruby
– https://www.codeschool.com/

• Meetups:
– http://www.meetup.com/ruby-nuby-info/
– http://www.meetup.com/NYC-rb/
– http://www.meetup.com/nycruby/

• Guides:
– http://guides.rubyonrails.org/
– http://railscasts.com/
Python: *.py
Python: getting started

• https://wiki.python.org/moin/BeginnersGuide/Do
• http://docs.python-guide.org/en/latest/ (look
under “properly install”)
• http://icanhazdatascience.blogspot.com/2013/03/
Python: getting help
•
•
•
•
•
•
•
•

The Best Way to Learn Python (Read)
Learn Python the Hard Way (Read)
The Python Tutorial (Read)
NewBoston's Python videos (Watch)
http://www.pyschools.com/ (Do)
Codecadamy's Python course (Do)
MIT's Intro to Computer Science (Study)
help(xx)
Learning a
Language is Only
the Start
Find Help Online
Go to Meetups and Hackathons
Find a Team to Learn With
Find Some Good Courses
• Courses:
– Codecademy .com
– MITx.org
– Coursera.org
– https://generalassemb.ly/ ($)

• Coding challenges:
– ProjectEuler.net
– TopCoder.com challenges
Find A Project to Learn From
Find Something To Do On a Project
Last (but not least)
• Please!
– Comment your code
– Use coding standards
– Learn about Test-Driven Development
– Be adventurous :
• Failing isn’t bad, it’s learning!
• If a learning method doesn’t work for you, it’s not you:
try a different method!

More Related Content

PPTX
Raising the bar 2, Using Puppet to install enterprise middleware applications
KEY
ARTDM 171, Week 2: A Brief History + Web Basics
PDF
WordCamp Sheffield 2014 Theme Workflow Presentation
PDF
WordCamp Birmingham 2015 - Theme building workshop
PDF
Rapid WordPress theme development
PDF
WordPress Developer tools
PDF
Here Be Dragons - Debugging WordPress
PDF
WordCamp Birmingham 2015 - Theme building tricks of the trade
Raising the bar 2, Using Puppet to install enterprise middleware applications
ARTDM 171, Week 2: A Brief History + Web Basics
WordCamp Sheffield 2014 Theme Workflow Presentation
WordCamp Birmingham 2015 - Theme building workshop
Rapid WordPress theme development
WordPress Developer tools
Here Be Dragons - Debugging WordPress
WordCamp Birmingham 2015 - Theme building tricks of the trade

What's hot (20)

PPTX
Using Javascript in today's world
PDF
WordCamp Bournemouth 2014 - Designing with data in WordPress
PPTX
Untangling spring week8
PPTX
Power to the People: Manipulating SharePoint with Client-Side JavaScript
PPT
Building fast webapps, fast - Velocity 2010
PDF
Build WordPress themes like a heavyweight - WordCamp Lancaster 2013
PDF
Web dev tools 101
PPTX
Untangling spring week9
PPTX
Untangling spring week10
PDF
How long will it take me to become a Web Designer/Developer?
PPS
Blogsandwikis
PDF
Drupal Day 2011 - Features: una vita felice
PPTX
UVA MDST 3703 JavaScript (ii) 2012-10-04
PPTX
Power Without Plugins - WordCamp Miami 2012
PDF
Intro to WordPress #memtech
PPTX
Untangling spring week12
PDF
Web Development with Vim by Johannes Raggam
KEY
"Wordpress for web designers. What, when, how, where" por @nuriarai
PDF
Drupal Flyover, CMS Expo
Using Javascript in today's world
WordCamp Bournemouth 2014 - Designing with data in WordPress
Untangling spring week8
Power to the People: Manipulating SharePoint with Client-Side JavaScript
Building fast webapps, fast - Velocity 2010
Build WordPress themes like a heavyweight - WordCamp Lancaster 2013
Web dev tools 101
Untangling spring week9
Untangling spring week10
How long will it take me to become a Web Designer/Developer?
Blogsandwikis
Drupal Day 2011 - Features: una vita felice
UVA MDST 3703 JavaScript (ii) 2012-10-04
Power Without Plugins - WordCamp Miami 2012
Intro to WordPress #memtech
Untangling spring week12
Web Development with Vim by Johannes Raggam
"Wordpress for web designers. What, when, how, where" por @nuriarai
Drupal Flyover, CMS Expo
Ad

Viewers also liked (16)

PDF
Turneround Consultancy Ltd Operational Excellence
PDF
EBITDA Improvement
PDF
Value creation
PDF
Notes on "The Mckinsey mind"
PPTX
The Way How Mckinsey Works
PDF
Mgt tools 2013 executives guide (bain & company)
PPTX
The mckinsey way "How consulting company works"
PPSX
What is an internal consultant
PPTX
Bain & Company, inc: Growing the business
PPT
Consultation Model 1
PPTX
Overview of bain & company
PDF
MANAGEMENT CONSULTING 101 part 1
PPT
The Mc Kinsey Way
PPTX
The consulting process models
PDF
McKinsey presentation
PDF
Bcg Consultants Love Life
Turneround Consultancy Ltd Operational Excellence
EBITDA Improvement
Value creation
Notes on "The Mckinsey mind"
The Way How Mckinsey Works
Mgt tools 2013 executives guide (bain & company)
The mckinsey way "How consulting company works"
What is an internal consultant
Bain & Company, inc: Growing the business
Consultation Model 1
Overview of bain & company
MANAGEMENT CONSULTING 101 part 1
The Mc Kinsey Way
The consulting process models
McKinsey presentation
Bcg Consultants Love Life
Ad

Similar to Learning to code (20)

PDF
Become a webdeveloper - AKAICamp Beginner #1
PPTX
How To Learn Programming For Beginners | How To Start Coding | Learn Programm...
PPTX
Week 5
PPTX
LVPHP.org
PPTX
Week 5
PDF
Learn to build with php
PPTX
What Is Coding And Why Should You Learn It?
PDF
Learning to code in 2020
PPT
6 3 tier architecture php
PPTX
How does one learn to program?
PDF
Jump start php environment
PPTX
Server – side Technologies PHP for web dev.pptx
PPTX
Introduction to Coding
PPTX
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
PPTX
HOW TO START (ANYTHING ABOUT CODE).pptx
KEY
PHP for NonProgrammers (DrupalCon SF 2010)
PDF
Winter%200405%20-%20Beginning%20PHP
PDF
Winter%200405%20-%20Beginning%20PHP
PDF
PHP Basics
PPT
Programming For Designers V3
Become a webdeveloper - AKAICamp Beginner #1
How To Learn Programming For Beginners | How To Start Coding | Learn Programm...
Week 5
LVPHP.org
Week 5
Learn to build with php
What Is Coding And Why Should You Learn It?
Learning to code in 2020
6 3 tier architecture php
How does one learn to program?
Jump start php environment
Server – side Technologies PHP for web dev.pptx
Introduction to Coding
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
HOW TO START (ANYTHING ABOUT CODE).pptx
PHP for NonProgrammers (DrupalCon SF 2010)
Winter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHP
PHP Basics
Programming For Designers V3

More from Sara-Jayne Terp (20)

PPTX
Distributed defense against disinformation: disinformation risk management an...
PPTX
Risk, SOCs, and mitigations: cognitive security is coming of age
PPTX
disinformation risk management: leveraging cyber security best practices to s...
PPTX
Cognitive security: all the other things
PPTX
The Business(es) of Disinformation
PPTX
2021-05-SJTerp-AMITT_disinfoSoc-umaryland
PPTX
2021 IWC presentation: Risk, SOCs and Mitigations: Cognitive Security is Comi...
PPTX
2021-02-10_CogSecCollab_UBerkeley
PPTX
Using AMITT and ATT&CK frameworks
PPTX
2020 12 nyu-workshop_cog_sec
PPTX
2020 09-01 disclosure
PDF
2019 11 terp_mansonbulletproof_master copy
PPTX
BSidesLV 2018 talk: social engineering at scale, a community guide
PPTX
Social engineering at scale
PPTX
engineering misinformation
PPTX
Online misinformation: they're coming for our brainz now
PPTX
Sj terp ciwg_nyc2017_credibility_belief
PPT
Belief: learning about new problems from old things
PPT
risks and mitigations of releasing data
PPTX
Session 10 handling bigger data
Distributed defense against disinformation: disinformation risk management an...
Risk, SOCs, and mitigations: cognitive security is coming of age
disinformation risk management: leveraging cyber security best practices to s...
Cognitive security: all the other things
The Business(es) of Disinformation
2021-05-SJTerp-AMITT_disinfoSoc-umaryland
2021 IWC presentation: Risk, SOCs and Mitigations: Cognitive Security is Comi...
2021-02-10_CogSecCollab_UBerkeley
Using AMITT and ATT&CK frameworks
2020 12 nyu-workshop_cog_sec
2020 09-01 disclosure
2019 11 terp_mansonbulletproof_master copy
BSidesLV 2018 talk: social engineering at scale, a community guide
Social engineering at scale
engineering misinformation
Online misinformation: they're coming for our brainz now
Sj terp ciwg_nyc2017_credibility_belief
Belief: learning about new problems from old things
risks and mitigations of releasing data
Session 10 handling bigger data

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
KodekX | Application Modernization Development
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Spectroscopy.pptx food analysis technology
PPTX
Big Data Technologies - Introduction.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
KodekX | Application Modernization Development
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Spectroscopy.pptx food analysis technology
Big Data Technologies - Introduction.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Spectral efficient network and resource selection model in 5G networks
Advanced methodologies resolving dimensionality complications for autism neur...
sap open course for s4hana steps from ECC to s4
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation_ Review paper, used for researhc scholars
MYSQL Presentation for SQL database connectivity
Chapter 3 Spatial Domain Image Processing.pdf
MIND Revenue Release Quarter 2 2025 Press Release
Mobile App Security Testing_ A Comprehensive Guide.pdf
Electronic commerce courselecture one. Pdf
cuic standard and advanced reporting.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx

Learning to code

  • 1. Learning to Code Sara Terp @bodaceacat
  • 3. Why are you here?
  • 4. Being a Computer Scientist is… • • • • • • …knowing all the gotchas that trip you up …like security …and scaling …solving an endless series of puzzles …sometimes deeply frustrating …someone you can hire once your idea’s funded and off the ground
  • 5. … So Build Prototypes (MVPs) “I went through 3-4 years thinking I was going to meet some magical engineer who would build all the stuff I was thinking about. But I never met that person, so I taught myself ASP and MS Access out of a book and got to work just hacking stuff together. I’m still a really shitty programmer, but I know enough to hack a prototype together” - Dennis Crowley, Foursquare founder
  • 6. … and Don’t Worry About Perfect “Contestants must create a working software application that uses one or more of the MTA data sets or APIs available at http://mta.info/developers/, and includes the ability to update/refresh the data” – 2013mtaappquest.challengepost.com
  • 9. Which Application? don’t code Minimally adapt code Build small Use a framework Build custom Website Use Wordpress, Drupal, Joomla etc. Add Php to wordpress, drupal etc Write html Write in Ruby/Rails, Python/Django, Php/Codeignitor etc Write in Ruby, Python, Php etc Mobile phone Use SMS. Use Funf, Conduit etc Write html Write Java, Obective-C Desktop tool Use Excel, download apps etc Add Visual Basic functions to Excel etc. Command line interface Graphical user interface Write in C++, Java, etc. Microcontrollers Build circuits Write in Python, C etc
  • 11. How Easy to Get Started? • Html – very easy • Css – easy • Javascript – not so easy, but powerful • Php – very easy, can be messy • Ruby/Rails – easy, structured • Python/Django – not so easy, structured, very powerful data-handling libraries
  • 13. Find Your Terminal Window • Windows: from start menu, go to “all programs -> accessories -> command prompt” • Mac: go to “/applications/utilities” then click on “terminal” • Linux: you’re already there
  • 14. Get a Good Text Editor • • • • Notepad++ Komodo Edit Eclipse Idle (for Python)
  • 20. HTML Help • Getting started: – Write a file with extension “.htm” or “.html” – Open the file in a browser • Getting help: – Http://w3schools.com/ – http://learn.shayhowe.com/html-css – http://www.htmlgoodies.com/ – http://www.dontfeartheinternet.com/
  • 24. CSS Help • Getting started: – Write a .css file – Add “<link rel="stylesheet" href=“yourfilename.css">” to an html file • Getting help: – use the same sites as for html – http://css-tricks.com/
  • 25. Javascript code: *.js Or add “<script src=“myjavascriptfile.js”></script>” to your html file
  • 27. Javascript Help • Getting started: – Add javascript to your html files – Write .js file and add link to html files • Getting help: – http://www.w3schools.com/js/ – http://www.codecademy.com/tracks/javascript – http://www.w3schools.com/ajax/
  • 30. Php: Getting started • First, set up a virtual server (WAMP, MAMP, XAMPP etc). • Then put your php file into directory wamp/www (or mamp/www or xampp/www) • Start the virtual server • Point your browser at localhost/myphpfile.php
  • 32. Php: Getting Help • Tutorials: – http://php.net/manual/en/tutorial.php – http://www.codecademy.com/tracks/php • Meetups: – http://www.meetup.com/nycphp/ – http://www.meetup.com/new-york-php/ • Resources: – http://php.net/manual/en/langref.php
  • 35. Ruby / Rails: getting help • Courses: – http://www.codecademy.com/tracks/ruby – https://www.codeschool.com/ • Meetups: – http://www.meetup.com/ruby-nuby-info/ – http://www.meetup.com/NYC-rb/ – http://www.meetup.com/nycruby/ • Guides: – http://guides.rubyonrails.org/ – http://railscasts.com/
  • 37. Python: getting started • https://wiki.python.org/moin/BeginnersGuide/Do • http://docs.python-guide.org/en/latest/ (look under “properly install”) • http://icanhazdatascience.blogspot.com/2013/03/
  • 38. Python: getting help • • • • • • • • The Best Way to Learn Python (Read) Learn Python the Hard Way (Read) The Python Tutorial (Read) NewBoston's Python videos (Watch) http://www.pyschools.com/ (Do) Codecadamy's Python course (Do) MIT's Intro to Computer Science (Study) help(xx)
  • 39. Learning a Language is Only the Start
  • 41. Go to Meetups and Hackathons
  • 42. Find a Team to Learn With
  • 43. Find Some Good Courses • Courses: – Codecademy .com – MITx.org – Coursera.org – https://generalassemb.ly/ ($) • Coding challenges: – ProjectEuler.net – TopCoder.com challenges
  • 44. Find A Project to Learn From
  • 45. Find Something To Do On a Project
  • 46. Last (but not least) • Please! – Comment your code – Use coding standards – Learn about Test-Driven Development – Be adventurous : • Failing isn’t bad, it’s learning! • If a learning method doesn’t work for you, it’s not you: try a different method!

Editor's Notes

  • #2: {"38":"help(xx) is a python command. If you’re not sure about a python variable or function, type help(functionname) to see what you can do with it.\nAnd there’s now a Ruby version of learn python the hard way… called “Learn Ruby The Hard Way”. \n","27":"Here’s how to get started, and where to find more help. \nYou also need to know about AJAX. AJAX (Asynchronous JavaScript and XML) is a way to only change the pieces of a webpage that you need to – e.g. if all you want to do is change the name of a button, you change the name of that button rather than reloading the whole page from the Internet. \n","16":"You’ll need somewhere to write and test software that you’re developing for the internet, and you won’t always be online when you’re coding (I’m writing this line on the New York subway…). \nTesting your internet code ‘locally’ (on your own pc) is easy in straight Ruby/Rails and Python/Django. But if you want to test php code for the internet, or link your code up to a mysql database, a virtual server is a must. \nThe two most common ones are WAMP (for Windows) and MAMP (for Mac). There are install instructions for these here: http://themetaq.com/articles/quick-wamp-and-mamp. There are some gotchas installing \nWAMP on a 64-bit Windows7 machine - http://blog.overcognition.com/?p=483 has some tips on how to deal with these.\n","5":"You don’t have to build the ‘perfect’ system. And you certainly won’t build the perfect version of your system in one go. Get used to thinking about Minimum Viable Products – e.g. what’s the smallest system you can build to show and test your ideas. \n","44":"Go find a project doing something that interests you in a language you want to learn. \nAsk around, both online and at meetups. Search the internet… for example, this is a Github search that I did for humanitarian projects. Notice the project at the top, flavour/eden. It’s in Python, has lots of contributors and was updated recently – it’s probably a good place to learn from. \n","33":"If you want to build a site quickly, do it in Ruby. \nAnd Ruby scales… e.g. you can build websites that handle a *lot* of internet traffic in it.\n","22":"Here’s what that css file did to the html code we saw earlier. \nCSS can also hide and unhide parts of the html code (e.g. if you have a form that’s only needed sometimes), and change the *position* of items in the html code. That’s where the &lt;div&gt; tags come in handy, because you can name them, e.g. in the html: \n&lt;div id=“sara_sidebar”&gt;\nTo move this part of the html to the top right of the webpage, you type this in the css file: \ndiv.sara_sidebar\n{\nposition:fixed;\ntop:30px;\nright:5px;\n}\n","11":"Last question: how soon do you want to build something?\nAnd there’s a tradeoff here: a really easy language like HTML probably won’t do everything you need your system to do, so think again about why you want to learn to code, and what you want to do with it. Then pick a language that fits that need. \n","39":"When you start coding, you’ll learn quickly that there’s a gap between the things that you want to do and the things that you can do at the moment. Don’t worry about this – it’s normal. Do go find some allies to help you learn. Here’s how.\n","28":"Back-end languages do all the things that aren’t about putting text on a webpage. Things like: getting data into and out of databases; managing user logins; connecting to other systems (using things like APIs).\n","17":"We’re going to look at some languages used in web applications. A web application is software that you access over the internet. It has a front end and a back end. Front-end languages control what you see when you go to a website; back end languages control everything else. \nIf you want to look at the front-end code for a website, right-click on a webpage and select “view source”. \nIf you want to see what produced a specific button, effect etc, then use one of the browser tools: \nIn Chrome (https://www.google.com/intl/en/chrome/browser/), right-click on the button etc and select “inspect element”\nIn Firefox, install Firebug (http://getfirebug.com/). \n","6":"This is part of the rules for a $20,000 software app contest (MTA New York). Notice that nowhere does it say “and the app should be perfect and beautiful”. It says “working” and it adds some rule about using the MTA data, but that’s it. \nAs soon as people start using your system, you’ll learn things about what they need and want, and they won’t be the things that you thought they would. So build “quick and dirty” prototypes; start with something that doesn’t do everything and doesn’t have to look amazing, and iterate… get people using your prototypes and giving you feedback, and change your system a little bit at a time. \n","45":"Once you’ve found a project, find the community that goes with it. Search for the name, or email the main contributors to ask how you could help (it’s not just coding help they need – writing user guides that describe what the code does is a much-needed skill too). Many projects have issues lists – lists of bugs (the things that are wrong with the code) they’d like to fix, and features they’d like to have (this is the issues list for the web version of Ushahidi). Picking one of these is a very very good way to learn about how a system works, and you can usually get help with it from the rest of the team.\n","34":"To get started, just go to Railsinstaller.org. It’ll save you a huge amount of time.\nStarting a Rails project is pretty magic. \nGo to your command prompt, move to the directory you want the rails project in (use command “cd” to do this), and type “rails new nameofyourproject”)\nGo into the rails project directory (“cd nameofyourproject”)\nType “rails server”\nIn a web browser, go to http://localhost:3000/\nHeroku is a good site if you want to move a Rails apps from your local machine onto a real, live, on-the-web server (this is known as “hosting”): https://devcenter.heroku.com/articles/getting-started-with-rails4.\nOther hosting sites include Amazon Web Services (http://aws.amazon.com/), EngineYard.com, Rackspace and Digital Ocean.\n","23":"I knew you were going to ask. \nBe careful what you wish for: CSS positioning can get messy quickly – it really helps to understand the idea of CSS “boxes” when you’re designing a new page.\nThe above, by the way, was *absolute* positioning – there’s also a lot to be done by positioning pieces of the html code *relative* to each other, e.g. in 2 or 3 columns from left to right across the page. It takes a little while to learn, but mastering CSS positioning means you can build websites that look the way you were dreaming about before you started coding in HTML.\n","12":"So… before we look at some languages, there are some things that confused me when I started that would be good for you to try now. \n","1":"Abstract: \n1-hour lecture given to Columbia University’s New Media Task Force (http://newmediataskforce.wordpress.com/), to help students start to build computer applications themselves.\n","40":"If I have a coding problem that I can’t fix, then nine times out of 10, I find the answer on Stack Overflow. First do a Google search for your problem, then write a question on StackOverflow.com if you can’t find the answer to it.\nIRC (Internet Relay Chat) lets you chat in real time with other people around the world. A lot of coders use IRC to talk to each other, and there’s at least one IRC channel for each language. \nYou’ll need a software package to access IRC: I use MIRC (http://www.mirc.com/get.html) to access IRC on Windows; for mac users, Colloquy (http://colloquy.info/) and LimeChat (http://limechat.net/mac/) are both popular.\nSome teams also hang out and chat on Skype, but this isn’t as popular as IRC.\nOther good places for help include Safari Books Online ($, but gives you access to huge numbers of technical books) - https://ssl.safaribooksonline.com/trial.\n","29":"Here’s PHP. It’s an easy language to learn, and (perhaps because of that) very popular in international development. \n","18":"This is html. \nHtml is the language that browsers read to decide what to display on a webpage, where to display it and how to format it. \nIt’s a pretty simple language. Everything is enclosed in “tags” – like this “&lt;html&gt;” tag here. Every tag – except “&lt;p&gt; and &lt;br&gt;” – has a start tag, &lt;tag&gt; and an end tag &lt;/tag&gt;. Everything inside a pair of tags is affected by them. \nSome common tags you’ll see: \n&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;&lt;/html&gt; tells the browser that this is html, which parts are general instructions, and which parts are displayed. \n&lt;p&gt;- paragraph\n&lt;h1&gt;&lt;h2&gt;&lt;h3&gt; - headings\n&lt;br&gt; - new line\n&lt;img&gt; - picture\n&lt;div&gt; - division. You don’t see this tag, but it’s used by other code (like css) to change the things inside it.\n","7":"Lots of new programmers agonize about which programming language to use. Don’t. The basic commands available in most modern languages are pretty similar: if-then-else, for loops, print etc. Basically, pick a language that fits what you’re interested in and that you can get started with quickly, play with it, use it, and learn other languages if you have to.\nBut just in case, here are some things to think about… \n","46":"Comments are lines in your code that don’t do anything, but do leave a text message for the next coder (or you) to read. Comments help you understand what you were doing and why, when you come back to your code, and save a lot of later pain. \nA coding standard is an agreement between programmers to write their code so it all looks similar. For instance, the python coding standard is PEP8: http://www.python.org/dev/peps/pep-0008/ - this says things like “lines shouldn’t be more than 79 characters long”. Ruby has “the unofficial coding guide”, http://www.caliban.org/ruby/rubyguide.shtml. Php has PEAR and PSR: http://jason.pureconcepts.net/2012/11/php-coding-standards/\nTest-driven development is the idea that you first write what you want your code to do, then you run your code, watch it fail your tests, then fix the code until the tests pass. On a big project with lots of developers, this is the only thing standing between you and the code potentially breaking in places you didn’t expect every time someone updates it.\n","35":"Here are some places to get Rails (note that Ruby is rarely used without Rails) help. Again, note the meetups – the Ruby Nuby is specifically for beginning Rails programmers, so that might be a good place to start.\n","24":"And here’s how to get started with CSS.\n","13":"If you’re back-end coding, you’ll probably use the terminal window a lot. Here’s where to find it. \nIt’s also called “terminal” and “command prompt” (http://pcsupport.about.com/od/termsc/p/command-prompt.htm) sometimes.\n","2":"Hi! I’m Sara – I’m a system designer, a coder, and I’m relearning how to be a developer. The NMTF asked me to talk to you today because some of them are in Eric Cantor and my class “ICT for Development and Social Change at SIPA”, where we teach people how to design systems that make a positive difference that users can use, and coders can create. \nWe’re not teaching coding on that course because frankly being able to design a good system is a valuable skill in itself, and coding can take a long time to teach. There’s a Columbia Business School course that teaches coding, but it’s hard to get into and there isn’t a SIPA equivalent yet. So today’s lecture is about the ways you can teach yourself to build software quickly.\n","41":"Good local meetups that include language training include Ruby Nuby and PyLadies. \n","30":"Now we’re on back-end languages, it gets a little harder to start running your code. \nYou can’t run PHP files without a ‘web server’ – a computer that knows how to process instructions in languages like php. Luckily, there are lots of ‘virtual’ servers out there – software that you can use to mimic a web server on your local PC. We mentioned some of these earlier. \nAs an aside, if you try running a php file without a server, you’ll see that your browser comments out all the php code, and only the html code will be visible. \n","19":"And here’s what that piece of code produced.\n","8":"Question 1: which hardware are you planning to run this system on? You can run most languages on most ‘hardware platforms’, but making that happen can take a huge amount of computer science knowledge. Some platforms are designed to work with specific languages; some languages are just easier to use on some platforms. Here’s the basic list: \nComputer that isn’t connected to the Internet, i.e. someone’s running your code on their own machine: lots of languages available, including C, C++, Visual Basic, Java, Python, Ruby, R... Gotchas: people will have to install your code on their machine. This can get messy.\nComputer that is connected to the Internet, i.e. someone’s running your code through your website: lots of languages available, including Html/Css, Javascript, Php, Ruby, Python, Java…\nPhones and tablets, i.e. someone’s running your app on their phone: First, all smartphones support web-based applications, e.g. you can use them to view websites instead of programming a “native app”. If you do want to build an app (and one of the reasons you might want to do this is that you don’t have to be connected to the internet to run an app), Android phones are usually programmed in Java, using the Android Software Development Kit. iPhones are usually programmed in a variant of C called Objective-C. Blackberry phones are usually programmed in Java. \nMicrocontrollers, i.e. someone’s running your code on a miniature computer, e.g. to sense and control things in your environment, like robots and air quality: The Raspberry Pi is usually programmed in Python, (although other languages are possible); Arduinos are usually programmed in a variant of C. \n","36":"Python is a very powerful language that’s great for data wrangling. It takes a while to learn how to use all of it, but there’s a lot there to love, including powerful natural language processing libraries. \n","25":"Javascript is used to control “active” things in html, like checking your form inputs are valid. \nJavascript, like css, can be added into html code (look for the &lt;script&gt; tags) or added to an external file and included in html files, like this: \n&lt;html&gt;\n&lt;head&gt;\n&lt;script src=“myfirstjavascript.js”&gt;&lt;/script&gt;\n&lt;/head&gt;\n&lt;body&gt;\n&lt;/body&gt;\n&lt;/html&gt;\nJavascript references can go in the head or the body of an html file, although they’re usually put into the head.\n","14":"You will spend a lot of your time as a coder debugging (finding and fixing errors in the code). Doing that with wordpad is painful. Here are some text editors that are set up for displaying code – with line numbers at the side of the code, with colour highlighting of different types of command, and sometimes even with colour highlighting of bugs as you write them. \nPersonally, I use Notepad++ (http://notepad-plus-plus.org/) for most things, and Idle (http://www.annedawson.net/Python_Editor_IDLE.htm) for Python coding. Notepad++ is a good place to start. As you learn to code, you’ll find that one editor will become your favourite. \n","3":"First, some questions for you:\nWhy are you here? Do you want to learn to code so you can build things that work; to try out new ideas; to build the next facebook; to enter competitions?\nHow much time do you have available?\nWhat sort of systems do you want to build? What interests you? What moves you? What are your favourite systems that already exist, and why?\nMy own answers to those questions:\nI’m here because I’m not really a coder… I’m a systems architect – someone who works out how technology fits into a bigger system of people, processes and equipment, and helps determine what that system should do. The things that I do with code are build prototypes to test out ideas about a system, and build tools to do little jobs like processing data the way that I need to. I do also write ‘commercial’ code, for companies like Ushahidi, but that’s a different skill, and one that takes a lot more time, patience and downright detective work than many of you will need to succeed. \nI never have any time, but as the saying goes, “if you want something done, ask a busy person…”\nI want to build systems for communities that include people in the developing world. Equality interests me, especially the equality of opportunity that we can have in a globally-connected world. My favourite systems are elegant, minimal, and carry on working when the world goes to heck – Facebook, Twitter, Skype (although that isn’t so great on the elegant), Ushahidi. \n","42":"You’ll become a better computer scientist if you work in a team. Places you can join teams include:\nOpen-source projects on Github\nDedicated team sites (e.g. OpenHatch.com and codeMontage.com)\nHackathons\nExisting open-source applications (Ushahidi, Sahana Foundation, OpenStreetMap etc)\nJoining a social coding company – you don’t have to start as a coder!\n","31":"This is what happens when we run that piece of php code on a Wampserver. Note the web address: localhost/phpexample.php – that’s exactly what you have to type in (not www.localhost or http://localhost). \nThe middle line was produced by the php code; the other lines are in html. \nThis is a very simple example, but some very complex web systems are built in php, including Ushahidi, which uses the Kohana framework to keep its code tidy.\n","20":"It’s a small language, not too complex, but you need to know it if you’re doing anything on the Internet. Here are \nHow to write and run your first piece of html code\nWhere to find more help online.\n","9":"Question 2: what are you trying to build? And can you get away with doing less coding to produce your prototype faster? \nThis table isn’t finished yet – but your options for most platforms are: \nNo coding: use an existing application as the basis of your system. E.g. you want a basic website? Use WordPress. \nMinimal coding: add code to an existing application – e.g. add CSS code to change the layout of a WordPress site.\nBuild small: if you just want a box and a button, then just code a box and a button. You don’t have to build complicated systems to be successful.\nUse a framework: A framework is a reusable piece of software designed to make programming complex applications easier. Frameworks give you easy-to-use commands for things that are common across lots of applications, like logging in, security, database management and making pages look similar to each other. Frankly, if it’s appropriate and you can use one, do: it saves a lot of time writing the code, and a lot of time debugging and maintaining it later.\nBuild custom: if a framework doesn’t fit your needs (and for most web applications, a framework usually does), then write everything from scratch (but use libraries where you can). \n","37":"Some places to get you started with python. Full disclosure: my cat Emily writes the icanhazdatascience blog.\n","26":"And here’s what that piece of javascript produced: a button that, when pressed, creates a ‘pop-up’ box with a message and another button.\n","15":"GitHub (github.com) is a collection of ‘repositories’ – directories containing software, descriptions and issue lists that are all available together online. \nBut Git is much more than that. It’s social: it lets many people all edit the software offline (on their own computers) and ‘push’ changes to it to the repository that can be accepted or rejected by the repository owners. It has ‘branches’ – copies of the repository that subgroups can play with and add new things to without affecting the main repository code, so you can break things locally without breaking a working system. \nGithub is also a great place to find open source software – software that you can use for free, and change to fit what you need.\n","4":"Being a coder isn’t the same as being a developer. You start by learning to code, then learn how to turn that into reliable systems. Today is about the coding part. \n","43":"MOOCs (Massive Online Open Courses) have really changed access to good coding courses. Here are some of the main MOOCs (codecademy is dedicated to coding, MITx is open MIT courses, coursera is courses from many universities): see also http://www.mooc-list.com/ and http://en.wikipedia.org/wiki/Massive_open_online_course. \nGeneral Assembly is a training company in New York that’s run by coders: the courses aren’t free, but they’re generally excellent. \nAnd if you want to practice on your own before starting with a team, there are coding challenges (websites containing small coding tasks that you submit solutions to). \n","32":"And here are some good places to find PHP help. Note that, as we start on backend languages, I’m suggesting that you go to meetups and meet other coders. You will get stuck occasionally, and having a bunch of people to ask rather than fighting the system by yourself can be a very very sanity-restoring thing. Especially if the answer turns out to be “oh, you just add a couple of characters here…”. \n","21":"Css tells the browser how to format the html, e.g. how to display each element and where to put it on the page. \nHere’s a simple piece of CSS that makes everything in &lt;p&gt; tags red and bigger, and everything in &lt;td&gt; tags green. To apply a piece of css to a html file, you either need to put the CSS code in the HTML file, \ne.g. by\n&lt;html&gt;\n&lt;head&gt;\n&lt;style&gt;\np {color: #ff0000; font-size: 24px;}\ntd {color: #00ff00;}\n&lt;/style&gt;\n&lt;title&gt;Example HTML file&lt;/title&gt;\n&lt;/head&gt;\n&lt;body&gt; etc\nOr put the css into its own file (aka “external style sheet”) and add a “reference” to the html file – that’s the “&lt;link rel…” line in the html code above.\n","10":"Question 3: where are the people you can learn from? \nPicking a language isn’t just about picking a language. It’s about finding the places and people that can help you write the system you want to, in your chosen platform, area etc. \nSo go out and find which languages the projects you like are written in. Google the websites and apps you want to be like – find out which languages they’re written in, and why (better yet, see if there are any articles about why the developers wouldn’t pick the language if they could start again now). \nThis is a github search for an area I’m personally interested in: HFOSS (Humanitarian Free and Open Source Software, http://www.hfoss.org/). The top project lists its language as Python… the list on the left shows all the languages that people used in this list of projects. If I started again today, I’d probably go help out on one of the Open Source projects that interests me, and cut my teeth fixing bugs for them until I knew enough to build my own systems.\n"}