Thursday, July 31, 2014

Episode 35: Haskell


Download

Question: Does your (current or potential) job title matter?

News
Book of the Show
Tool of the Show
  • Jason: Uber
  • Patrick: Store Coupon Apps

Databases

Thursday, June 26, 2014

Episode 34: Databases


Download

News
Book of the Show
Tool of the Show

Databases
  • Flat Files vs. Databases
  • Motivation (Why use a database)
    • Reverse-Indexing
    • Caching
    • Redundancy
    • Scalability
    • Segmentation
    • Analysis
    • Validation
  • Consistency
    • ACID
    • Eventually Consistent
  • Types
    • Relational Databases
      • SQL (Structured Query Language)
    • NoSQL Databases
      • Key/Value Store
      • Column-Family (Key / MultiValue)
      • Document Store
  • Implementations
    • Embedded
      • SQLite (Relational)
      • BerkeleyDB / MapDB (Key/Value)
    • In-Memory Server Database
      • memcached (Key/Value)
      • Redis (Key/Value)
    • Disk-Based Server Database
      • MySQL / Postgres (Structured)
      • HBase / Cassandra  (Column-Family)
      • MongoDB / RethinkDB (Document)

Wednesday, May 7, 2014

Episode 33: Design Patterns


Download

News
Book of the Show
Tool of the Show
  • Jason: VirtualBox
  • Patrick: Bittorrent Sync

Design Patterns
  • Singleton
    • Create only one instance of a class
      • Eager Initialization
      • Lazy Initialization
    • Example: Instance of a log file that should be shared across application
    • Danger: Use as Replacement for global variables
  • Facade
    • ZombieDB
  • Observer (Publisher/Subscriber)
    • Asynchronous device driver
    • Socket.IO
  • Resources

Tuesday, March 18, 2014

Episode 32: OpenSCAD


Download

News
Book of the Show
Tool of the Show

OpenSCAD
  • 3d models
    • Representation of the real world
    • Pure/Mathematical
    • NURBS: Non-uniform rational B-spline
  • Shapes
    • 2d
    • 3d
  • Transformations
    • Affine Transformation
    • 3d Transformation
    • Quaternions (4-D Trick)
  • Boolean Operations
  • Alternatives
    • Blender, 3d Studio Max
    • implicitCad (similar, written in Haskell)
  • RayTracing
    • Scene Description Language
    • Cast rays from camera to light source
    • POVRay

Monday, January 27, 2014

Episode 31: Unix Commands


Download

News
Interview Tips
  • Read up about the company you’re interviewing with
    • Core Products, Revenue
  • Be Confident, don’t be intimidated
    • Interviewer has studied the problems in advance
    • Attempt every problem, explain your thoughts, leave no stone unturned
  • Prepare a couple good questions for the interviewer
  • Have example code/ open source projects
  • Practice implementing common data structures and algorithms from scratch
    • Binary Trees and Tree Traversal
    • HashMaps
    • Sorting (at least 1 O(n log n) algorithm)
    • Graph Algorithms
    • Recursion & Dynamic Programming
  • TopCoder, Kaggle, Project Euler (and other competition sites)
  • Cracking the Coding Interview
  • Worst Interviewer / Interviewee moments
Book of the Show
Tool of the Show

Unix Commands

Shells
  • Bourne
  • C Shell (csh)
  • Korn Shell (ksh)
  • Thompson Shell (tsh)
  • Bash
Common Commands
  • cat
  • sed & awk
  • diff & patch
  • tar
  • gzip
  • crontab
  • bg, jobs, kill
  • ps, history
  • readlink
  • sort & uniq
  • tr, tr -s
  • cut
  • grep (and grep -r)
  • xargs
  • date
Rare But Useful Commands
  • expand
  • fmt
  • column
Quirky Commands
  • cal
  • banner

Wednesday, November 20, 2013

Episode 30: FPGAs


Download

Introduction

Patrick's hiking extravaganza.  Jason's move across town.
News
Book of the Show
Tool of the Show

FPGA

History
  • ROM as a PLD
  • CPLD
  • FPGA
Programming
  • Schematic
  • Hardware Definition Language (VHDL & Verilog)
  • RTL vs Structured
  • Interacting with the processor
    • Serial connection
    • Memory Mapped
Pros
  • Parallelism (i/o)
  • Speed
Cons
  • Relatively Difficult to program
  • Testing can be hard
  • Lack of good tool
  • Expensive tools
Features
  • Embedded Cores
  • Soft Cores
  • Reprogramming on the fly

Wednesday, September 4, 2013

Episode 29: CUDA and OpenCL


Download

Introduction

http://www.origamitessellations.com/
News
Book of the Show
Tool of the Show

CUDA and OpenCL

History
  • GPU: Graphics Processing Unit
    • Vertex: A point in a triangle (poly)
      • Vertex Shader: Transforms properties of a vertex
    • Fragment: A portion of a pixel
      • Fragment Shader: Sets the color & alpha of a pixel for a poly.
    • GPUs are optimized for performing the same operation on many vertices / fragments.
  • GPGPU: General-Purpose Graphics Processing Unit
    • Transform input data to images
    • Turn off any special effects (fog, lighting, etc.)
    • Render exactly one frame
    • Read output data from screen
Common concepts
  • Both CUDA and OpenCL Relieve the developer from having to know about vertex/fragment shaders & graphics processing.
    • Data is organized in n-D arrays
    • Can specify read-only (write-once), write-only (read-never), or read-write.
    • Can copy data to/from GPU with a familiar interface
  • High latency, but can pipeline operations
  • The GPU is organized into warps (groups of threads).  Each thread in a warp must either perform the same operation or do nothing per cycle. (branching is bad)
  • Integer operations are slow, floating point is fast
  • Debugging can be a nightmare (but improving)
CUDA
  • Write .h and .cu files (subset of C)
  • Compile with nvidia compiler, link with your C++ binary.
  • NVIDIA Libraries:
    • cuBLAS (CUDA Basic Linear Algebra Subprograms)
    • cuFFT (CUDA Fast Fourier Transform)
  • Language bindings for many languages (Python, Java, Lua, etc.)
OpenCL
  • A standard (like OpenGL) that has CPU and GPU implementations
  • Easy to debug on the CPU before running on the GPU
  • Not limited to NVIDIA graphics cards (good for distribution)