Mark is a partner and principal software engineer at Object Computing, Inc. (OCI) in St. Louis, where he provides software engineering and training services. Mark's areas of focus include Java, XML, Web, JavaScript, jQuery, Node.js, and AngularJS application development.
Mark's Mottos
- "The world is full of people that make excuses for why they cannot do things. Don't be one of them." - me
- "Don't be a dabbler. If you're going to do something, do it well." - me
- "Respect the distance. Do the work." - me
- "I hope that I may always desire more than I can accomplish." - Michelangelo
- "The greater danger for most of us lies not in setting our aim too high and falling short, but in setting our aim too low, and achieving our mark." - Michelangelo
- "There is no greater harm than that of time wasted." - Michelangelo
- "Far better it is to dare mighty things, to win glorious triumphs even though checkered by failure ... than to rank with those poor spirits who neither enjoy much nor suffer much, because they live in the gray twilight that knows not victory nor defeat." - Theodore Roosevelt
English - and how I'd change it
Notes on Various Programming Topics
(Feedback is welcomed! Send it to mark at ociweb dot com.)
- Abator- code generator for iBATIS
- Adobe AIR
- ActiveRecord - Ruby persistence framework
- ANTLR 3 - parser generator
- Binary Optimized XML (BOX)
- Clojure programming language
- ECMAScript 6 (ES6)
- Google Web Toolkit (GWT) - Java web app. framework
- IDEA GWT Studio - IDEA plugin for GWT
- Guice- a Java dependency injection framework
- iBATIS- persistence framework
- Java 5 - new features
- Java Logging - logging framework in JDK
- JavaScript
- JFreeChart - creates many kinds of graphs in many output formats
- Joda Time slides
- jQuery
- JRuby slides
- JSLint
- JSLint From Ant
- Java Script Object Notation (JSON) - object serialization format
- Kindle Information
- Log4J - logging framework
- Mandelbrot with HTML5 Canvas
- Node.js - Errata for the book "Smashing Node.js"
- React setState
- Ruby and C slides
- Raspberry Pi
- React setState
- Redux-in-one
- Smalltalk - programming language and development environments
- Software Transactional Memory
- Spring IOC - Inversion of Control framework for Java (STM)
- Spring Transactions - declarative transaction management using java annotations
- tmux in Cygwin
- Vim - vi Improved
- WAX - Writing API for XML
- webOS from Palm
- XStream - serializes Java objects to and from XML
OCI Software Engineering Tech Trends (SETT) and Java News Brief Articles
(ordered from newest to oldest)
- The fish Shell – November 2017
- Flow – JavaScript Type Checker – May 2017
- Web App, Step by Step – April 2017
- ESLint: Don't Write JavaScript Without It! – January 2017
- Comparison of Angular 2 and React – January 2016
- JavaScript Iterators and Generators – October 2015
- gulp 4 – June 2015
- Using ES6 Today! – July 2014
- ES6: Jump in, the Water is Warm! – April 2014
- tmux – January 2013
- Node.js and Socket.IO – October 2012
- Software Transactional Memory (STM) – September 2009
- Clojure – March 2009
- Writing API for XML (WAX) – September 2008
- ANTLR 3 – June 2008
No Fluff Just Stuff Presentations at the Gateway Software Symposium
(ordered from newest to oldest)
- Node.js - the core - April 2012
- jQuery - May 2011
- Clojure - May 2010
- XStream - March 2009
- Writing API for XML (WAX) - March 2009
- ANTLR 3 - March 2008
- Google Web Toolkit - September 2007
- Ruby Plays Well With Others (JRuby and Ruby C Extensions) - March 2007
- Ruby Tools - 2006
- Schematron - 2005
- Groovy - 2004
- JAXB - 2003
St. Louis Angular Lunch (at Oasis Digital)
(ordered from newest to oldest)
- ES6 video - June 2014
- Localization in AngularJS video - June 2014
- Custom Directives video - April 2014
- AngularJS ui-router video - December 2013
St. Louis Java User Group Presentations
(ordered from newest to oldest)
- Node.js - April 2012
- Clojure - May 2009
- Writing API for XML (WAX) - September 2008
- ANTLR 3 - June 2008
- JRuby - May 2007
- Ajax - July 2005
- J2EE 1.4 Web Services - February 2004
- Aspect-Oriented Programming with AspectJ and AspectWerkz - August 2003
- Java Architecture for XML Binding (JAXB) - May 2003
- Axis - September 2002
- Web Services - November 2001
- Ant - March 2001
- eXtensible Markup Language (XML) - January 2000
- Swing JTable - April 1999
- Java Native Interface (JNI) - October 1998
- JDBC - August 1998
- Java RMI - January 1998
- Java Reflection - November 1997
- Java Serialization - October 1997
- AWT Event Model - June 1997
- Java - What's the Excitement About? - May 1997
St. Louis JavaScript Meetup (STLJS) Presentations
(ordered from newest to oldest)
- Using ES6 Today - March 2015
- JavaScript Grievances - November 2013
- Grunt - June 2013
- Strata video - November 2012
- CoffeeScript video - September 2011
St. Louis Ruby User Group Presentations
(ordered from newest to oldest)
- JRuby - March 2007
- Ruby Tools - February 2006
- Distributed Ruby - September 2005
- Ajax and REST with Ruby - May 2005
Other Presentations
(ordered from newest to oldest)
- ECMAScript 6 - Lambda Lounge, June 2014
- AngularJS Testing - Maritz, October 2013
- AngularJS - OCI Tech Lunch, August 2013
- Node.js - CAIT Breakfast, June 2012
- tmux - Terminal Multiplexer - Vim Geeks, November 2012
- CoffeeScript - Lambda Lounge, October 2011
- Immutable Versioned Map - Lambda Lounge, May 2011
- CSS3 and Sass - Strange Loop, September 2011
- JavaScript Does Not Suck and ECMASCript5 - Lambda Lounge, November 2010
- jQuery - RIA Miracle - Strange Loop, October 2010
- Tackling Concurrency with STM - Strange Loop, October 2009
- Clojure and Snake Game code - Lambda Lounge, Map 2009
- Java Garbage Collection - July 2008
- Google Web Toolkit - MasterCard Lunch 'n Learn, May 16, 2007
- CVS - A. G. Edwards
- XML for Technical Writers - Society for Technical Communication - St. Louis, January 23, 2002
- XML - The Solution To Bridging Software Divides? - St. Louis Web Developers' Seminar, Principia, October 2001
- DOM Level 2 and a Glimpse of Level 3 - XML DevCon, New York City, NY, APril 2001
- Ant - XML DevCon, San Jose, CA, November 2000