193 symposiums and 30,000 attendees since 2001

Matthew McCullough

Open Source Architect, Ambient Ideas

Matthew McCullough is an energetic 12 year veteran of enterprise software development, open source education, and co-founder of Ambient Ideas, LLC, a Denver consultancy. Matthew currently is a member of the JCP, reviewer for technology publishers including O'Reilly, author of the DZone Maven RefCard, and President of the Denver Open Source Users Group. His experience includes successful J2EE, SOA, and Web Service implementations for real estate, financial management, and telecommunications firms, and several published open source libraries.

Matthew jumps at opportunities to evangelize and educate teams on the benefits of open source. His current interests are Cloud Computing, Maven, iPhone, Distributed Version Control, and OSS Tools.

Matthew resides in Denver with his beautiful wife and baby daughter, who all are active in nearly every outdoor activity Colorado offers.

Video

Cleaning up Git Directories & Files
Cleaning up Git Directories & Files
Friday - May 15, 2009

Productive Development with iTerm
Productive Development with iTerm
Tuesday - March 17, 2009


Blog

JavaZone 2009 Open Source Debugging Talk

Posted Wednesday, January 27, 2010

Open Source Debugging in Norway My Open Source Debugging talk that I gave at JavaZone, Oslo, Norway last September is online and can be watched in Flash format or downloaded as an M4V file. If you were not able to catch this talk at e more »

AppleScript to Re-Apply Finder Comments

Posted Monday, January 25, 2010

Finder Comments Lost When restoring from a backup, depending on the Mac-specific intelligence of your backup solution, or when copying files written by a 10.4 Mac, your Spotlight (Finder) Comments stored in the .DS_Store files might not more »

What’s the big deal about font choices in presentations?

Posted Tuesday, January 19, 2010

Fonts and Presentations Fonts, fonts, fonts. What’s this obsession? For those of us that share a passion for making presentation materials as comprehensible as possible for our students, sandwiched right between a great story and g more »

Denver JUG Hadoop and Encryption Presentations

Posted Friday, January 15, 2010

Denver JUG January Meeting I had the pleasure of hanging out with about 60 of my local friends at the Denver Java Users Group (DJUG to the locals) on Wednesday night and talking about Encryption on the JVM as well as Hadoop. I had the goo more »

Presenting at the Great Indian Developers Summit

Posted Wednesday, December 9, 2009

I’m very excited to announce I’ve been selected to present at the Great Indian Developers Summit in Bangalore, India in April. I just found out that my NFJS colleagues, Scott Davis and Venkat Subramaniam will be joining me ther more »

My latest DZone RefCard on the Google App Engine has been released

Posted Tuesday, December 8, 2009

I’m excited to announce that my latest RefCard for DZone has been released. In a Q&A session with Lyndsey Clevesy, I discuss the card’s focus on helping developers get started with the Google App Engine for Java. The RefCard more »

Recorded Presentations – The “Lipsync” Pattern

Posted Monday, December 7, 2009

Presentation Recording, The Origins This is a tidbit of insight about my radically revised techniques for assembling complex compelling presentations this year. I’m certain it will create a widely varied set of comments and feedback. E more »

JPS and VisualVM on Windows

Posted Sunday, October 4, 2009

At several stops on the NFJS tour, I’ve been asked about some of the minor issues in running JPS and VisualVM on the Windows platform. The primary problem is that the processes in JPS and VisualVM are listed as: <Unknown Application& more »

Speaking at TSS Europe

Posted Sunday, October 4, 2009

I’m counting down right along with the TSS staff until October 27th where I’ll have the great opportunity to share my OSS Debugging talk with the developers gathered in Prague, Czech Republic. My Denver acquaintance, Tim Berglund w more »

Encrypted SCM Passwords in Maven

Posted Friday, August 28, 2009

A little late night hacking and I was able to get encrypted passwords to work in the Maven SCM plugin with Maven 2.2 based on the prodding of Kurt Tometich, an NFJS attendee, and his JIRA bug# SCM-495. Previously, this encryption feature only w more »

