Friday, November 25, 2016

MIT 6.008.1x - Computational Probability and Inference (edX)

After slogging through the AI class, I thought it would be a good idea to level up my probability skills a little bit.  So I poked around on edX and stumbled on to the Computational Probability and Inference class by MIT.  One thing led to another and I, apparently, accidentally signed up.  Whoops.  But it's all good, I'm going to roll with this one and see where it takes me.

Monday, November 14, 2016

Teaching Agile and Scrum with Legos!

I had the opportunity to act as a "guest instructor" at Array, the brand new code school that just started up this October in Cheyenne.  What an amazing experience! I've been following the development of the school since early on in its inception, but to actually get to interact with the students and with Eric (the dynamic headmaster) in an actual classroom setting was a real treat.


Friday, November 4, 2016

Berkeley CS169 - Software Engineering (Homeworks)

Once again into the breach


In the Summer of 2015 I burned though the UC Berkeley "Software Engineering" lectures, and had every intention of doing all the reading and related course work so I could "claim" it on my pseudo-transcript.  Well, here it is over a year later and I'm finally getting around to finishing it properly.  I like to think I've refined my personal process for documenting my MOOC journey (lol christ I sound like a B-school brochure)... so since I already took notes on all the coursework (see my previous post), I'll just cover the homework assignments here.

Friday, October 21, 2016

Intro to Natural Language Processing (Coursera)

