CV as Word 2007 or Word 2003.

My blog.

I live in SW11, London.

Contact me.

Peter Mounce, BEng

Education and qualifications

  • Computer Science BEng Honours, University of York, 1998-2002.

  • 4 A-levels, Barton Peveril College, 1996-1998.

    Business Studies (A), Computing (A), Maths & Mechanics (B), Physics (B)

  • 10 GCSEs (7A*, 3A), Toynbee School, 1991-1996 (maths in 1994).

Technical

Languages

C# (1.1 through 3.0, reading about 4.0); Ruby & Python (native and via DLR); some PHP.

Web, front-end

Standards-compliant semantic HTML/CSS; cross-browser JavaScript (primarily jQuery, some Prototype); Silverlight (especially media-related); HTTP fundamentals; RESTful APIs (author and consumer); JSON; SOAP; exposed to Comet/server-push; XML/XSLT; minor Flash/Flex.

Web, server-side

NET framework (v1.1 through v3.5); ASP.NET web-forms; Castle MonoRail; ASP.NET MVC since CTP 5; scaling & performance profiling; high-availability distributed web-applications; exposure to load-testing; some WCF; exposure to LAMP, Ruby on Rails, Django.

Databases

SQL Server 2000-2008; ORMs (NHibernate, LINQ-to-SQL); ADO.NET and stored-procedures; exposure to MySQL & SQLite via LAMP.

Techniques & Practices

TDD (NUnit, MbUnit, XUnit.NET); BDD (XUnit.NET); continuous integration; pair programming; IoC (Castle Windsor); MVC; refactoring to patterns; SOLID principles; OO fundamentals; separation of concerns; component-oriented architecture; not repeating mistakes; automation; process refinement; pragmatism (DRY/YAGNI); legacy code maintenance; impact analysis and change management; in-production debugging. Avid reader of technical and domain-specific blogs; proficient user of google.

Platforms & Servers

Windows Server 2000-2008, some 'nix (Ubuntu, Debian; ran own Linux server for family mail & web for five years); IIS v5-7.5, Apache; Windows Media Services; exposure to Flash Media Server (for interest; have not used in production yet); exposure to DNS, networking/firewalls/load-balancers (F5 and WNLB); Active Directory; Group Policy.

Software & Tools

Visual Studio; ReSharper; TestDriven.NET; subversion + TortoiseSVN; git; TFS; CruiseControl.NET; TeamCity; msbuild/nant/rake; exposure to Capistrano; shell scripting; vi.

Community Involvement

Contributed to TortoiseSVN; Castle Project; Spark view engine; xVal; Rhino Mocks. Maintainer of rake dot-net (see blog). Active participant at ALT.NET un-conferences and Skillsmatter events in London; presenting own sessions from March/April 2009.

Other

WinForms; GDI+ (creating drawing surface); .NET Smart-Client; exposure to WPF; VxWorks; POSIX multi-threading; algorithm simulation; exploratory testing, defect tracking & automation.

Interested to learn

Django/RoR; IronPython/IronRuby; WPF; Flash/Flex & Adobe's Open Screen Initiative; Silverlight v3 (when previews surface); OLAP & data-mining for recommendations-engine development; domain specific languages (implementation and applications thereof); Comet; cloud/grid computing/infrastructure; Erlang; Boo; sharp tools and interesting things in general.

Person

I am a highly motivated software professional with a track record of success, tenacity, and innovation. I have over five years' experience working within the Microsoft platform's software ecosystem, usually with the most cutting-edge libraries and tools on offer.

My ability and capacity for learning is one of my greatest strengths. Next to it are my abilities to apply new technologies and methodologies, my innovative approach to problem-solving, and my infectious enthusiasm. I am highly capable of interfacing with non-technical people, bridging the often-typical communications gap by knowing and empathising with my audience.

I am a passionate and lively individual and take pride in, and satisfaction from, my work; I am seeking fresh, interesting challenges amongst similarly inspired, enthusiastic, and clueful teams, working on ambitious products that have a high potential for changing peoples' lives. Something that matters.

Employment History

Developer for Onalytica; Apr/2009-present