BTrace in VisualVM on the Mac

Posted Tuesday, July 21, 2009

T more »

Java 1.6 Memory Tools on the Mac, Part II

Posted Saturday, July 11, 2009

I more »
Read More Blog Entries »

Presentations

Git Going with Distributed Version Control

Many development shops have made the leap from RCS, Perforce, ClearCase, PVCS, CVS, BitKeeper or SourceSafe to the modern Subversion (SVN) version control system. But why not take the next massive stride in productivity and get on board with Git, a distri more »

Cloud Computing Boot Camp on the Google App Engine

Cloud this, cloud that. It's all we are hearing about these days. And whether buzz-worthy or not, you need to get in-the-know so that you can talk effectively about how this could fit into the application strategy on your next project. more »

Open Source Debugging Tools for Java

This session will survey a wide range of tools across the Java space. We'll look at utilities such as VisualVM, jstatd, jps, jhat, jmap, Eclipse Memory Analyzer, jtracert, btrace and more. Open Source is not just a suite of libraries you consume within more »

Encryption on the JVM: Boot Camp

Does your application transmit customer information? Are there fields of sensitive customer data stored in your DB? Can your application be used on insecure networks? more »

Hadoop: Divide and Conquer Gigantic Datasets (Intro)

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computi more »

Information Alchemy through Remarkable Presentations

Developers are looking for venues to present at these days for the education of the community and betterment of their career. The goal may be to present at a conference, user group, or just a private company. Learn the techniques of the best presenters i more »

Migrating to Maven 3.0

Explore what's new on the cutting edge release of Maven, version 3.0. We'll explore the performance improvements, features that make debugging Maven issues easier, and changes to POMs that may require modifications to your build, but will result in more more »

Hadoop: Divide and Conquer, Workshop

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computin more »

Git Better Control of your Source, Workshop

You've heard about Git, Mercurial, Bazaar and the Distributed Version Control System revolution. In this deeply hands on session, we'll load Git on participants laptops, build repositories and share out pieces of work. We'll explore the optimized agile more »

Mastering Maven 3.0, Workshop

If you are using Maven 2.0 in your build process today, hold on to your hats. Maven 3. more »

Git Advanced

Now that Git has been in the wild for several years, leading edge developers and projects are considering it their primary source code control tool of choice. Distributed version control systems have so much to offer, but are you using Git and its DVCS ca more »

iBeans: The Simplest Service Integrations You've Ever Implemented

No app is an island nowadays and your bleeding edge Java & JavaScript apps demand that you integrate with Facebook, Amazon, Gmail, Google Search, Twitter or S3 just to name a few. Make your next integration project a breeze by leveraging the successfu more »

Encryption on the JVM: Advanced Techniques

Now that you have the basics of encryption under your belt, we'll advance to talking about where it is sensible and performant to add this level of security to your application. Symmetric key and public key encryption have various levels of processing ov more »

Hadoop: Divide and Conquer Gigantic Datasets (Advanced)

With the basics of Hadoop under your belt, we'll dig into the depths of this amazing framework by writing our own reducer in Java and deploying it to the cluster. Next, we'll dig deeper into DSLs like Pig and its log-file processing cousin, Chukwa. Sinc more »

Git Going with Distributed Version Control

close

Matthew McCullough By Matthew McCullough

Many development shops have made the leap from RCS, Perforce, ClearCase, PVCS, CVS, BitKeeper or SourceSafe to the modern Subversion (SVN) version control system. But why not take the next massive stride in productivity and get on board with Git, a distributed version control system (DVCS). Jump ahead of the masses staying on Subversion, and increase your team's productivity, debugging effectiveness, flexibility in cutting releases, and repository redundancy at $0 cost. Understand how distributed version control systems are game-changers and pick up the lingo that will become standard in the next few years.



In this talk, we discuss the team changes that liberate you from the central server, but still conform to the corporate expectation that there's a central master repository. You'll get a cheat sheet for Git, and a trail-map from someone who's actually experienced the Subversion to Git transition.

