Wednesday, June 10, 2015

CBTNuggets App Engine series

As part of my quest to become a cloud developer extraordinaire, I've been trying a number of different learning resources for Google App Engine.  I had a pretty positive experience with the Udacity offering.  The CBTNuggets series on GAE, however, I found a bit disappointing.  Whereas Udacity aims to cover GAE in about a week, the CBT course is about 8 hours.  Though really it's more like 5 hours because the demos are all done twice, once in Python and once in Java.

Monday, June 8, 2015

Berkeley CS169 - Software Engineering (Lecture Notes)

Recently finished up all the lectures for the Berkeley Webcast of CS 169 - Software Engineering.  This course focuses on building Software as a Service (SaaS) applications in Ruby on Rails.  Although I don't anticipate the need to know a lot of RoR for work, the concepts discussed in the course were extremely valuable and I would definitely recommend them to anyone looking to learn about professional software development.  Some key topics of interest:
  • Agile project development
  • Testing and refactoring
  • Design patterns
  • CI and deployment
These are my notes on the lectures, which are really more like a detailed table of contents so that I could easily reference the lectures if I wanted to revisit a topic.  I figure the course website has all the slides and reference to the book, so recreating that content seemed a bit silly...

Friday, May 22, 2015

Berkeley CS61B - Data structures

I hadn't ventured into the open courseware realm for a while, and I've wanted to get a bit of formal education on data structures and algorithms for a while, so I finally took the plunge a couple weeks ago and started 61B.  For quick reference, here are the relevant locations:

Course Website
Course Lectures
Big O Cheatsheet
Wikipeadia articles on data structures.

Wednesday, May 20, 2015

Experimenting with Jenkins, ReviewBoard, and Redmine on Azure

As the developers at work finished up the last loose ends on the Programming Standards we were tasked with creating at work, one of the last things we talked about was how to enforce the standards.  This led to a discussion of code reviews, and I went down the rabbit hole, going so far as to read SmartBear's free 150 page ebook on the subject.  I thought it was a great approach but it seemed that in order to really get the most out of it, you needed a tool.  I wanted to play around with something, so I began looking into what was available for free, and ended up going down a bit of a different rabbit hole: continuous integration.  I wanted to see how Jenkins, ReviewBoard, and Redmine could work together to act as a suite of tools for agile development.  So I spun up some Ubuntu 14.04 instances on my Azure account, and away I went...

Udacity Course: Developing Scalable Apps in Java

My new position focuses on cloud development, with an emphasis on Google App Engine.  I wanted to get up and running quickly, so I worked through this course from Udacity.  Prior to this course, I'd only worked on one other App Engine project, which was basically an expansion on the Google Backend API Walkthrough.  I'd previously used the Google Plugin for Eclipse, however this project uses the App Engine maven plugin, so that was different.  Overall I thought it was a good course.  Naturally, nothing involving Eclipse can go smoothly the first time, but after a couple hiccups, I was off and running.

Monday, April 27, 2015

Microsoft 70-486: Design and implement MVC controllers and actions

Exam Objectives


Apply authorization attributes, global filters, and authentication filters; specify an override filter; implement action behaviors; implement action results; implement model binding

Quick Overview of Training Materials


New Filter Overrides feature in ASP.NET MVC 5 and ASP.NET Web API 2
MSDN Controllers and Action Methods in ASP.NET MVC Applications
MSDN Filtering in ASP.NET MVC

Wednesday, March 25, 2015

Microsoft 70-486: Plan for search engine optimization and accessibility

Exam Objectives


Use analytical tools to parse HTML, view and evaluate conceptual structure by using plugs-in for browsers, write semantic markup (HTML5 and ARIA) for accessibility (for example, screen readers)

Quick Overview of Training Materials


Saturday, March 7, 2015

Fun with ciphers and generated text with JavaScript

Many moons ago, on a day I had very little else to do, I had this silly notion to create a Google Spreadsheet that would generate a line of text "mad-lib" style.  I'd already created a "team name" generator that basically just picked an adjective and a noun and put them together, which made for some rather amusing results, such as "The Pensive Tangerines", "The Drunk Stumpies", and "The Kindly Rippers".

Friday, March 6, 2015

AppEngine, Eclipse, Google API's ... and grey hairs

This is another straight forward "lessons learned" kind of post.  The last week I've been working on a side project at work for the "Innovation" team.  We're tasked with creating a paperless timecard system for the agency, and I've taken on the piece that interfaces with the Google APIs to save the timecards.

Wednesday, January 28, 2015

Microsoft 70-486: Plan an adaptive UI layout

Exam Objectives


Plan for running applications in browsers on multiple devices (screen resolution, CSS, HTML), plan for mobile web applications

Quick Overview of Training Materials


Sunday, January 18, 2015

Thursday, January 15, 2015

Fun with Coordinates: A story about using JavaScript to do things the hard way.

Went to a training class this morning on using Google's MyMaps.  Interesting enough, though I don't see myself ever really using it.  For the uninitiated, this application lets you upload a spreadsheet of locations with a bunch of metadata, and you can manipulate the visualization.  Well, the map pointers are placed based on either an address or a lat and long.  The presenter noted that she wasn't sure if you could use UTM or State Planar Coordinate System coordinates.  Because I had pretty much exhausted my interest in playing with the MyMaps interface in about 10 minutes, I took it as a challenge to obtain and test a UTM data set.  I did a search for an available dataset but didn't find anything useful, however I had at my disposal a Google Sheets spreadsheet that had the Wyoming zip codes with latitudes and longitudes (basically a truncated version of this file). "So I'll just convert the ones I have, easy..." BWAHAHAHA ok, we'll get to what that was about.

Wednesday, January 14, 2015

Microsoft 70-486: Design and implement UI behavior

Exam Objectives


Implement client validation, use JavaScript and the DOM to control application behavior, extend objects by using prototypal inheritance, use AJAX to make partial page updates, implement the UI by using JQuery

Quick Overview of Training Materials


Exam Ref 70-486: Developing ASP.NET MVC 4 Web Applications - Objective 2.2
Programming ASP.NET MVC 4 (OReilly) - Chapters 3 (Data Annotation, 4 (Client Programming) and 6 (AJAX)
Professional ASP.NET MVC 5 (WROX) - Chapters 6 (Data Annotation) and 8 (AJAX)


Previous blogs relevant to objective:

Thursday, January 8, 2015

Microsoft 70-486: Apply the user interface design for a web application

Exam Objectives


Create and apply styles by using CSS, structure and lay out the user interface by using HTML, implement dynamic page content based on a design

Quick Overview of Training Materials


Friday, January 2, 2015

Microsoft 70-486: Implement a secure site with ASP.NET

Exam Objectives


Secure communication by applying SSL certificates; salt and hash passwords for storage; use HTML encoding to prevent cross-site scripting attacks (ANTI-XSS Library); implement deferred validation and handle unvalidated requests, for example, form, querystring, and URL; prevent SQL injection attacks by parameterizing queries; prevent cross-site request forgeries (XSRF)

Quick Overview of Training Materials


Hashing Passwords using ASP.NET's Crypto Class - MSDN Crypto Class 
Password management made easy in ASP.NET with the Crypto API
MSDN - Differences Between AntiXss.HtmlEncode and HttpUtility.HtmlEncode
owasp.org - ASP.NET Request Validation

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