Onalytica is a provider of marketing intelligence by crawling the web to gather data and then crunching it to provide metrics such as influence and buzz. It was funded in November 2008 and has expanded rapidly, jumping from 4 people then to 24 people just under a year later. It uses the .NET platform.

My role at Onalytica is flexible and varied. In the first month I was instrumental in setting up the infrastructure essential for team-development — source control (subversion), a one-click build (rake-dotnet), continuous integration (TeamCity) — and training the rest of the team (five other developers at the time) in their use (as well as the reasons for using them in the first place, and the underlying patterns that result). I also introduced productivity-enhancers like ReSharper. This was largely successful; there has been a marked improvement to the quality of code being produced by the team, with commensurate but hard-to-quantify improvements to ease- time- and risk-of-change.

Later (July 2009), I was used in a business-analyst capacity to extract requirements from the CEO and turn them into user-stories of a sufficient detail that developers could turn them into running code. This was successful at turning business requirements into stories for the team to execute against.

Later still (September 2009), I was given the influencemonitor.com portion of development to lead. The broad-strokes intent includes some architectural changes to accommodate scaling concerns, multi-tenancy, and user-experience. This entailed modelling the business domain, establishing a ubiquitous language (in concert with my colleagues on other portions of the product), component-based design & AOP to separate concerns to keep unit-complexity and cost-of-change down, and assessing 3rd-party component choices to in build-vs-buy decisions. I am obliged to not discuss specifics in a public forum, however.

Lead Developer for Narrowstep; Jul/2006-Mar/2009

Narrowstep is a start-up that provides an internet TV focused whole-product/enterprise-class CMS called telvOS (Television Operating System) as a multi-tenant software-as-a-service. After six months I was promoted from developer to lead developer. telvOS is a six-year-old product built originally in .NET 1.1 and web-forms, then organically added to. It is nearing the end of its useful/supportable life-cycle, yet because it is still in production, must still be maintained and added to. telvOS' web-player application handles around ~100,000 unique viewers per day for ~20 minutes each; Narrowstep streams ~2Gbps with spike capacity for around ~10Gbps through its own CDN.

In 2007 Narrowstep contracted an agile coach to manage projects for about nine months. I eagerly soaked up all he had to offer. I utilise retrospectives, TDD and mocking (and lately, BDD) on my own development work, and have improved its quality (and reduced the wastage) and maintainability as a result. I use XUnit.NET and Rhino Mocks heavily (and am familiar with NUnit, MbUnit, Gallio, and Moq as well as the more-specialised Selenium and WatiN for browser-automation, and JSUnit / QUnit for JavaScript unit-testing (as used by jQuery)), and subscribe to "fail fast during development" as a guiding principle; small feedback loops are easier to adjust. I also responded very well to the iterative delivery style that the coach encouraged; I found it easier to estimate and release higher-quality work to operations. I have since started making (modest!) contributions to some open source projects, including Rhino Mocks.