Lastly, we'll even expose how you can leverage 75% of Git's features against a Subversion repository without ever telling your bosses you are using it. Be forewarned that they may start to wonder why you are so much more effective in your checkins than other members of your team.

Prerequisite: Basic understanding of Subversion or similar version control system


Cloud Computing Boot Camp on the Google App Engine

close

Matthew McCullough By Matthew McCullough

Cloud this, cloud that. It's all we are hearing about these days. And whether buzz-worthy or not, you need to get in-the-know so that you can talk effectively about how this could fit into the application strategy on your next project. Leverage 100s of hours of research distilled into a 90 minute presentation. Get bootstrapped with what cloud computing is and isn't, who the players are in this space, what unique features each offers, and then how Google is completely changing the game.



We'll navigate through a some demos of building and deploying an app live to the Google App Engine, and talk about the excellent tooling that the framework provides. Lastly, we'll put a reality check on cloud computing, and GAE specifically, looking at pitfalls and gotchas. You'll walk away having a thorough knowledge of cloud computing basics and the ability to build a practice app for GAE.


Open Source Debugging Tools for Java

close

Matthew McCullough By Matthew McCullough

This session will survey a wide range of tools across the Java space. We'll look at utilities such as VisualVM, jstatd, jps, jhat, jmap, Eclipse Memory Analyzer, jtracert, btrace and more.

Open Source is not just a suite of libraries you consume within your application, but now reaches into the space of tools to help you troubleshoot and improve your applications. The price of these tools eliminates barriers to their use and their open source nature allows you to mix and match them into compositions that work well for your application's unique debugging needs.



These tools will help you peel away layers of your application to expose bugs and performance ceilings. We'll interactively analyze the heap and garbage collection cycles of both local and remote applications, take snapshots of heap, query the heap for heavy usage, leaks and augment running code without a reboot and without breaking a sweat. After attending, you'll never look at Java debugging the same way again.


Encryption on the JVM: Boot Camp

close

Matthew McCullough By Matthew McCullough

Does your application transmit customer information? Are there fields of sensitive customer data stored in your DB? Can your application be used on insecure networks? If so, you need a working knowledge of encryption and how to leverage Open Source APIs and libraries to make securing your data as easy as possible. Encryption is quickly becoming a developer's new frontier of responsibility in many data-centric applications.



In today's data-sensitive and news-sensationalizing world, don't become the next headline by an inadvertent release of private customer or company data. Secure your persisted, transmitted and in-memory data and learn the terminology you'll need to navigate the ecosystem of symmetric and public/private key encryption.


Hadoop: Divide and Conquer Gigantic Datasets (Intro)

close

Matthew McCullough By Matthew McCullough

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computing resources. But how is a traditional Java developer supposed to easily take advantage of this revolution? The answer is the Apache Hadoop family of projects. Hadoop is a suite of Open Source APIs at the forefront of this grid computing revolution and is considered the absolute gold standard for the divide-and-conquer model of distributed problem crunching. The well-travelled Apache Hadoop framework is curently being leveraged in production by prominent names such as Yahoo, IBM, Amazon, Adobe, AOL, Facebook and Hulu just to name a few.



In this session, you'll start by learning the vocabulary unique to the distributed computing space. Next, we'll discover how to shape a problem and processing to fit the Hadoop MapReduce framework. We'll then examine the incredible auto-replicating, redundant and self-healing HDFS filesystem. Finally, we'll fire up several Hadoop nodes and watch our calculation process get devoured live by our Hadoop cluster. At this talk's conclusion, you'll understand the suite of Hadoop tools and where each one fits in the aim of conquering large data sets.


Information Alchemy through Remarkable Presentations

close

Matthew McCullough By Matthew McCullough

Developers are looking for venues to present at these days for the education of the community and betterment of their career. The goal may be to present at a conference, user group, or just a private company. Learn the techniques of the best presenters in the industry through a dissection of what it takes to efficiently construct an engaging talk that offers solid insights and is memorable for the audience.