While I had held out hope that Stanford or even Columbia would offer their NLP courses on Coursera again (I didn't find anything related to the subject on edX), it was not to be.  So I signed up for the University of Michigan's introductory offering.  The Stanford lectures (Jurafsky and Manning) and the Columbia lectures (Collins) are available on YouTube, and these assignments from Cairo University are based on this material as well, so there are plenty of additional resources available in the space.  For now I'm going to mostly concentrate on the Michigan material, just to save a bit of my sanity lol. An online version of the draft 3rd ed of Jurafsky and Martins book, Speech and Language Processing, is also available.

Friday, October 7, 2016

Symbol Catalog

I got tired of hunting all over the place looking for the text representation of various symbols (mostly set and logic symbols), so I figured I would put them all in one easy to find place.  The Greek alphabet I got from Wikipedia, the rest I found at rapidtables.com.  I didn't bother with anything that was already on the keyboard (like < and >), and I didn't do anything that requires an image (that's what LibreOffice Math is for...)

Thursday, October 6, 2016

Agile Development - Bertrand Meyer (edX)

Agile - The Good, The Hype, and the Ugly


This six week edX course covers the concepts, principles, practices, myths and misconceptions of Agile project development.  Lectures are done by Bertrand Meyer, and while not required, the recommended text is Meyer's book Agile - The Good, The Hype, and the Ugly.  According to Meyer, the intent of the class is to look at the Agile approach to software development in an objective way, identifying shortcomings and myths of Agile, as well as its strengths and merits.  The graded portion of the class consists of multiple choice quizzes, so all in all it's a very lightweight course.

Friday, September 30, 2016

Myths of Genius, Fear of... everything


I recently found myself struggling with a great deal of anxiety centered around my career as a software developer.  So much so, in fact, that I began to research what it was I was feeling.  I discovered a great deal about the nature of my fears and doubts, and I hope that sharing my circumstances and introspection here might prove just as valuable to readers as my usual technology related posts.

Thursday, September 1, 2016

Microsoft 70-487: Query and manipulate data by using ADO.NET

Exam Objectives

Query and manipulate data by using Connection, DataReader, Command, DataAdapter, DataSet; perform synchronous and asynchronous operations; manage transactions (API)


Quick Overview of Training Materials

Pluralsight:
ADO.NET Fundamentals, ADO.NET by Example

Code Samples:
My ADO.NET Examples on GitHub

Note that the QuestPond video (connection pooling) is basically the exact same video as the section from the ADO.NET Fundamentals Pluralsight course, and the Understanding Disconnected Model video is by the author of the ADO.NET by Example Pluralsight course and covers part of the same material.  I'm thinking you can find all of the material from both of these courses on YouTube if you look...

Thursday, August 11, 2016

Berkeley CS188 - Artificial Intelligence (edX)

Having passed the 70-486 exam, I decided I wanted to try something different before I tackled the last cert test, so I poked around MIT OpenCourseware, Coursera, and edX looking for something interesting.  I decided that it was about time to try the AI class.  MIT and edX both had similar offerings, and I went with edX since it offered the autograded exercises (and I already owned the recommended book).

Artificial Intelligence on edX (Lectures) (AI Homepage)
Artificial Intelligence: A Modern Approach

Supplemental:
Artificial Intelligence on MIT Open Courseware (Course website)
Artificial Intelligence from NPTEL
Machine Learning from University of British Columbia

Saturday, July 16, 2016

Java Multithreading in Google AppEngine

I'm currently working on a security app using Google AppScript.  One bit of functionality the product owner wanted implemented was checking ip addresses against a blacklist.  The original idea was for a self generated blacklist, but before I started implementing that, I wanted to see if there were any blacklists out in the wild that I could leverage.  While there are many blacklists out there (a few of the big ones are on this wikipedia page "Comparison of DNS blacklists"), almost without exception they use a specially formatted DNS query to get results.  This is a huge dealbreaker for a JavaScript app, as there is no way to do a DNS query in AppScript (yeah, node.js does it, but alas, not using node, so...).  So I made the decision to stand up my own Java REST endpoint in AppEngine.

Friday, July 15, 2016

Algorithms Case Study: Dynamic Programming in JavaScript

Several days ago, a civil engineer friend of mine asked me if he could pick my brains.  He'd run into a bit of a problem analyzing a bridge design, and wanted to see if I had any thoughts on how to attack the problem.  So we sat down over Jimmy Johns and he explained his problem to me, and my first impression was that is sounded like a textbook dynamic programming problem.  I told him I would have a look at it, which I finally did today.

Wednesday, July 13, 2016

Setting up a Raspberry Pi 3 (and an Amazon FireTV Stick) as a general purpose media hub

Some months ago, the pc we were using upstairs as a media center took its final, epic dump.  I tried to update Ubuntu from 14.04 to 16.04, and a hard crash midway through made it unbootable.  After struggling for ages with flakey behavior, I decided I'd had enough, so I finally did something I'd been looking for an excuse to do for a while:  I bought a Raspberry Pi.  I got the kit with the case and the cable and the little heat sinks.  I just wanted it to be easy.  And for the most part, it was.


Sunday, May 15, 2016

Microsoft 70-486: Configure authentication

Exam Objectives


Authenticate users; enforce authentication settings; choose between Windows, Forms, and custom authentication; manage user session by using cookies; configure membership providers; create custom membership providers; configure ASP.NET Identity

Quick Overview of Training Materials


How to configure IIS client certificate mapping authentication for IIS7

Saturday, April 23, 2016

Microsoft 70-486: Design and implement claims-based authentication across federated identity stores

Exam Objectives


Implement federated authentication by using Azure Access Control Service; create a custom security token by using Windows Identity Foundation; handle token formats (for example, oAuth, OpenID, Microsoft Account, Google, Twitter, and Facebook) for SAML and SWT tokens

Quick Overview of Training Materials


Exam Ref 70-486: Developing ASP.NET MVC 4 Web Applications - Objective 5.3
MSDN - A Guide to Claims-Based Identity and Access Control (2e)
MSDN - Windows Identity Foundation
MSDN - How to Authenticate with Azure Active Directory Access Control
MSDN - ACS How To's
MSDN - WIF Code Sample Index
Google Identity Platform - OpenID Connect
Federate with Windows Live using OAuth and SAML
Facebook Developer Console
Google Developer Console
Using Windows Azure ACS in MVC 5 Application Using VS 2013
Write a custom security token and handler in WIF
PluralSight - Windows Azure Access Control Service (a bit dated, but not bad)
PluralSight - Claims-based Identity for Windows: The Big Picture (Paid)
PluralSight - Identity and Access Control in ASP.NET 4.5 (Paid)
PluralSight - Introduction to Identity and Access Control in .NET 4.5 (Paid)
Dominik Baier - Claims and Tokens become the standard Model (Video)

Consolidated Code Samples on GitHub

Thursday, April 21, 2016

Where to learn Ruby on Rails

For our developer book club, we chose "Engineering Software as a Service", and are working through the associated MOOC through EdX.  The book focuses on using Agile and TDD to build apps using Ruby on Rails.  Because I'm the book clubs facilitator, I thought it would be a good idea if I knew what the hell I was doing when we met every week, so I set out to learn Ruby and Rails.  These are some of the resources I found and my thoughts on them...

Wednesday, March 30, 2016

Microsoft 70-486: Prevent and troubleshoot runtime issues

Exam Objectives


Troubleshoot performance, security, and errors; implement tracing, logging (including using attributes for logging), and debugging (including IntelliTrace); enforce conditions by using code contracts; enable and configure health monitoring (including Performance Monitor)

Quick Overview of Training Materials


Monday, March 7, 2016

Microsoft 70-486: Design an exception handling strategy

Exam Objectives


Handle exceptions across multiple layers, display custom error pages using global.asax or creating your own HTTPHandler or set web.config attributes, handle first chance exceptions

Quick Overview of Training Materials


Friday, March 4, 2016

How to dismantle a poorly designed registration wall

Mr. SiteOwner... tear down this wall!


Sorry, couldn't resist.  Let's ignore the fact that I was five years old when Ronald Reagan spoke those words.  I hate forced registration.  If your content is free, make it free.  If I want to get your shitty emails, then I'll sign up, but this whole passive-aggressive "you can look if you give me your email address" bullshit just gets on my nerves.

Microsoft 70-486: Reduce network bandwidth

Exam Objectives


Bundle and minify scripts (CSS and JavaScript), compress and decompress data (using gzip/deflate; storage), plan a content delivery network (CDN) strategy (for example, Azure CDN)

Quick Overview of Training Materials



Monday, February 29, 2016

Microsoft 70-486: Debug an Azure application

Exam Objectives


Collect diagnostic information by using Azure Diagnostics API and appropriately implement on demand versus scheduled; choose log types (for example, event logs, performance counters, and crash dumps); debug an Azure application by using IntelliTrace, Remote Desktop Protocol (RDP), and remote debugging; interact directly with remote Azure websites using Server Explorer.

Quick Overview of Training Materials


Cloud Diagnostics - Take Control of Logging and Tracing in Windows Azure

This post has about 4 billion screenshots, so I apologize in advance...

Thursday, February 25, 2016

Using Maven and Google Plugin for Eclipse together in harmony

So, this post is mostly about documenting, for myself, how to get Eclipse and Maven set up correctly for my current project, but I think there might also be some bits of useful wisdom for other devs who might be working with similar circumstances.  The basic, 30k foot look at my problem is something like this:


   I have a Google Web Toolkit (GWT) project that is to run on Google App Engine (GAE).  How do I use Maven to manage dependencies, while still maintaining the functionality that the Google Plugin for Eclipse (GPE) gives me?

Saturday, January 16, 2016

Microsoft 70-486: Test a web application

Exam Objectives


Create and run unit tests (for example, use the Assert class), create mocks; create and run web tests, including using Browser Link; debug a web application in multiple browsers and mobile emulators

Quick Overview of Training Materials


Isolating Code Under Test with Microsoft Fakes
MSDN - Understanding Web Tests
YouTube - Creating Web Test and Load Test using Microsoft Visual Studio