Monday, December 21, 2015

Episode 49: Tamper Protection

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


    Monday, December 7, 2015

    Episode 48: Source Control

    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

    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
        • Git
        • Mercurial

    Monday, October 12, 2015

    Episode 47: Ruby

    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

    Book of the Show

    Tool of the Show

    Ruby



    Thursday, September 10, 2015

    Episode 46: R

    Download

    We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

    News

    Book of the Show

    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
        • R -> gnuplot
      • htmlwidgets
        • web visualizations
      • R Markdown
        • markdown support
      • zoo
        • Time series
      • RODBC / RMySQL / RPostgresSQL / RSQLite
        • SQL support
    • GUIs
      • RStudio
      • Rattle
    • Learning R


    Tuesday, August 11, 2015

    Episode 45: Inside Game Programming

    Download

    We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

    News

    Book of the Show

    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?

    Friday, July 10, 2015

    Episode 44: Logo Scratch Lego

    Download


    Introduction: How many monitors are enough?

    We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

    News

    Book of the Show

    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
      • Authorware
      • Adobe Flash
    • Others

    Tuesday, June 2, 2015

    Episode 43: Debugging!

    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

    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


    Thursday, May 7, 2015

    Episode 42: Fortran

    Download


    Introduction: Strong/Weak Typing & https://www.destroyallsoftware.com/talks/wat

    We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

    News

    Book of the Show

    Tool of the Show

    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
      • G95
      • GNU GFortran
    • Pros
      • Stickiness
      • Punchcards!
      • FREQUENCY directive: compiler performed a monte carlo simulation to place blocks
    • Cons
      • Pareto-dominated by more advanced languages


    Monday, April 6, 2015

    Episode 41: Node.js

    Download


    Introduction: Net Neutrality

    User Feedback: Pre vs Post Increment CORRECTION

    We are sponsored by audible! http://www.audibletrial.com/programmingthrowdown

    News

    Book of the Show

    Tool of the Show

    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
        • Express
      • Asynchronous
    • Cons
      • Weakly Typed
      • Callback hell (explicit async/sync)
      • Performance
        • Single threaded
        • Interpreted


    Monday, February 2, 2015

    Episode 40: Unity

    Download


    Introduction: Pre vs Post Increment & Cooking!



    News

    Book of the Show

    Tool of the Show

    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
          • Pathfinding
        • 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


    Wednesday, January 7, 2015

    Episode 39: Rust

    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