This talk provides tips, techniques, examples, and references: In short, a complete boot camp for building presentations that will capture the hearts and minds of an audience. This talk is largely tool-agnostic and you can use these techniques in Apple Keynote, Microsoft PowerPoint, or OpenOffice Impress. Specific points covered include stock photos, mind maps, presentation techniques, topic selection and diagramming.


Migrating to Maven 3.0

close

Matthew McCullough By Matthew McCullough

Explore what's new on the cutting edge release of Maven, version 3.0. We'll explore the performance improvements, features that make debugging Maven issues easier, and changes to POMs that may require modifications to your build, but will result in more determinate build outputs.



Maven 3.0 has undergone major refactorings, and correspondingly, a battery of backwards compatibility tests to ensure a smooth transition from Maven 2.0. These refactorings prepare Maven for the next several years of development, including the separation of the POM file language from from the POM in-memory processor, which is already leading to Groovy, Ruby and YAML based POM file parsers.


Hadoop: Divide and Conquer, Workshop

close

Matthew McCullough By Matthew McCullough

Moore's law has finally hit the wall and CPU speeds have actually decreased in the last few years. The industry is reacting with hardware with an ever-growing number of cores and software that can leverage "grids" of distributed, often commodity, computing resources. But how is a traditional Java developer supposed to easily take advantage of this revolution? The answer is the Apache Hadoop family of projects. Hadoop is a suite of Open Source APIs at the forefront of this grid computing revolution and is considered the absolute gold standard for the divide-and-conquer model of distributed problem crunching. The well-travelled Apache Hadoop framework is curently being leveraged in production by prominent names such as Yahoo, IBM, Amazon, Adobe, AOL, Facebook and Hulu just to name a few.



In this session, you'll start by learning the vocabulary unique to the distributed computing space. Next, we'll discover how to shape a problem and processing to fit the Hadoop MapReduce framework. We'll then examine the incredible auto-replicating, redundant and self-healing HDFS filesystem. Finally, we'll fire up several Hadoop nodes and watch our calculation process get devoured live by our Hadoop grid. At this talk's conclusion, you'll feel equipped to take on any massive data set and processing your employer can throw at you with absolute ease.


Git Better Control of your Source, Workshop

close

Matthew McCullough By Matthew McCullough

You've heard about Git, Mercurial, Bazaar and the Distributed Version Control System revolution. In this deeply hands on session, we'll load Git on participants laptops, build repositories and share out pieces of work. We'll explore the optimized agile workflows that Git facilitates, building branches for each story card and merging with our team mates, even when a network isn't present. We'll clone an existing Subversion repository, work on it in a Git fashion, and push just the "good changes" back to Subversion, showcasing the incredibly polished interoperability of this radical source code control tool.



This will be a hands on session and requires attendees to bring a laptop (Windows, Linux, or Mac).


Mastering Maven 3.0, Workshop

close

Matthew McCullough By Matthew McCullough

If you are using Maven 2.0 in your build process today, hold on to your hats. Maven 3.0 is just around the corner and is already leaps and bounds ahead of its older sibling in terms of stability, performance, and flexibility. Explore the new polyglot POM files (Groovy, Ruby, YAML, and more) and how 10 facets of polish address the most common challenges with Maven. In this hands on session, we'll explore using the make-like features of Maven to optimize partial-tree builds, speed repetitive invocations with the Maven shell and leverage all the benefits of this major new release with real world build-improvement examples.



This is an in-depth coverage of Maven 3.0, and requires basic knowledge of Maven 2.0.


Git Advanced

close

Matthew McCullough By Matthew McCullough

Now that Git has been in the wild for several years, leading edge developers and projects are considering it their primary source code control tool of choice. Distributed version control systems have so much to offer, but are you using Git and its DVCS capabilities to their fullest? This talk assumes a working basic knowledge of Git and, quicly progressing from from there, explores some of the intermediate to advanced uses of this unique version control tool. We'll examine, in a hands on fashion, some of the workflows used by the Git masters in their daily coding routines.