My proudest achievement at Narrowstep is successfully leading a major effort to re-architect telvOS (while not breaking backwards compatibility for still-running legacy applications - everything uses the same database), to yield video play-out cross-browser (from just IE with WMP ActiveX to IE6/7/8, Firefox, Safari, Chrome and Opera with Silverlight v1, WMP, and Flash via ASX playlists instead of SMIL) and cross-platform (from just Windows to Windows, Mac, and Linux). Tertiary goals were to add play-out security separate from DRM (Silverlight 2's PlayReady was not ready at the time); drastically reduce load-times and improve performance across the board; introduce room for horizontal-scaling; end up with something that is flexible and maintainable. The results:

  • I drastically simplified the web-player application's JavaScript (600Kb of procedural legacy to 250Kb of OO JavaScript allowing per-skin extensibility on the part of the client-side guys) by removing duplication, introducing jQuery, and generally treating JS like a real language. Load-times reduced from 40s to 8s. The project is far more maintainable (as evidenced by our ability to add Flash play-out to it three months later by dropping the Flash media-player into the abstract media-object facade I designed).

  • The new playlist-generator application can render a long playlist in 0.1s compared to 14s, replacing a pair of nightmarishly complex 1,200 line SQL stored procedures (responsible for 40% of the total database load, littered with recursion and gotos) with a stateless chain-of-responsibility based .NET web-application with pluggable renderers (this is before MVC arrived) for ASX (and later JSON) playlists. Later still, a tweaked ASX dialect for Silverlight 2.

  • The new playlist-generator also integrates with a third-party service for viewer- and context-related ad-serving (in-stream, TV-like, instead of just pre/post-roll) called Atlas (used to be Accipiter, bought by Microsoft). This offloads both load and complexity from our product.

  • The new security features (a simple case of applying symmetric encryption and a TTL to the request URLs) cut pirated bandwidth by 90% overnight when it was introduced, saving one client's business model by forcing pirates to pay for the client's content. This also involved writing a Windows Media Services plugin to act as an authentication gateway via a web-service; I later cross-hosted this (it was re-usable, by design, since the Flash project was known about in advance) to IIS to perform the same function for Flash progressive-download publishing. With unit-tests in place, this refactoring was safe and quick to accomplish.

  • I performed front-end optimisation work to further reduce load-times (globbing together JS files into a single minified, gzip'd, cached request per page; offloading static assets to a *-mapped sub-domain served up by another cluster, etc), as well as server- and database-side optimisations (mostly removing obvious things like tight-loops and unnecessary recursion, and less-obvious things like threading resource-contentions and some index tuning).

  • The playlist-generator is a good example of separation-of-concerns and refactoring-to-patterns applied in the real world; it benefited from up-front planning and attention-to-quality, and was delivered in an iterative manner. Four months after the successful v1 deployment, we needed it to render JSON playlists for Flash-video play-out; this was trivial to add as a result of the flexible architecture and high quality design & implementation. Two months later we needed to add a different geo-block-by-IP system; again, easy. Later still, we needed to add "integrate with 3rd-party CDNs like Level3". This ease-of-change was a very satisfying accomplishment for me, especially since it was possible for other developers to dive in and perform some of the feature additions with little need of guidance from me.

Separate to my main development responsibilities, I am also responsible for development infrastructure — I introduced source-control (installation, maintenance and administration, as well as training a team of a dozen people in its use to the point of their using branching and merging as a matter of course for development within feature-branches); I introduced one-click clean-builds and a continuous integration server (CruiseControl.NET, and later TeamCity, running first an msbuild project then later a Ruby rake script). I also support operations' deployments via PowerShell automation (and providing them with cleanly packaged deployments rather than ad-hoc debug-builds) and on-hand assistance where necessary. It is fair to say that I am "the tools guy"; ReSharper was another of my introductions.

I have been used in a technical-sales support capacity on numerous occasions; Narrowstep is not afraid of my promising the world to clients, nor blinding them with techno-babble (except when it wants me to, which has happened too). I am aware of and can communicate effectively to different types of audience; I do not remain buried inside of the IDE, but possess business acumen and market-awareness (both are essential to performing my role well). I soak up domain-specific knowledge like a sponge, as a matter of course, by being naturally curious about ... everything.

I have regularly been involved in in-production debugging sessions in high-pressure, tight deadline situations. Innovation and lateral thinking under stress are absolute requirements here.

I am currently working on a project to provide automated provisioning of a stripped-down telvOS version, telvOS-lite. This involves writing a cross-browser management interface, a set of registration/marketing/evangelism pages (with some trivial AJAX progressive-enhancement to lend a Web 2.0 feel) and payment provider integration with transaction-management and tracking using ASP.NET MVC, on top of the existing database with LINQ-to-SQL.

I am also heavily involved in the requirements analysis, early-stages product-management and initial architecture and design for telvOS' replacement system, Thor. This is following a more agile approach, utilising domain-driven design and test-first development. The ultimate aim is to develop an extensible, flexible, maintainable multi-tenant system with a low cost-to-change that reaches feature-parity with telvOS within nine months, and adds a RESTful API into the mix to enable viral growth and a recommendations-engine to enhance the "stickiness" of our service and therefore revenue-generating potential via attractiveness to advertisers.

MIS Software Developer at WhitbyBird; Oct/2005 — Jul/2006

Whitbybird is a multi-office (500+ people) construction/engineering firm in London. I was responsible for:

  • ongoing development of the internal HR web application HRCentral (C#, ASP.NET web-forms, SQL Server 2000, ADO.NET with stored procedures, jQuery & POSH for the front-end) to reduce overhead and simplify records-keeping.

  • the skills-tracking module of HRCentral — the idea being to allow management to track training requirements, and staff to find help from more-qualified team members as required. This used SQL Server full-text search and some AJAX on top of ASP.NET.

  • introducing SQL Server Reporting Services (rather than write a bespoke reporting solution) to publish regular on-demand reports for management on the take-up of new systems and personnel records in general.

  • successfully migrating several applications from .NET 1.1 to .NET 2, and SQL 2000 to 2005.

At Whitbybird, the developers (all two of us!) followed an agile, iterative approach; we had a regular (but not daily) stand-up and two-week iterations, with a customer/stakeholder on-tap to clarify requirements and user-story questions that arose. We cherry-picked the parts of agile that yielded the most return to us, and got on with it; the team had little oversight as long as we delivered. We delivered small units of functionality regularly, and quite consistently. I set up subversion and CruiseControl.NET here, which helped us implement fail-fast to improve the feedback cycle further.

Software Developer at IML Group Response; Nov/2004 — Jul/2005

IML's main business is electronic voting using a proprietary handset they design and manufacture. I worked on their flagship AGM vote-capture product (with stringent — bank-level — audit requirements) and later some C#/WinForms-based software to ease the burden of handset configuration for non-technical staff, allowing the target-market to widen and reducing training costs. This involved learning .NET's GDI+ library to implement a drawing surface to map a logo-design onto the handset's LCD display and upload it to handset ROM. I wrapped this product in a WiX-generated MSI package for ease of distribution and deployment.

Software Developer at X-RM; Jul/2003 — Nov/2004

X-RM is a web-design/bespoke-software consultancy in Winchester. X-RM was my introduction to "real-life" software development within the Microsoft platform (C#, ASP.NET, SQL Server, POSH); I worked by myself on an in-house product called SetSecure while undergoing regular review and mentoring. SetSecure was a successful product, sold to several customers (and capable of being individually customised) and is used in production to this day. I also worked on maintaining some of the existing websites as needed. I introduced subversion source-control, which enabled collaboration between developers.

Industrial Placement at Siemens Roke Manor Research; Jul/2000 — Sep/2001

Roke is an R&D subsidiary of Siemens specialising in cutting-edge hardware & software for networking, telecoms, sensors and defence. I worked on software to prove out a proposed algorithm for use in a gigabit/second router by multi-threaded simulation — this later formed the basis of my dissertation at York. I also worked on a network driver's exception-handling mechanism for an embedded system inside of a VxWorks environment using C and POSIX.

Open-source, code-samples, freelance, and voluntary

I do a little freelance in my own time, as well as contribute to open-source projects that I have found useful as a way of saying "thanks".

  • You can find code that I have written via http://github.com/petemounce.

  • Modest code/doc contributions to MvcContrib (IncludeHandling), Castle Project, xVal, Spark View Engine, TortoiseSVN, Rhino Mocks. My level of involvement is growing slowly but steadily. Able to effectively contribute to unfamiliar code-bases.

  • Maintainer of rake-dotnet, a (fledgling!) by-convention build-automation-for-.NET-developers library (chiefly, an opinionated-software effort to help eliminate XML-based build-tool friction from my life). See my blog.

  • Static websites; LAM Skin Two Special, Cobra Whips, London Alternative Market, several others. Caution; not work-friendly.

  • E-commerce websites (PHP/Zen Cart & static) for a lingerie boutique (sadly, retired) and a jewellery business.

  • Volunteer QA experience on EVE Online by CCP Games, Iceland. Recruited to their community management team and later QA; later supervised a distributed team of volunteer QA. Collated and prioritised responses and reports during beta test of 10,000 fans, acting as a filter for CCP.

Evidence of life outside software-development

  • Rowing — crew in first VIII at University of York; Henley Royal Qualifiers in 2002.

  • Badminton — team captain at University of York.

  • Skiing/snowboarding whenever I find an excuse.

  • Roller-hockey, climbing, socialising; excellent health through a very active lifestyle.

Other details

  • Full, clean UK driving licence.

  • British nationality with current passport.

  • References available on request.