Web Development with Mark Volkmann

Object Computing Partner and Principal Software Engineer, Mark Volkmann, leads our web development practice and contributes his expertise to a variety of projects and client engagements.

Meet Mark Volkmann

Mark Volkmann is a partner at Object Computing, Inc. (OCI) in St. Louis, Missouri, where he has provided software consulting and training since 1996. As a consultant, Mark has assisted many companies with JavaScript, Node.js, React, AngularJS, and Java application development.

Mark has created and taught many courses on topics including React, Vue, AngularJS, Node.js, jQuery, JavaScript, HTML5, CSS3, Ruby, Java, and XML.

He is a frequent presenter at St. Louis area user groups and has written for XML Journal and the No Fluff Just Stuff magazine. He has also presented at the MidwestJS, Jfokus, Strange Loop, NDC Oslo, No Fluff Just Stuff, and XML DevCon conferences.

Books by Mark Volkmann

Svelte and Sapper in Action

Imagine web apps with fast browser load times that also offer amazing developer productivity and require less code to create. That’s what Svelte and Sapper deliver!

Svelte and Sapper in Action is a comprehensive guide to building web apps with these two powerful technologies. 

Articles by Mark Volkmann

  • Billed as a "powerful programming language that is also easy to learn," Swift is an open source language developed by Apple to replace Objective-C. Although created by Apple and optimized for Apple's operating systems, Swift also supports Linux, Windows, and Android.

    In this article, Mark Volkmann provides a detailed summary of Swift's key features, as well as an educated evaluation of the language's advantages and drawbacks.

    More

  • Whether you are fairly new to web development or you've been practicing for a while, it's always exciting to come across a shortcut or a tip for simplifying your code that you hadn't been aware of before. In this article, you'll find a variety of suggestions that will help you improve your craft and your productivity.

    This collection of web development tips assumes that you already know HTML, CSS, and JavaScript to some extent, but perhaps you've forgotten or never seen some of the tips shared here. With numerous interactive examples and code blocks you can copy, paste, and experiment with, this article provides web developers a wealth of valuable tips to use in future projects.

    More

  • Look at any list of popular or in-demand programming languages today, and you're likely to find Python and JavaScript in the top five. Whether you think this ranking is well-deserved or a travesty, you can't deny that your value and flexibility as a developer and a team member stand a good chance of increasing if you add Python and JavaScript skills to your technical toolbox.

    In this article, Mark Volkmann provides a detailed comparison of the most commonly used features of Python and JavaScript to help developers recognize similarities, convert syntax rules, and understand how to best take advantage of the unique features of each language.

    More

  • D3.js is a JavaScript library that renders and re-renders HTML elements (including svg) as graphic elements in a web browser based upon data and changes to that data, allowing you to build dynamic bar charts, pie charts, line charts, scatter plots, geographic maps, and other data visualizations.

    In this article, Mark Volkmann introduces you to D3 and provides a simple tutorial outlining each step required to build an entire bar chart from scratch.

    More

  • TypeScript, an open source superset of the JavaScript language, is a valuable tool that allows developers to add types to JavaScript code. TypeScript provides a number of benefits, including catching errors at compile-time, making refactoring less error-prone, and eliminating the need for some tests, among others.

    In this article, Mark Volkmann presents a brief tutorial covering the most useful features of TypeScript, so you can get started using it right away.

    More

  • sed is a Unix text processing utility. The name is short for "stream editor." Like other filters in the Unix paradigm, the input to sed is a stream of text, and the output is an edited version of that text. While most developers don't need a stream editor on a daily basis, sed is a great tool for your automated text manipulation toolbox.

    Memorizing all the capabilities and syntax details of sed can be a daunting task. But after reading this article, you will know enough to recognize when using sed is appropriate, and you'll be familiar with the features of sed that are used most often in practice.

    More

  • Svelte is an alternative to web frameworks like React, Vue, and Angular. Like its counterparts, Svelte can be used to build entire web apps. It can also be used to create custom elements that can be used in existing web apps implemented with other frameworks. Svelte makes many tasks easier, including defining components, managing component state, managing application state, and adding animation.

    In this article, Mark Volkmann provides a thorough introduction to Svelte and walks you through the fundamentals necessary to start building web applications with it.

    More

  • Historically, the tools available to front-end developers for creating aesthetically pleasing dialogs have been woefully inadequate.

    Enter the HTML <dialog> element. The addition of the <dialog> element to HTML 5.2 opens up a wide range of possibilities. In this article, Mark Volkmann walks you through a series of simple tutorials, first using the <dialog> element solely with JavaScript, then in a React and a Vue application.

    More

  • Go is an open-source programming language that runs on Unix-based operating systems (including Linux and macOS) and Windows. The language is particularly easy to read and simple to use, which makes it an ideal choice for beginners.

    In this article, Mark Volkmann continues a multi-part series on Go that provides both novice and seasoned programmers the knowledge and skills they need to become proficient with the language. In Part 3, Mark provides an in-depth exploration of the Go Standard Library.

    The first article in the series provides an overview of the language and a quick-start guide. The second installment reviews Go syntax.

    More

  • Go is an open-source programming language that runs on Unix-based operating systems (including Linux and macOS) and Windows. The language is particularly easy to read and simple to use, which makes it an ideal choice for beginners.

    In this article, Mark Volkmann continues a multi-part series on Go that provides both novice and seasoned programmers the knowledge and skills they need to become proficient with the language. In Part 2, Mark covers Go syntax.

    The first article in the series provides an overview of the language and a quick-start guide.

    More

  • Go is an open-source programming language that runs on Unix-based operating systems (including Linux and macOS) and Windows. The language is particularly easy to read and simple to use, which makes it an ideal choice for beginners.

    In this article, Mark Volkmann begins a multi-part series on Go that will provide both novice and seasoned programmers the knowledge and skills they need to become proficient with the language. In Part 1, Mark provides an overview of the language and a quick-start guide.

    More

  • Hooks are a new React feature that allows developers to implement stateful components with functions instead of classes. Their addition to React makes it easier to work with component state and context and to reuse state logic between multiple components.

    In this article, Mark Volkmann explores the benefits of using hooks and explains how to use the hooks currently available in the React package.

    More

  • When building web applications for a global audience, accessibility features like language translation can make a huge difference in your success. In this article, Mark Volkmann introduces the open source web-translate library, a set of JavaScript functions and a command that significantly simplify the translation of English to other languages in web applications! Follow his step-by-step tutorial to discover how easy it can be to add this useful functionality to your apps.

    More

  • There are many approaches to managing state (data) in web applications. Redux allows you to store state in a "store" that can be shared by all components, allowing for state changes to be reflected by re-rendering all components that care about particular pieces of data. In this article, Mark Volkmann provides an introduction to the basic functionality of Redux, then explores ways in which redux-easy significantly simplifies use of the Redux library.

    More

  • Emmet is an editor plugin for quickly entering HTML, XML, and CSS. It also supports many "actions" that operate on HTML and XML elements. The most commonly used action is to expand an abbreviation or snippet.

    In this article, Mark Volkmann provides an in-depth exploration of the Emmet plugin, from installation to snippet customization. Discover how Emmet can help you enjoy enhanced programming productivity.

    More

  • Many software developers know a little bit about Vim and grudgingly use it when nothing else is available. This article aims to quickly make you more productive when using Vim and perhaps even convince you that there are reasons to prefer it over other editors. Even if you don't adopt Vim as your primary editor, you may wish to enable a Vim mode in your editor/IDE of choice.

    More

  • This article explains the fish shell in enough detail for you to determine whether you might prefer it over other shells.

    Really learning a shell is similar to learning a new programming language. Similar topics are covered here such as variables, functions, string operations, and so on. If writing scripts in other shells has felt tedious in the past, this is your chance to learn a shell that makes scripting easier!

    More

  • For developers that have primarily worked in dynamic programming languages, it's natural to suspect that the benefits derived from types might not justify the extra work required to specify them.

    However, you may be surprised at how often adding types uncovers issues in existing code. In this article, Mark Volkmann recommends that you start simple, perhaps just adding types for function parameters and return types. Over time, you may notice that your confidence in your code quality increases and the number of errors you discover at runtime decreases!

    More

  • Many people talk about how easy it is to build web applications using Node.js. However, it's difficult to find resources that cover all the steps. In this article, Mark Volkmann walks you step-by-step through the fundamentals involved in building a simple web app.

    More

  • ESLint is, as the website describes, the "pluggable linting utility for JavaScript and JSX." Linters report syntax errors and potential run-time errors. ESLint also reports deviations from specified coding guidelines. Error messages identify the violated rules, making it easy to adjust their configuration if you disagree with the defaults.

    More

  • This article compares two popular web app frameworks, Angular 2 (beta.0) and React (0.14). It does not provide detailed explanations on how to use them. There are many other web tutorials that provide that level of detail. The focus of this article is to show side-by-side comparisons of the corresponding pieces in a sample application.

    More

  • The latest version of JavaScript defined by ECMAScript 2015 (a.k.a. ES6) adds many new features. While most are easy to understand, iterators and generators require a bit more effort. Everything you need to know to get started using them is provided here.

    More

  • gulp is a JavaScript-based build tool for automating the execution of web development tasks. Actually, gulp can automate anything that can be done from Node.js. Since Node.js can run shell commands, gulp can be used to automate any task. However, in practice it is primarily used for tasks associated with web development.

    More

  • The next version of JavaScript, defined by ECMAScript 6 (ES6), is packed with great, new features. There are many more significant additions than were provided in ES5. Firefox and Chrome are aggressively adding support for these and IE11 supports some, but it may be years before all popular browsers fully support ES6. The good news is that you don't have to wait. You can use a transpiler today to convert ES6 code to ES5, enabling it to be run in current browsers and with Node.js.

    More

  • This article provides an overview of tmux. tmux is short for "terminal multiplexer." It dramatically expands what can be done with terminal windows. It is highly configurable and scriptable. tmux is an alternative to an older, similar program named "screen." One benefit of both tmux and screen is realized when working on remote machines where network communication can fail.

    More

  • This article provides an overview of Node.js. It also explores a particular Node module, Socket.IO, and demonstrates how to use it to build a simple chat application. You'll be amazed by how little code it takes to do this!

    More

  • Writing software applications in which parts of the application run in concurrent threads introduces many challenges not present in single-threaded applications. Since the order of operations isn't fixed, failures can be difficult to repeat. Also, thoroughly testing the software requires more effort. There are two general categories of multithreaded software.

    More

  • The goal of this article is to provide a fairly comprehensive introduction to the Clojure programming language. A large number of features are covered, each in a fairly brief manner. Feel free to skip around to the sections of most interest. The section names in the table of contents are hyperlinks to make this easier when reading on-line.

    More

  • Writing API for XML (WAX) is a free, open-source library for writing XML documents. I created it because I got an OutOfMemoryError while trying to output a large XML document from an application I wrote using JDOM, another Java-based XML library. I searched for other libraries that could write large XML documents but couldn't find any that were as simple to use as I thought they should be.

    More

  • ANTLR is a free, open source parser generator tool that is used to implement "real" programming languages and domain-specific languages (DSLs). The name stands for ANother Tool for Language Recognition.

    More

  • This article provides an introduction to JRuby, an implementation of Ruby on the Java Virtual Machine (JVM).

    More

  • SWIG generates wrapper code from C/C++ header files that allows C/C++ functions to be invoked from other languages. This includes compiled languages such as C#, Java, Lua, Modula-3 and Ocaml "scripting languages" such as Perl, PHP, Pike, Python, Ruby and TCL LISP variants such as Allegro CL, CLISP Scheme variants such as CHICKEN, Guile and MzScheme Why would you want to do such a thing?

    More

  • REST is an architectural style, not a standard or API. It was conceived by Roy Fielding in his dissertation in 2000 (see references at end). However, existing standards including URLs, HTTP and XML can be used to implement REST applications. REST is used to build distributed applications such as Web apps. and Web services. REST servers are any pieces of software that respond to REST requests. They can be implemented in many ways, including Java servlets.

    More

  • Groovy is an open-source scripting language that is implemented in Java and is tightly integrated with it. It requires Java's JDK 1.4. Groovy adds some features of the Ruby and Python scripting languages to Java. Features of Groovy include dynamic typing, closures, easy object navigation and more compact syntax for working with Lists and Maps. These features and more are described in detail in this article. Here's a quote from the Groovy web site.

    More

  • Ever tried to get a group of software developers to agree on a coding standard? We're all reasonable people, right? Certainly we're mature enough to come to an agreement on decisions that are based on personal preference. Well after 20 years of working in the software business I've never seen a team of developers successfully do this. Sure, some dissenting team members can be beaten down until they conform, but they're not happy about it.

    More

  • SOAP and web services are emerging technologies that are getting a lot of press. What problems do they solve? What does their use mean for other distributed architectures (DAs) such as CORBA, DCOM and EJB?

    More

  • Ant was developed as part of the Apache Jakarta project. It is used to build many Open Source software packages such as Tomcat and JDOM. It can also be used to build your software.

    More

  • This month we examine an approach to creating a dynamic web site using Java servlets, XML and XSLT. The application selected to demonstrate this is a shopping cart. Users can add items to their cart, remove them and purchase the contents of the cart. Click here to view the complete article (245k PDF).

    More

  • XML, which stands for Extensible Markup Language, is a markup language that can be used to define custom "tags" similar to HTML tags. It is a subset of another markup language, Standardized General Markup Language (SGML), that is considered to be too complex for wide-spread use. One of the main goals of XML is to separate document content from its formatting.

    More

  • Tooltips are small windows of text that popup when the user leaves the mouse cursor over a component for a second or two. They are used to explain the functionality of the component. Tooltips are an integral part of Swing components. They can be specified by calling the setToolTipText method.

    More

Respect the distance. Do the work.
Don't be a dabbler. If you're going to do something, do it well.
The world is full of people who make excuses for why they cannot do things. Don't be one of them.

Words of Wisdom from Some of Mark's Heroes

  • "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
secret