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