Wednesday, December 26, 2012

Episode 23: Hadoop


Download

News
Tool of the Show
Book of the Show


Hadoop

History
  • Jeff Dean & Sanjay Ghemawat wrote the paper MapReduce
  • Created by Doug Cutting while he was at Yahoo!.
  • Intended to support Lucene (search engine reverse indexing).
  • Facebook announces their hadoop filesystem has grown to 100 petabytes. 
Features
  • HDFS: Hadoop Distributed Filesystem
  • HBase: A distributed, column-oriented database
  • Zookeeper: Distributed coordination service
  • Crunch: Simplified API for creating mapreduce pipelines.

        Strengths
        • Scale-free
        • Fault Tolerant
        • Can add/remove hardware in real-time.
        Weaknesses
        • Long spin up / spin down time.
          • Worker Pools
        • Excessive Serialization/deserialization
        • Excessive Materialization

        Tools
        • Avro: A serialization framework
        • Pig & Hive: querying and storing large datasets

        Uses
        • Storing/Manipulating Big Data.

        Sunday, December 9, 2012

        Episode 22: LaTeX


        Download

        News
        Tool of the Show
        Book of the Show
        LaTeX

        History
        • TeX
          • Created by Donald Knuth
          • Based on 19th century typesetting machines
        • LaTeX
          • Created by Leslie Lamport
          • TeX with many macros

            Features
            • bibtex: bibliography management
              • Most citations have a .bib file for easy import
            • Decouple the content (the source) from the style
              • Turn your paper into a book, book into a webpage, etc.
            • Automatic generation of references, table of contents, bibliography
            • Export to many formats
              • dvi (default)
              • latex2html
              • pdf (using pdflatex)
              • ps
            • Not WYSIWYG, WYSIWYM

                  Tools

                  Uses
                  • Academic writing
                    • Conferences, journals
                  • Writing Textbooks
                  • Resumes, curricula vitae

                  Monday, November 19, 2012

                  Episode 21: Mailbag


                  Download

                  News
                  Questions
                  • Marco from Brazil
                    • How does web crawling work?
                  • Aaron from Alabama
                    • How do I get into computing when no one around me is into it?
                  • Bryan from Detroit, MI
                    • Seeing as how there are no longer any factory jobs in the United States, should school still be set-up the way it is currently, or should school change to follow what occupations people will actually follow?
                  • Joshua from Los Angeles, CA
                    • I am just learning programming (using your recommended 'Learn Python The Hard Way' link). My goal is to integrate Circos into Solus OS as a file-manager. What sort of language should I be learning, after I MASTER python of course, to accomplish that?
                  • Mike from Virginia
                    • Do you know of any free open source methods to sync mobile data between mobile devices (more than 1) and a remote server?
                  • Cory from Texas
                    • What programming language would you recommend for a beginner?
                  • Joey from Alberta, Canada
                    • How can I get into computer science theory?

                  Sunday, October 28, 2012

                  Episode 20: Query Languages


                  Download

                  News
                  Tool of the Biweek

                  Query Languages

                  History
                  • SQL
                    • Used to query databases
                  • SPARQL
                    • Used to query semantic webs

                    Features
                    • Can be interfaced from multiple different systems
                    • Can be Transactional

                        Strengths
                        • Designed to handle large amount of data efficiently

                        Weaknesses
                        • Relational vs Non Relational
                        • Maintenance Costs

                          Tools
                          • SQL Database Engines
                            • SQLite, Mysql, postgresql
                          • NoSQL query languages
                            • HiveQL, CassandraQL
                          • SPARQL Engines
                            • SPARQL Engine (Java)

                          Uses
                          • Web Projects
                            • wordpress, django, phpbb
                          • Semantic Web Analysis
                            • dbpedia (semantic web version of wikipedia)

                          Saturday, September 22, 2012

                          Episode 19: BASIC


                          Download

                          News
                          Tool of the Biweek

                          BASIC

                          History
                          • Created in Dartmouth
                            • Beginner's All-purpose Symbolic Instruction Code (BASIC)
                          • Commodore 64, TRS-80, Apple II booted into an immediate mode basic interpreter
                          • First Generation (Line numbering required)
                          • Second Generation (Quick Basic, Power Basic)
                            • No line numbers
                            • Procedures
                          • Third generation (OO)
                            • Visual Basic
                              • VBScript (ASP, VBA)
                              • VB .NET (compiles to IDL)

                            Features
                            • Explicit program counters
                              • QBASIC added implicit PCs

                                Strengths
                                • Quick to start coding
                                • Approachable syntax

                                Weaknesses
                                • Slow
                                • Not Object Oriented

                                  Tools
                                  • Many free versions of basic interpreters

                                  Uses
                                  • Learning how to program
                                  • Programming TI Calculators

                                  Thursday, September 6, 2012

                                  Episode 18: Go


                                  Download

                                  News
                                  Tool of the Biweek

                                  Go

                                  History

                                  Features
                                  • Goroutines: lightweight threads
                                    • A typical computer can only handle a few hundred regular threads per app.
                                    • Effectively infinite goroutines per app
                                  • Channels: concurrent queues
                                  • Garbage Collection (Safe Pointers)

                                  Strengths
                                  • Fast
                                  • Designed to scale in parallelism easily
                                  • Obfuscates dealing with threads, threadpools, etc.

                                  Weaknesses
                                  • No Generics
                                  • Not yet established
                                  • Few bindings

                                  Tools

                                  Uses
                                  • Systems programming

                                  Friday, August 3, 2012

                                  Episode 17: Java


                                  Download

                                  News
                                  Tool of the Biweek

                                  Java

                                  History
                                  • 1995 “Write Once, Run Anywhere”
                                  • Applets
                                  • 2006 Open Sourced*
                                  • Third Party Virtual Machines


                                  Features
                                  • Generics
                                  • Garbage Collection
                                  • Interfaces (sort of like multiple inheritance)
                                  • Checked Exceptions (except for RuntimeException)

                                  Strengths
                                  • Platform Agnostic
                                  • Large community support
                                  • Many Libraries

                                  Weaknesses
                                  • Speed
                                  • Hardware Abstraction
                                  • Forced object-oriented architecture (not functional)

                                  Tools
                                  • Eclipse
                                  • Netbeans

                                  Uses
                                  • Web
                                    • Server (Tomcat, JSP)
                                    • Client (GWT)
                                  • Android

                                  Wednesday, June 27, 2012

                                  Episode 16: Build Automation


                                  Download

                                  News
                                  Tool of the Biweek

                                  Build Automation

                                  History
                                  • Makefile processors
                                    • make (BSD) / gnumake
                                  • Makefile code generators
                                    • automake / qmake / cmake / premake
                                  • Ant & Maven
                                  • IDE Projects 


                                  Features
                                  • Dependency listing
                                  • Flags for OS & compiler specific features
                                    • Optimizations, threading libraries, etc.
                                  • Conditional logic for different builds
                                    • FFMpeg: build regular or patent-free (no MPEG-4)

                                  Strengths
                                  • Keeping the build process organized
                                  • Calculating transitive closure of dependencies
                                  • Parallelizing & Distributing build commands (http://www.distcc.org)

                                  Weaknesses
                                  • Inherent Complexity
                                  • Obscured errors “Error 1” (various levels of verbosity)
                                  • "Black Magic"

                                  Tools
                                  • GNU Automake
                                  • CMake
                                  • imake
                                  • qmake
                                  • nmake
                                  • Apache Ant
                                  • Apache Maven
                                  • Premake

                                  Uses
                                  • Continuous Integration
                                  • Source-based package management systems (Macports, Gentoo, deb-src)

                                  Tuesday, May 29, 2012

                                  Episode 15: Lua


                                  Download

                                  News
                                  Tool of the Biweek

                                  Lua

                                  History
                                  • Originated in Brazil


                                  Features
                                  • Interpreted (compiled to bytecode on the fly)
                                  • Dynamic typing
                                  • Tables & Meta-Tables

                                  Strengths
                                  • Easy C / C++ Integration
                                    • luabind: http://www.rasterbar.com/products/luabind.html
                                    • Diluculum: http://www.stackedboxes.org/~lmb/diluculum/
                                  • Execution speed

                                  Weaknesses
                                  • Everything based on tables & meta-tables (classes are possible, but clunky)
                                  • Not as fully featured as python or ruby

                                  Tools

                                  Uses
                                  • Video Game Scripting (World of Warcraft)
                                  • LightRoom UI
                                  • Application Scripting

                                  Thursday, April 26, 2012

                                  Episode 14: IDLs


                                  Download

                                  News
                                  Tool of the Biweek

                                  Interface Description Langauges (IDLs)

                                  History
                                  • Beginning
                                    • CORBA
                                    • DCOM
                                    • ICE
                                  • Early Web Era
                                    • SOAP (XML-RPC)
                                    • JSON-RPC
                                  • Modern IDLs
                                    • Protocol Buffers
                                    • Apache Thrift


                                  Features
                                  • Messages
                                    • Container classes with convenience functions
                                  • Protocols
                                    • Binary, JSON, Compact
                                  • Transports
                                    • Memory, File, Http request, socket

                                  Strengths
                                  • Automatic code generation
                                  • Interoperability among languages

                                  Weaknesses
                                  • Engineering Overhead
                                  • Bandwidth overhead

                                  Tools

                                  Uses
                                  • RPC
                                  • Serialization
                                  • Storage (some NoSQL databases)

                                  Monday, April 9, 2012

                                  Episode 13: C++


                                  Download

                                  News
                                  Tool of the Biweek

                                  C++

                                  History
                                  • Developed by Bjarne Stroustrup
                                  • Began as “C With Classes”
                                  • C++-0X


                                  Features
                                  • Virtual functions
                                  • operator overloading
                                  • multiple inheritance
                                  • templates
                                  • exception handling

                                  Strengths
                                  • Very fast
                                  • Object-Oriented paradigm supports huge programs

                                  Weaknesses
                                  • No reflection
                                  • Memory Corruption
                                  • Weak Cross Platform Concurrency

                                  Tools
                                  • Codeblocks
                                  • Eclipse CDT
                                  • Boost

                                  Uses
                                  • Game Programming
                                  • Embedded Computers
                                  • Web Browsers

                                  Tuesday, March 20, 2012

                                  Episode 12: Dart

                                  Download

                                  News

                                  Tool of the Biweek

                                  Dart

                                  History
                                  • Designed to replace javascript
                                  • Evolution of Google Web Toolkit (GWT)
                                  Uses
                                  • Still experimental
                                  • Dartendo (NES Emulator in Dart): http://dartendo.appspot.com

                                  Features
                                  • Runs in browser (currently only chrome)
                                  • Can be compiled to javascript (frog)
                                  • Similar to java
                                    • Class-based
                                    • (Optionally) statically typed.
                                    • Java containers (List, Map, Set)
                                  • Coroutines (light isolate)
                                    • Multiple threads in one process
                                  • Multithreading (heavy isolate)
                                    • Multiple processes



                                    Strengths

                                    • Class-based object oriented paradigm
                                      • Classes, Interfaces,
                                    • Has option for static or dynamic typing


                                    Weaknesses


                                    • Frog compiler is inefficient
                                    • No widespread adoption

                                    Friday, March 9, 2012

                                    Next show airs next week

                                    Hey all,

                                    Unfortunately, Patrick caught a cold this week so we can't record a new episode, but as soon as he recovers we will bring a new language to the table: Dart!

                                    Sunday, February 26, 2012

                                    Episode 11: Lisp

                                    Hey all,

                                    Life got in the way of the podcast for awhile so myself and Patrick had to take a brief hiatus.  This episode was recorded before things got crazy, but I wanted to let everyone know that the podcast is coming back and we will begin recording new episodes in the next couple of weeks.

                                    Download

                                    News
                                    Tool of the Biweek

                                    Lisp

                                    History
                                    • Invented before it was implemented
                                    • Foundational registers
                                      • car (Contents of the Address part of Register number)
                                      • cdr (Contents of the Decrement part of Register number).
                                    • Based on lambda calculus
                                    • Lisp Machines

                                    Uses
                                    • Artificial Intelligence
                                      • Planning
                                      • Expert Systems
                                      • SHRDLU (Natural Language Processing)
                                    • Emacs
                                    • ITA - Backend airline software
                                    • Maxima: Computer Algebra System

                                    Features
                                    • S-Expressions (car cdr)
                                    • “Easy” to implement an interpreter/compiler
                                      • Many dialects



                                    Strengths

                                    • Extremely efficient hashtables
                                    • Easy to parse code & automatically generate code
                                      • Self-modifiable code


                                    Weaknesses


                                    • All those parentheses
                                    • No direct memory access, poor hardware access