Friday, December 5, 2014

BoxBlaster: Real time gaming demo with Signalr and Azure


I wanted to do something more interesting than a chat room using Signalr, so in the long standing tradition of going way over the top and biting off more than I can chew, I decided I would build a multiplayer shooter game using Signalr.  Over the long Thanksgiving holiday, much to my wife's chagrin, I stole every free moment to build this demo.  I gotta say I'm pretty happy with the results.
You can check out the latest version of the code on GitHub: github.com/sabotuer99/BoxBlaster.


Tuesday, October 21, 2014

Microsoft 70-486: Design a caching strategy

Exam Objectives


Implement page output caching (performance oriented), implement data caching, implement HTTP caching, implement Azure caching

Quick Overview of Training Materials


Asp.net - Data caching in ASP.Net applications


Monday, September 8, 2014

Microsoft 70-486: Configure state management

Exam Objectives


Choose a state management mechanism (in-process and out of process state management), plan for scalability, use cookies or local storage to maintain state, apply configuration settings in web.config file, implement sessionless state (for example, QueryString)

Quick Overview of Training Materials


MSDN - ASP.NET State Management Overview and Recommendations

Friday, September 5, 2014

ASP.NET MVC Unit Testing Part 4: The Tests and What Was Learned

So, now that the project is refactored with interfaces, I have fake data, and a fake environment, it's time to run some unit tests! Whoohoo!  I'll go over some of the basic tests and also cover what I learned over all throughout the unit testing process.

Thursday, September 4, 2014

ASP.NET MVC Unit Testing Part 3: Faking the Environment (HttpContext)

So I have my fake data, but I also need to address additional dependencies that are not as obvious.  These dependencies arise from the use of User and Request, which are properties of the HttpContext.  Because you apparently can't assign HttpContext directily, you have to create a fake ControllerContext.


ASP.NET MVC Unit Testing Part 2: Faking the Database

Now that the production code is all set up, it's time to create the fakes that I'll inject for my unit tests.  Rather than connecting to the production database, I want my unit tests to use an in memory dataset so they will run lightning fast.  There are limitations to using in memory data (in effect substituting LINQ to Object for LINQ to Entities) which I will address in another post.


ASP.NET MVC Unit Testing Part 1: Set up

So, a little background here first.  I'm pretty new to .NET programming, having only started my first developer job just this past March.  My one and only performance management goal was to implement some unit testing.  Simple right? Well my first feeble attempts involved trying to add unit tests to a traditional ASP.NET program... come to find out unit testing code behind files is a fools errand.  Did manage to test come CRUD on a service class, but all in all it wasn't that useful.  I was also attached to a new development project called Education Assistance (EA around the water cooler) that was using MVC.  I'd read that MVC was much easier to unit test so I figured that would be a possibility at some point.  Of course, first I had to learn a little about MVC.  I worked through a few tutorials, a couple of which actually covered unit testing.  So now I knew just enough to get myself in trouble.

Tuesday, June 3, 2014

Comparing ASP.NET MVC tutorials: OdeToFood, Nerddinner, and MVC Music Store

I worked through three ASP.NET MVC tutorials: NerdDinner, OdeToFood, and MVC Music Store.  All had their pro's and con's, and I definitely learned much from them.  The pluralsight tutorial OdeToFood was, far and away, the best put together tutorial of the bunch, and if you had to pick one, that would be the one to do.  NerdDinner wasn't bad but is showing it's age as it was developed using MVC2 (though I thought I saw something about updates...). The MVC Music Store tutorial also had a lot of interesting stuff but I would have to consider it the weakest of these three tutorials.

Monday, May 19, 2014

Upgraded Lenovo Ideapad Z570 to 16GB Ram

According to Lenovo the Z570 only supports up to 8GB, but after doing a little research I found multiple instances of folks upgrading to 16GB, so I took a leap of faith and tried it with mine. Success! (How-to video on YouTube helped with installation)

I had a bit of a hard time finding a US supplier for the ram sticks. Crucial's helper application stuck with the Lenovo documentation and would only recommend up to 8GB, but this is the EXACT kit that I used:

