Download
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
We are on Patreon! https://www.patreon.com/programmingthrowdown
Intro Topic: Why do things cost what they do?
Tamper Protection
- Speakers
- Thaddeus: Software Engineer
- Marc: Software Engineer
- Steve: Product Manager
- Norman: Marketing
- Steve: Overview of Tamper Protection
- Panel Discussion
- What is binary tampering? What is reverse engineering?
- How do users change the behavior or something after it's already compiled?
- What are common reasons people tamper with binaries?
- What are the consequences or not protecting against tampering?
- How does tamper protection work?
- What kind of background is useful for this kind of work?
- How does self-modifying code generated by temper protection not get caught by the antivirus?
- How much time is spent doing white/grey/black hat hacking?
- More Information
- Intel is hiring!
- Intel Tamper Protection Toolkit Getting Starting Tutorial
Download
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
We are on Patreon! https://www.patreon.com/programmingthrowdown
Public Service Announcement: Backing Up
- Source Control: See Below :-)
- Small files: Use free cloud services
- Dropbox, Google Drive, iCloud drive
- Photos: Use Facebook/Google Photos
- Other Large Files: Use a private service and link friends/familys' computers
- Syncthing, Bittorrent Sync
Book of the Show
- Jason: Kobolds Ate My Baby
- Patrick: Firefight
Tool of the Show
- Jason: Qt
- Patrick: Wayward Souls (iOS & Android)
Source Control / Version Control
- Overview
- History of each file in the code base
- Keep backup of work (ability to roll back changes)
- Lock vs Merge
- Work on several files in parallel
- Pros
- Don’t have to manually merge
- Don’t have to use ftp/email to keep resources in sync
- Can easily rewind time and keep track of branches
- Ability to apply bug fixes without adding new features (branches)
- Uses file differences to reduce space
- Cons
- Needs to keep entire history (sometimes even on every client)
- Not designed for large files
- Github Large File Storage
- Not designed for archiving
- Use syncthing / bittorrent sync / dropbox / rsync
- History
- 90’s
- Concurrent Versions System (CVS)
- Rational Clearcase
- Microsoft SourceSafe
- Razor
- 2000’s
- Microsoft SharePoint
- Subversion
- 2005 - present
Download
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
We are on Patreon! https://www.patreon.com/programmingthrowdown
Jaroslaw Piskorski - Details on R https://plus.google.com/102107474329988448295/posts/XMxUosQNj2R
Ash Booth - Difference between coding in school and working in industry
Quang Nguyen - Coding Competitions
News
- Amazon’s $23,698,655.93 book about flies
- Learning Regular Expressions (Nicholas Bering)
- Things I was unprepared for as a lead developer
- JetBrains IDE Licensing Fiasco
Book of the Show
- Jason: Paranoia RPG Player’s Handbook
- Patrick: Lock In
Tool of the Show
Ruby
- History
- "I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of Ruby language." - Matsumoto
- Overview
- Similar to python
- Interpreted
- #5 in Redmonk Programming Language Rankings
- Ruby on Rails
- Model-`View-Controller
- View: HTML w/ templates
- Controller: Application logic
- Model: Object-Relational Model
- Support for many databases and templating engines
- Pros
- Can be procedural / object oriented / functional
- No goofy __dict__ like python
- Define and modify classes at runtime & reflective
- Cons
- Dynamically Typed and Interpreted
- Scientific support doesn’t compare to numpy/scipy
- Learning
Download
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- Hack: A typeface designed for source code
- Kalman Filter, in Pictures
- An honest guide to the San Francisco startup life
- Underhanded C Contest
- Things to commit just before leaving your job
Book of the Show
- Jason: The hard thing about hard things
- Patrick: Steel World
Tool of the Show
- Jason: Electron https://github.com/atom/electron
- Patrick: Does Not Commute (iOS / Android)
R
- Suggested language: Thanks John Williams!
- Alfredo Gallegos asks: What is Data Science?
- Adding structure to data
- Enriching data
- Building models to estimate/classify/cluster/embed data
- Data science competition / tutorials
- Features
- Open Source
- Data Frames
- Lots of packages
- Rmr (map reduce in R)
- Cons
- Fragmented community
- Many packages/frontends lack support
- History
- Based on S from Bell Labs
- Developed by Ross Ihaka and Robert Gentleman at the University of Auckland
- Popular Packages
- ggplot2
- htmlwidgets
- R Markdown
- zoo
- RODBC / RMySQL / RPostgresSQL / RSQLite
- GUIs
- Learning R
Download
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- Windows 10
- Google open sources cluster management
Book of the Show
- Jason: The Mythical Man Month
- Patrick: Armada
Tool of the Show
Inside Game Programming
- Game disciplines
- What are the roles?
- Writer, game designer, artist, engine coder, tool coder, game coder (scripter)
- What are the requirements for each of the roles?
- What’s the difference between working for a game company and making a game in your spare time?
- Why do most studios still roll their own game engines?
- What is the atmosphere like at a game studio?
- What is it like to play an unfinished game through each of the stages?
- What can someone do to become a game programmer?
- Education: Computer Science, Mathematics esp. Linear Algebra
- Portfolio (demo games, making your own raytracer)
- What should a future game programmer know about games in general?
- How much should they play or know about the games made by that company?
- How can potential candidates reach you?
Download
Introduction: How many monitors are enough?
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- Making Crash Bandicoot
- Apple will open source Swift
- E3 2015: Star wars Battlefront, Fallout 4, FFVII on iOS
- Chirp distributed file system
Book of the Show
- Jason: Gödel, Escher, Bach: An Eternal Golden Braid
- Patrick: Leviathan Wakes
Tool of the Show
Debugging
- Logo
- Scratch
- Started in 2003 at MIT
- Graphical block based programming
- Games, animations, sounds
- Promoted for use in coding clubs
- Lego Mindstorms
- Developed in conjunction with MIT and other universities
- NXT-G Code backed by LabView
- Graphical blocks for controlling motors and reading sensors as well as control flow
- RoboMind
- Allows for simulation as well as use on the real thing
- Able to write in a variety of languages targeting the system
- Adobe (Macromedia) Engines
- Others
Download
Introduction: "Easy" Programming Problems & https://blog.svpino.com/2015/05/07/five-programming-problems-every-software-engineer-should-be-able-to-solve-in-less-than-1-hour
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- Nand2Tetris
- Creating Art for Engineers
- Google - Become a SWE
- Docker: Open platform for distributed computation
Book of the Show
Tool of the Show
- Jason: rsync
- Patrick: Multimeter
Debugging
- Types of bugs
- Crasher
- Hang/Slowness
- Wrong answer
- Memory/Thread leak
- Buffer Overrun
- Techniques
- Divide and Conquer
- Finding where the problem isn’t
- Logging
- Print statements
- Rolling files
- Debugger
- C/C++: GDB / LLDB
- Javascript: FireBug
- Python: pdb
- Java: jdb or JDWP (Java Debugging Wire Protocol)
- Profiling (asked for by Morten Nielsen)
- Prelude/Postlude vs Random Sampling
- C/C++: gprof
- Javascript: Firefox/Chrome profiler
- Python: Profile / cProfile
- Memory Debugging
- Valgrind
- Address Sanitizer
- Automation
- Reporting
- Crash Reporting
- Aggregated statistics
- Worst bug ever stories
- Bugs that only happen in release builds
- Bugs that only happen once per day
- Bugs where you have to do something for a long time to get it to work
- Crazy Stories
- Friend’s dad debugged ATM machines in russia by playing notes at different frequencies
- Stack unwinding by hand
Download
Introduction: Strong/Weak Typing & https://www.destroyallsoftware.com/talks/wat
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- Disque - Redis for message passing
- Amazon profits from AWS
- jq: command line JSON parser
- China attacking github
Book of the Show
- Jason: A Theory of Fun in Game Design
- Patrick: Monster Hunter International
Tool of the Show
- Jason: Babun
- Patrick: Crouton
Fortran
- Overview
- ForTran: Formula Translating System
- First optimizing compiler
- History
- First version designed by John W. Backus in 1953
- “20x fewer instructions than assembly”
- Writing programs for computing missile trajectories
- Punch-cards
- Mainframes
- Fortran still in use today
- Parts of scipy/matlab are in fortran
- LAPACK still in fortran
- Compilers
- Pros
- Stickiness
- Punchcards!
- FREQUENCY directive: compiler performed a monte carlo simulation to place blocks
- Cons
- Pareto-dominated by more advanced languages
Download
Introduction: Net Neutrality
User Feedback: Pre vs Post Increment CORRECTION
We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown
News
- TidalWave (Open Source collaborative wiki)
- 8cc Small C Compiler
- 50 Totally Free Lessons in Graphic Design Theory
- OpenGL from Zero to Hero (Including making a game engine)
Book of the Show
- Jason: You Can Draw in 30 Days: The Fun, Easy Way to Learn to Draw in One Month or Less
- Patrick: Abyss Beyond Dreams (Peter F. Hamilton)
Tool of the Show
- Jason: Jacoco
- Patrick: ThinkOrSwim
Node.js
- Overview
- Javascript is the only language supported in all modern browsers
- Node.js allows javascript client & server
- npm - node package manager
- History
- 2008 V8 Javascript Engine Released
- Developed by Google for Chrome
- 2009 Initial version released by Ryan Dahl working at Joyent
- Pros
- Javascript object -> JSON string -> Javascript object -> object database
- Share libraries across client/server
- Especially important for validation
- Great MVC Frameworks
- Asynchronous
- Cons
- Weakly Typed
- Callback hell (explicit async/sync)
- Performance
- Single threaded
- Interpreted
Download
Introduction: Pre vs Post Increment & Cooking!
News
- Open offices at Stack Exchange
- React Native
- Windows 10 Free
- ES6 -> ES5 Transpiler
Book of the Show
- Jason: Game Developer Magazine Archives
- Patrick: Mistborn: The Final Empire
Tool of the Show
- Jason: Meld
- Patrick: Space Marshals
Unity
- Overview
- Game Engines
- Game Loop (16ms)
- Platform Specific APIs
- OpenGL/DirectX vs. GDI/X/Quartz
- OpenAL/DirectSound
- Animation Assistance
- Content creation pipeline
- Scripting
- AI
- Physics
- History of Game Engines
- High Level Game Engines
- RPGMaker
- SCUMM http://en.wikipedia.org/wiki/SCUMM
- Low Level Game Engines
- SDL
- SMFL
- OGRE/OIS/OpenAL
- HaXE
- Canvas/HTML5
- Unity
- Assign script(s) to Prefabs
- Each script is composed of callbacks ( Update, UpdateFixed, Start, etc.)
- Instantiate prefabs to create GameObjects
- Prefab is a prototype of a GameObject
- UnityScript / UnityC# / Boo
- Pros
- Cross-Platform (Desktop, Web, Mobile)
- Productivity Boost
- Contains many third party plugins (Toon Shading, etc.)
- Cons
- Unity Pro
- $1500, +$1500 for android, +$1500 for iOS
- Hard to do custom game engines
- Minecraft, Custom physics, etc. only possible with Unity Pro Native or Plugins
- Licensing fees
Download
Intro Topic: Listener Mailbag
News
Tool of the Show
Rust
- Overview
- A memory-safe interpretation of C++
- Unsafe pointers are not allowed (e.g. x = 0x1234)
- Type Inference
- Boxes (memory shared between threads but owned by the creating thread)
- Traits (interfaces which allow function bodies but no fields)
- Two runtimes: native and green
- In Native, each task is a thread
- In Green, you specify a threadpool and each task is a coroutine
- History
- Personal project for a mozilla employee
- Still in alpha mode (using stable releases is discouraged)
- Very basic support for thrift for connecting to other languages
- Pros
- Uber smart compiler
- Great standard library
- Auto serialization to/from json/base64/hex
- Army of useful collections (BTree, Trie, LRU, Arena, etc.)
- GraphViz for creating dot files from rust collections
- Many more
- Cons
- Slower than C++ (But not much)
- Too early to use reliably
- Third party libraries are lacking / immature