We'll examine setting up tracking branches with the automatic options, as well as through manual editing of the .git/config file. Next, we'll add multiple remotes and perform a trial merge and rebase of a feature contribution by a team mate. Additionally, we 'll explore the ASCII-art visualizations for branch origins and merge status, repository maintenance, running automated test suites with bisect, submodules and searching for where a constant was introduced in history with git-grep. This talk will give you prowess in many of the more powerful commands Git has to offer and leave you with a greater mastery of the Git toolset.

Prerequisite: Git Going with Distributed Version Control, or similar Git working knowledge


iBeans: The Simplest Service Integrations You've Ever Implemented

close

Matthew McCullough By Matthew McCullough

No app is an island nowadays and your bleeding edge Java & JavaScript apps demand that you integrate with Facebook, Amazon, Gmail, Google Search, Twitter or S3 just to name a few. Make your next integration project a breeze by leveraging the successful work of others from the iBeans Central repository, or if necessary, simply author a new iBean and contribute it back for the benefit of all.

iBeans a new ultra-light service integration framework written in Java, but targeting both Java and JavaScript. It provides a centralized mechanism for community contributions of beans to the most commonly used services such as Twitter, Flickr, Gmail and more.



iBeans encourages the higher level programming at the level of integrating such web based services without worrying about the underlying protocols or communication mechanisms. Services are beautifully abstracted in the form of JavaBeans, with JavaScript capabilities added like a cherry on top of a confectionary masterpiece.

This talk wil demonstrate iBeans usage in a real world Java application and explore how easy it is to write and contribute a new bean to iBeans Central for the benefit of the community in true Open Source style.


Encryption on the JVM: Advanced Techniques

close

Matthew McCullough By Matthew McCullough

Now that you have the basics of encryption under your belt, we'll advance to talking about where it is sensible and performant to add this level of security to your application. Symmetric key and public key encryption have various levels of processing overhead, so you can't blindly just use the "best" encryption out there. What about password hashes? Did you know they are vulnerable with our "salt"?



We'll look at the performance metrics, security strength and weaknesses of various encryption algorithms. Given today's global economy, we'll also talk about what strength keys can and cannot be used across national borders. Lastly, we'll look at protocol-wrapping encryption techniques, such as VPNs, as a solution to abstracting away this difficult area of programming into a higher level service or device. We'll end with a brief peek at quantum and elliptic curve encryption.

Prerequisite: Encryption Bootcamp on the JVM


Hadoop: Divide and Conquer Gigantic Datasets (Advanced)

close

Matthew McCullough By Matthew McCullough

With the basics of Hadoop under your belt, we'll dig into the depths of this amazing framework by writing our own reducer in Java and deploying it to the cluster. Next, we'll dig deeper into DSLs like Pig and its log-file processing cousin, Chukwa. Since grid topology is intentionally very opaque in Hadoop, we'll look at the benefits and how to achieve a properly tuned cluster with replication. Specific to HDFS, we'll tune the configurable parameters for storage redundancy and bucket sizes.



In the ultimate use case of using many Hadoop components in harmony, you'll find the need to have a centralized synchronization and coordination framework. Don't build these capabilities on your own though, as you might be tempted to do in a homegrown distributed system. Instead, leverage Hadoop ZooKeeper's ability to store small sub 1MB blocks of data that contain state, naming, and mutex information.

Prerequisite: Hadoop: Divide and Conquer Gigantic Datasets (Intro)



Matthew's NFJS Schedule

Milwaukee, WI
Feb 26 - 28, 2010

Boston, MA
Mar 5 - 7, 2010

Minneapolis, MN
Mar 12 - 14, 2010

Bloomington, IL
Apr 9 - 10, 2010

Reston, VA
Apr 30 - May 2, 2010

St. Louis, MO
May 21 - 23, 2010

Denver, CO
Jun 14 - 17, 2010