Crucial 16GB Kit (8GBx2) DDR3 1333 MT/s (PC3-10600) CL9 SODIMM 204-Pin 1.35V/1.5V Notebook Memory Modules CT2CP102464BF1339

[UPDATE 12/28/2017]
Someone pointed out in the comments that this particular model is no longer available (not surprising given the age of this post).  Amazon recommends another kit, CT2KIT102464BF160B, which has the same specs as the memory currently recommended by Crucial for the z570.  I can't say from personal experience how well this memory would perform in practice, but it seems like a safe substitute:

Crucial 16GB Kit (8GBx2) DDR3/DDR3L 1600 MT/S (PC3-12800) Unbuffered SODIMM 204-Pin Memory - CT2KIT102464BF160B
[END UPDATE]

This Lenovo forum had several users also state that they could use 16GB, and was a key factor in my decision to make the leap.

Here is a screenshot of System Monitor (I'm running Fedora on this machine).  I have 6GB allocated to a Win7 VirtualBox VM, which is why the usage is so high.


Google GovDevChallenge Hackathon

Participated in my first ever Hackathon this weekend (5/17/2014), what an experience that was! The idea behind this Hackathon was to give hackers a chance to make government more efficient and transparent. Colorado and Wyoming worked with Google and Galvanize down in Denver to put the event on, and I went down with four other developers from ETS to compete. We didn't win but we learned a lot and booked some serious overtime haha.

Monday, April 21, 2014

MVA Course: Developing ASP.NET MVC 4 Web Applications Jump Start (Modules 3 & 4)

Cover writing controllers and views.  Visual Studio has a lot of tools to help make this very easy. With some practice should be possible to deploy applications very fast with scaffolding and templates and such.


MVA Course: Developing ASP.NET MVC 4 Web Applications Jump Start (Modules 1 & 2)

Basic overview and ASP.NET MVC, with an emphasis on quickly getting into the code. First couple modules were relatively short (30-45 minutes) and easy to follow.


Monday, April 14, 2014

SICP - Storage Allocation and Garbage Collection

Last lecture in the series, talk about garbage collection. Apparently LISP uses a mark and sweep algorithm. Or maybe a related algorithm developed by Minsky in the sixties. Toward the end of the lecture Sussman talks about the halting theorem, basically proving that there is not procedure that can generally check whether or not a given procedure is safe to run. Interesting stuff.


SICP - Register Machines

In this lecture Sussman covers register machines, and we walk through the operation of a couple of very simple programs. We look at an embedded register machine language.

SICP - Compilation

Shorter lecture on the way a compiler for LISP might function.


SICP - Explicit-control Evaluator

This lecture looks at implementing the LISP meta-circular evaluator as a register machine.  Very interesting to see the process actually play itself out and how this looks to the hardware.


Friday, April 11, 2014

SICP - Logic Programming Part 2

In this lecture we took a high level view at implementation, though we didn't actually write the pattern matching or any other LISP code, which I'll admit was dissappointing.  I guess if I want to try this out I'll have to read the appropriate section in the book.


SICP - Logic Programming Part 1

In this lecture we start looking at a Logical Programming language that differs quite a lot from the way we have been programming thus far. This lecture is about looking at the language and seeing how it is used, the next lecture will actually implement the language.


MVA Course: Software Testing with Visual Studio 2012 Jump Start (Modules 4a & 4b)

Manage Test Execution


These modules mostly covered running tests and managing work items.


Thursday, April 10, 2014

MVA Course: Software Testing with Visual Studio 2012 Jump Start (Modules 3a & 3b)

Just getting back into this course after focusing on the 70-480 test.  Steve and Anthony cover creating test steps for a test case, creating action recordings, and using parameters. The parameters are pretty cool since they make it simple to execute multiple test runs using different data.  The shared steps were also interesting, seems they would make tests much more maintainable.

Friday, April 4, 2014

Microsoft Exam 70-480 Study Guide

Other study guides in the wild

Matt Menezes article How I passed 70-480 (includes links to about a half dozen guides, including the two above)

General Study Material and Sites


Microsoft 70-480: Raise and handle an event

Exam Objectives


Handle common events exposed by DOM (OnBlur, OnFocus, OnClick); declare and handle bubbled events; handle an event by using an anonymous function


Quick Overview of Training Materials



Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapters 3 and 6
Developing in HTML5 with JavaScript and CSS3 Jump Start - Module 5
Microsoft.com - Exam 70-480 - suggested link: Coding basic apps
MSDN - Objects and Events
MSDN - Understanding the Event Model
MSDN - Use cases for JavaScript Closures
JavaScript Closures from Jibbering.com
MSDN - Cross-browser event handling using plain ole JavaScript

Microsoft 70-480: Implement exception handling

Exam Objectives


Set and respond to error codes; throw an exception; request for null checks; implement try-catch-finally blocks


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 3
Advanced Windows Store App Development with HTML5 Jump Start - Module 6
How to check for undefined or null variable in javascript - Stackoverflow
JavaScript null check - Stackoverflow

Thursday, April 3, 2014

Tuesday, April 1, 2014

Microsoft 70-480: Implement program flow

Exam Objectives


Iterate across collections and array items; manage program decisions by using switch statements, if/then, and operators; evaluate expressions


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapters 3 and 6
Developing in HTML5 with JavaScript and CSS3 Jump Start - Module 4
MSDN - Controlling Program Flow (JavaScript)
MSDN - JavaScript Statements - if(), switch(), while(), for()
MSDN - forEach Method (Array)
Stackoverflow - JavaScript Collection
MozDN - Statements - for...in, break
Detecting Object Property and Method Support - O'Reilly

Microsoft 70-480: Create and implement objects and methods

Exam Objectives


Implement native objects; create custom objects and custom properties for native objects using prototypes and functions; inherit from an object; implement native methods and create custom methods


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 6
Developing in HTML5 with JavaScript and CSS3 Jump Start - Module 4
MSDN - JavaScript Fundamentals - Sections on functions and objects
MSDN - Prototypes and Prototype Inheritance
MozDN - Introduction to Object-Oriented JavaScript
JavaScript Closures from Jibbering.com
JavaScript Spec - ECMA 262 v.5
MozDN - Standard built-in objects

Thursday, March 27, 2014

Tuesday, March 25, 2014

Microsoft 70-480: Create a flexible content layout

Exam Objectives


Implement a layout using a flexible box model; implement a layout using multi-column; implement a layout using position floating and exclusions; implement a layout using grid alignment; implement a layout using regions, grouping, and nesting


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 4
w3.org - CSS ExclusionsCSS Grid Layout, CSS Regions, CSS Flexible Box Layout

Friday, March 21, 2014

MVA Course: Software Testing with Visual Studio 2012 Jump Start (Modules 1 & 2)

Create and Configure test plans

Pretty heavy on the demos, which was a bummer because I don't have Hyper-v to run the VM and I don't have the permissions yet to start creating a bunch of stuff locally. Eh, here's my notes:

Wednesday, March 19, 2014

Microsoft 70-480: Validate user input by using HTML5 elements

Exam Objectives


Choose the appropriate controls based on requirements; implement HTML input types and content attributes (for example, required) to collect user input


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 7
Developing in HTML5 with JavaScript and CSS3 Jump Start - Module 1 (part 1)
HTML5 specification from w3.org - Specifically Section 4.10 Forms
Dive Into HTML5 - A form of madness
Microsoft.com - Exam 70-480 - suggested link: pattern attribute | pattern property
MSDN - Better web forms with HTML5 Forms

MVA Course: Applying ALM with Visual Studio 2012 Jump Start (Modules 6 & 7)

Well that is a wrap on Applying ALM. Good course overall, a high level overview of a lot of these concepts. I think I would have benefited from taking this course BEFORE I took the admin course...

Monday, March 17, 2014

Saturday, March 15, 2014

Microsoft 70-480: Style HTML text properties

Exam Objectives


Apply styles to text appearance (color, bold, italics); apply styles to text font (WOFF and @font-face, size); apply styles to text alignment, spacing, and indentation; apply styles to text hyphenation; apply styles for a text drop shadow


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 4
MSDN - How to Enhance Your Website's Type Design with CSS3

Thursday, March 13, 2014

Microsoft 70-480: Structure a CSS file by using CSS selectors

Exam Objectives


Reference elements correctly; implement inheritance; override inheritance by using !important; style an element based on pseudo-elements and pseudo-classes (for example, :before, :first-line, :first-letter, :target, :lang, :checked, :first-child)


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 4
Mozilla Dev Net - inheritance, specificity

Monday, March 10, 2014

Saturday, March 8, 2014

Microsoft 70-480: Style HTML box properties


Exam Objectives


Apply styles to alter appearance attributes (size, border and rounding border corners, outline, padding, margin); apply styles to alter graphic effects (transparency, opacity, background image, gradients, shadow, clipping); apply styles to establish and change an element’s position (static, relative, absolute, fixed)


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapter 4

Microsoft 70-480: Find elements by using CSS selectors and jQuery

Exam Objectives


Choose the correct selector to reference an element; define element, style, and attribute selectors; find elements by using pseudo-elements and pseudo-classes (for example, :before, :first-line, :first-letter, :target, :lang, :checked, :first-child)


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapters 4 and 6

Friday, March 7, 2014

MVA Course: Administering TFS 2012 Jump Start (Modules 3a & 3b)

Managing Team Foundation Server


These two modules cover managing collections, backup and recovery, lab management, and security.
Below are my notes, which again are basically just the text from the slides with added annotations:

MVA Course: Administering TFS 2012 Jump Start (Modules 1 & 2)

Install and Configure Team Foundation Server

The first two modules of this course cover installing and configuring TFS. It covers installation prerequisites, including OS and SQL Server requirements. They talk about how services should be configured. I took plenty of notes, the bulk of which are verbatim off the slides (which works because they did a lot of reading right off the slides.

Thursday, March 6, 2014

Friday, February 28, 2014

Microsoft 70-480: Implement HTML5 APIs

Exam Objectives


Implement storage APIs, AppCache API, and Geolocation API


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapters 14, 15, 16*
MSDN Application Cache API ("AppCache")
MSDN Storage API blog - specific to Windows Apps, not too useful...
MSDN Storage and State reference
MSDN - Quickstart: detecting location using HTML5

*the chart in the back of the book includes Chapter 10, which covers the WebSockets API. However, another set of objectives covers WebSockets, so Chapter 10 really belongs there.

Friday, February 21, 2014

Microsoft 70-480: Create the Document Structure

Exam Objectives


Structure the UI by using semantic markup, including for search engines and screen readers (Section, Article, Nav, Header, Footer, and Aside); create a layout container in HTML


Quick Overview of Training Materials


Programming in HTML5 with JavaScript and CSS3 - Training Guide - Chapters 2 and 5
Developing in HTML5 with JavaScript and CSS3 Jump Start - Module 1 (part 1)
MSDN Articles on HTML5 - Specifically Learn HTML5 in 5 Minutes!
Element list from w3.org - HTML4
Attributes list from w3.org - HTML4
HTML5 specification from w3.org
Dive Into HTML5 - What does it all mean?
Microsoft.com - Exam 70-480 - suggested link: Get started using HTML5 - includes instructions on creating a webpage using WebMatrix
Convert a Warm, Cheerful Web Design to HTML and CSS - much broader than just this topic but an excellent tutorial to get your feet wet

Thursday, February 20, 2014

SICP - Metacircular Evaluator Part 2

Just like the last lecture, this one was a head scratcher for me. I'm going to have to break down and read the appropriate chapters in the book for this to make any sense. My notes are mostly just copying the overheads, most of the theoretical stuff was pretty lost on me. I'm going to keep muscling through for now in the hopes that just being exposed to it will allow me to put the peices together later on down the road.

SICP - Metacircular Evaluator Part 1

I had a real hard time following this lecture, I'm not even gonna lie.  Here are my notes:

Friday, February 14, 2014

SICP - Streams Part 2

I don't know if it was the material or just lack of sleep but this lecture whipped my ass. Though I must admit seeing the "infinite streams" in action made me very curious, it might be time to drop the lisp from the last two lectures into the Scheme interpreter and play around a bit. [hour of frustration later] ... ok the fact that apparently the MIT/GNU Scheme interpreter doesn't work the way Edwin working in 1986 is causing me a huge amount of headache, so I'll revisit it another day...

SICP - Streams Part 1

This was an interesting lecture.  More and more I find myself at a loss to come up with a good post-lecture summary for the top of these blogs, probably because like any programmer I hate needless repetition and everything about the video that matters is alread in my notes. So here ya go:

Thursday, February 13, 2014

Installing Windows 8.1 and Visual Studio 2013 in VirtualBox

I've been annoyed at the fact that I haven't been able to follow along the examples in the MVA courses and other tutorials that deal with writing HTML5 and Javascript in VS because you need to have Windows 8 to develop in those languages (Windows Store Apps). So I finally got around to downloading Windows 8.1 Pro and VS 2013 Ultimate from Dreamspark. Fortunately for me, the Harbert School of Business is a Microsoft Alliance partner (or whatever), so they were free. Whoohoo.  I've installed plenty of operating system in VirtualBox before, so I was hoping this would be an easy process (and a beautifully brief post), but alas, it was much more interesting (read frustrating) than I'd have cared for.

Wednesday, February 12, 2014

SICP - Computational Objects

This lecture used digital circuits as the primary example, and went over a lot of LISP code. As part of building the primitives for an embedded language in LISP for describing these circuits, we did some interesting things with assignments and creating lists for agendas and queues.  Indirectly touches on the subject of pointers and reference variables. I took a few screen shots this time to capture some of the diagrams.

SICP - Assignment, State, and Side Effects

This lecture is done by Jay Sussman and he really seems to dislike assignment. It muddles up all this very pretty functional code.  It's a bit of an anachronism that he talks about Fortran, BASIC and Pascal, though the setting is half the charm here. Mullet about made my head explode again, oy vey.  Overall a very valuable look at some fundamental programming concepts like variable scope and environments. He didn't talk about side effects directly but it did make me think of a word... what was it [navigates to Google...] idempotence, thank you Wikipedia. 

Monday, February 10, 2014

MVA Course Advanced Windows Store App Development with HTML5 Jump Start Part 3

This is the last two modules of this MVA course. I didn't take notes as copious as I did with Module 4 so I figured it wouldn't be a big deal to combine them.  The certificate of completion is pretty farcical for this course considering there wasn't a single test. I actually showed 100% progress before I even watched the third lecture. Oh well...

MVA Course Advanced Windows Store App Development with HTML5 Jump Start Part 2

I finally figured out that I would be able to take much more meaningful notes if I took them as I watched the lectures, much as I do with the MIT OCW stuff. As a result the notes for Module 4 of this class are much long and I felt they deserved their own post.  About half the module was spent on promises, I'm not sure they meant to go so long on it but the second half of the lecture was much quicker.

Here is the note dump:

Friday, February 7, 2014

MVA Course Advanced Windows Store App Development with HTML5 Jump Start Part 1

I worked through the first three modules of this course, which is focused on certain features of developing Windows 8 apps.  These features aren't all necessarily Windows 8 specific, but that was the focus of the course so far.

Thursday, February 6, 2014

SICP - Generic Operators

This lecture was ostensibly about generic operators, though much of the lecture ACTUALLY dealt with typing.  I took a TON of notes this time around because the lecture was nearly an hour and a half long. I'm really starting to get annoyed with Mr. Stache-Mullet, he sometimes asks good questions but more often than not he gets hung up on stupid crap.

SICP - Pattern matching and rule based substitution

I'll have to admit this lecture was harder to follow, though I think I did a better job following along than the mustache guy who spent five minutes beating the same question to death.

Wednesday, February 5, 2014

SICP - Symbolic differentiation and quotation in LISP

This lecture looks at producing derivatives using algebraic notation and calculus rules rather than the numeric estimation we looked at in an earlier lecture.  One interesting point made was that LISP expressions actually exhibit a list structure.

This was a shorter lecture (45min instead of the usual 75min), so the notes are a bit shorter:

SICP - Lists in LISP and the Henderson Escher functional geometry language

Today's lecture built on some of the concepts we already learned regarding combinations, introducing the concept of lists in LISP.  About half the lecture dealt with a language implemented in LISP that describes Escher like tiling pictures.  It was an interesting segment but because I can't really reproduce the graphics I didn't take very thorough notes on it.  The University of Oxford Computing lab has an exercise on their website that looks at the same Escher fish tiling problem in their own language called GeomLab. It doesn't appear to be implemented in LISP, but it does follow the same principles discussed in today's lecture. An example of the complete "Functional Geometry" language developed by Henderson implemented in LISP can be seen here.

Monday, February 3, 2014

SICP - Compound Data and Data Abstraction

Due to ongoing technical issues with my work computer, I'm shifted gears from .NET and back to the MIT lecture series. Today's lecture dealt with data abstraction.  I found this to be an interesting lecture, particularly the discussion of constructors and selectors. I couldn't help but mentally connect it constructors and properties in a .NET context.  Some more LISP today though I didn't get a chance to try and run it as I haven't installed the LISP interpreter on my laptop, and I am not in the mood to deal with installing it in linux. If I still don't have my PC back from IT tomorrow I might think about installing it.

How to implement Depth First Search algorithm for maze generation

In my post last week about the Microsoft maze game tutorial I touched briefly on the method I used to generate the maze, but I didn't go into a lot of detail. Mostly I just thought the whole thing was way too cool to necessitate an in depth look. But on further consideration I thought I could be pretty fun to explain exactly what the program is doing.

Thursday, January 30, 2014

MVA Course "Developing in HTML5 with JavaScript and CSS3 Jump Start"

This is the first time I've worked through one of the courses offered by Microsoft Virtual Academy. In the interest of targeting my efforts toward the specific job I want, I've decided to go after the MCSD: Web Applications certification, which consists of three tests: 70-480 "Programming in HTML5 with JavaScript and CSS3", 70-486 "Developing ASP.NET MVC 4 Web Applications", and 70-487 "Developing Windows Azure and Web Services". This first course is targeted at 480, and is a pretty basic overview of HTML, CSS, and JavaScript, though I did learn a couple new things. The last module dealt with "Promises" which was a completely new concept for me. I'd seen asynchronous functionality in JavaScript before but this was a pretty interesting new take on it, definitely worth some additional follow up. Overall it was a pretty easy 6ish hour course.

Friday, January 24, 2014

SICP - Higher order procedures

After a brief break to go play in Visual Studio I'm back at it with the MIT lectures. This one looked at passing and returning procedures from other procedures.  Talked about the square root procedure again, how it is really just a fixed point for a function. Then we looked at Newton's method and built up a rather elaborate program for computing square root based on derivatives. Fun stuff.

Taking the MSDN maze tutorial up a notch

I thought I had finished all that MSDN had to offer as far as C# tutorials go, but I stumbled across this maze tutorial and figured I might as well work through it for completion sake.  Started out pretty simple, much like the others. The we got to the part where we are building the maze... and he's manually laying out labels as blocks. Are you kidding me?

Thursday, January 23, 2014

My Introduction to Windows Forms Applications with MSDN Tutorials

Up until a week or so ago, I'd never tried to program a Windows forms application. I had, in fact, never used a graphic programming system at all, instead opting for the comfort of text editors, with all their pretty code highlighting, syntax checking, code completion, and snippets.  Intellisense and I are starting to get real friendly. But I realized it was time for me to venture out of my comfort zone, so when I found these tutorials on the MSDN site, I was salivating at the chance to work through them. And work through them I did. These were pretty basic little tutorials, but definitely a good way to get one's feet wet.

Wednesday, January 22, 2014

SICP - Procedures, Processes, and the Substitution Model

I was skeptical about learning in LISP, but after reading Paul Graham's letter regarding the use of LISP in his start up Viaweb, I was intrigued. So I'll muddle through this lecture series and see what I learn about LISP, and about computing fundamentals.  Covered a couple interesting topics today, including the substitution model, and covered some real basic concepts related to time and space complexity.  I had been thinking that I might want to learn more about recursion and it seems like I'm going to get the opportunity in this class.

Introductory Comp Sci class 1986 Style...

Wow, I didn't realize that this series from MIT was recorded in the stone age. I'm going to stick with it for now, partially out of morbid curiosity and partially because I figure maybe if I'm using a more basic tool set I can focus more on the concepts and not get so distracted by the gadgetry.  On the flip side, the chances of me ever using LISP for anything are basically NIL. For now I'll take a wait and see approach.  I think the format I'm going to use for these lecture video posts is to post a few thoughts and then dump my notes.

Couple notes on the use of MIT/GNU Scheme: Ctrl+x then Ctrl+e to evaluate a line of code in the interpreter... had a hell of a time finding that in the documentation.  Also, if you want decimals, put a period at the end of a number. Notice the difference here:

Tuesday, January 21, 2014

Starting out with MIT's "Structure and Interpretation of Computer Programs"

Despite the fact that during my most recent interview they basically told me that fundamentals of computer science like data structures, algorithms, and design patterns don't really matter because .NET takes care of all that in the background, I really want to learn the fundamentals. Even if I never use them.

So I don't know where I first saw a reference to this course. It was some blog or comment thread somewhere on the internet that I stumbled upon while looking for preparation materials for this job interview. But I was fascinated by it.  I've known about MIT OCW forever, but I never really took the time to work through a class. Probably had something to do with the fact that I was IN school already and had my own homework and such to worry about. Well now that I am freed from the confines of formal education (HA I did everything online, who am I kidding?) I can finally buckle down and go through some of these courses.

So, first up is Structure and Interpretation of Computer Programs.  Luckily the book is freely available from another university in France. Go figure. The class uses a version of LISP called Scheme so I'll need a compiler.  Fortunately, MIT/GNU Scheme is free. I like free, free is good.

So, why yet another technology blog...?

I realized fourteen years too late that, yes, I really should just tough it out and stick with the computer science degree, because computer programming is awesome.  I've managed, through the years, to interject little bits and pieces of it into my everyday working life though the use of VBA in Excel, or maybe a clever console script, but never anything terribly earth shattering.  As I finished my master's degree I was left with the realization that I'd racked up over $90,000 in student loans getting educated in fields I was only ephemerally interested in.  Oops. So now, rather than spend god-only-knows how much more time and money getting YET ANOTHER degree, I'm going guerrilla style. I'm going to acquire the same knowledge that a typical Computer Science major would acquire, and I'm going to do it for free. Gratis. Yup, I'm fo shizzo.

So how in the hell am I going to get a free Computer Science degree? Hold up there pard, I didn't say anything about a degree. I said I was getting the same knowledge. Degree != education, and vise versa. Enter the magic of the internet, and Open Course Ware.  What I plan to make a key building block of my own ambitious education website, I will first leverage to get myself a job as a programmer (hopefully), or if by some miracle I get the programmer job I just applied for, it'll just make me a more competent programmer.  The fact of the matter is that the College Degree is merely a proxy, a token, meant to convey the idea that "Yes, this person knows subject xyz".  But it seems more and more that the token has been corrupted.  The value, the bang for your buck, just isn't there anymore.

So what does that have to do with this blog? I'm writing my own ticket. The goal of this blog is simple: Document my education. I won't have a degree but I WILL have proof that I fulfilled all the same requirements. Every lecture I watch will get a blog post. Maybe you'll find these posts entertaining and enlightening, in which case I'm happy for you. If not, well they really aren't for you anyway. They are for me and, with a little luck, my future hiring managers. So wish me luck.