Skip to main content Design options ...

Design Options

Changes effect all users.

Developer:
Theme:
Components:

Technical Skills - Overview

This is a list of my (John Bentley's) main technical skills. It also includes a snapshot of the major reference documents I've written with respect to those skills.

The reference documents mainly come from (my processing of) official sources, as I've learned (and continue to learn) each language/technology. But it amalgamates information from other sources: the results of my own experimentation, random blog posts, stackoverflow answers, etc.

Technically minded potential clients/employers (who are also developers) looking to evaluate my existing skills will find it useful to skim my reference documents, as a crude proxy for skill level.

Additionally, I describe my skill level against each tech (where applicable) as one of:

  1. Not Applicable
  2. Basic
  3. Intermediate
  4. Advanced

Developers surfing here semi-randomly might find some value in the standard way I present language and technique information in many of my larger reference documents. That is, where I break down parcels of information into the format: rule, code example, (optional) explanation/justification for the rule, source. See, for example, the "Key" on the first page of EcmaScript-Core-Reference.pdf, then skim the document.

Web Front End

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
XHTML HTML Web markup language Xhtml-Reference.pdf Xhtml-PolyglotMarkupRules.pdf Advanced

The website you are now reading is entirely hand coded (excepting the use of a slide show component deep in the sub-website Web Prototyper). View the source and find semantically clean XHTML markup.

CSS Web presentation language CascadingStyleSheets-Css-Reference.pdf CSS2.1Core-QuickReference.pdf Advanced The website you are now reading uses modern CSS techniques. For example, a liberal use of flexbox and grid layout. Resize the current webpage to see that the table is responsive.
EcmaScript (JavaScript) Web programming/scripting language EcmaScript-Core-Reference.pdf EcmaScript-InWeb-QuickReference.pdf Jquery-QuickReference.pdf Intermediate. I know old school JavaScript well but am behind on ES6 features and contemporary libraries (e.g. React, Vue).

The website you are now reading liberally uses (largely old school) EcmaScript/Javascript. For example I've coded the menu using JavaScript (see Ideas Tree Menu > Setup).

My JavaScript Regex Tester is handy tool.

SVG A language for describing two dimensional graphics in XML. Usefully embedded in XHTML/HTML. ScalableVectorGraphicsSvg-2-Reference.pdf Intermediate Local (at home) design spikes.
Web Techniques Web techniques that span several web technologies or apply to setting up a website as a whole. WebTechniquesReference.pdf Intermediate

WebTechniquesReference.pdf is a repository of techniques that span several web technologies (e.g. the basic principles of using XHTML and CSS for mobile friendliness and responsive design) or apply to setting up a website as a whole (e.g. configuring caching with HTTP Headers on a Web Sever, like Apache).

The website you are now reading uses many of the techniques in WebTechniquesReference.pdf.

Web Back End

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
PHP Web server-side programming/scripting language PhpQuickReference.pdf Intermediate

This website makes extensive use of PHP. Chiefly to create a templating environment where content pages are therefore relatively lean to code (because repeating custom elements, like the menu, are inserted via PHP).

For an example of my PHP code that does something interesting view the PHP source of a dynamically generated gallery. Essentially, from a set of uploaded images: thumbnails are generated; metadata is extracted; and the set of thumbnails are grouped and sorted with relevant metadata. See the resulting gallery.

Databases

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
MS Access. Classic VB/VBA/Access Basic. SQL. The Windows relational database coming with MS Office, the programming language driving it, and the database query language (SQL).

About two years full time work in my early career (with irregular ad hoc use since then), across several organisations, left me with an advanced affinity with this technology set. Such that I've never felt a need to write references for them.

To the extent that I need to lean on references (apart from google) I tend to use my hard copy versions of (books from third party authors):

|Access 2000 Developer’s Handbook Volume 1| |Access 2000 Developer’s Handbook Volume 2| |Programming Microsoft Visual Basic 6.0| |SQL Server 7 Developer’s Guide| (for SQL concepts that can be readily translated between SQL Sever and Access SQL flavours).
Advanced

Developed (either solo or in a team) custom solutions for a range of industries:

  • A quote and ordering system for selling bulk custom stationary (solo);
  • A system for engineers to stipulate nuclear safety requirements for the refit and refuel of nuclear submarines (team);
  • data migration and data cleansing to produce a software catalogue for distribution to clients on a CD (solo);
  • A system to schedule the inspection of NSW Dept. of Housing properties, via interoperation with MapInfo (a GIS), and log telephone calls from residents (solo).

Recreationally I've created a Flight Plan Database as an adjunct for MS Flight Simulator.

I've used MS Access to interoperate with MS Office programs: MS Outlook, MS Word, MS Excel.

MySQL Relational Database None. Basic I have an install at home against which I've ran queries and pulled data. To the extent that this is just another relational database that uses SQL, I can come at it with my prior advanced database and data modelling experience. However, I don't have extensive experience in the particulars of MySQL.

Mobile

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
Android Mobile platform for Google's Android AndroidReference.pdf AndroidJavaGradle-CustomLibrarySetup.pdf Intermediate No apps publicly released yet. But AndroidReference.pdf shows considerable learning.
Java Programming language used on many platforms, including Android JavaReference-Language.pdf JavaReference-Framework.pdf JavaReference-Language-RegularExpressions.pdf JavaReference-Language-PrintfStyleFormatting.pdf Advanced I've chiefly used this against the Android platform.

Windows

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
Classic VB/VBA/Access Basic. Windows programming language See Databases, MS Access. Advanced See Databases, MS Access.
Powershell Scripting language and command-line shell to automate Windows tasks. PowershellReference.pdf Intermediate

I've used powershell over the years to automate a range of ad hoc tasks on Windows, including:

  • A utility to rename files with a datetime suffix, for back up/archiving purposes, on the windows file explorer right click menu.
  • Creating self-signed X509 compliant certificate-authorities and certificates for use on development web servers.
  • The files that comprise this website are pulled via Powershell from several locations on the client side, before upload to the production web server.
Windows Script Host (WSH). JScript (EcmaScript/JavaScript) Automate Windows tasks by leveraging JScript (EcmaScript/JavaScript). EcmaScript-InWindowsScriptHost-QuickReference.pdf Advanced

Before the existence of Powershell I used WSH for automating Windows tasks where .Bat files where too limited. And so, for example, I created XslWebMaker a static website generator that uses WSH (in addition to XSL).

These days I'd reach for Powershell.

General Dev Tools

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
Git Source Code Version Control I've read |Pro Git|. I use and recommend SmartGit. From both of those I've created GitAndGitHubProcedures-GitHubWorkflowForContributors.pdf, which serves as an operational checklist (useful whether using SmartGit or Git from the command line). Basic

I've made a handful of production Github pull requests.

Data Markup and Transformation

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
XML Data Markup Language XmlQuickReference.pdf Not applicable

One really doesn't have "skill in XML" as such. As XmlQuickReference.pdf shows the format is simple. The entry is here partly in case recruiters are, nevertheless, looking for someone with "XML skills". And partly to have the reference online.

However, for the sake of demonstrating I'm at ease taking XML and transforming it see my demo at Ajax From Scratch.

XSL comprising XSLT and XPath XML Transformation/Presentation Language XslQuickReference.pdf Xslt-1.0-Reference.pdf XPath-1.0-Reference.pdf Intermediate

See my XslWebMaker a static website generator that uses XSL (XSLT and XPath).

Generally I think XSL is ugly to work with and these days I would rather reach for any procedural programming language/script (JavaScript, Java, Powershell, VBA, etc) to process and transform XML directly.

XSD Allows one to check that a custom semantics in an XML document is 'valid'. XmlSchemaXsd-1.0-Reference.pdf Intermediate Local (at home) design spikes.
JSON Data Markup Format JsonReference.pdf Not Applicable As with XML one really doesn't have "skill in JSON" as such. A developer just uses it in various contexts as an alternative to XML.

Plain Language Markup (other than XHTML/HTML) and Transformation

For the past five years or so (as of 2021) there's been an impressive community of (mostly) open source developers organically coalescing to yield a toolset that allows one take a plain language and plain text document, to mark it up (in something simpler than XHTML/HTML), and transform it into some desired presentation format, like pdf or XHTML/HTML. Additionally, to manage one's citations and bibliography; robustly embed them in the plain text document; and have them be properly transformed into the presentational format.

In my view the relevant markup here is markdown. Although there are other contenders, like AsciiDoc.

In those recent five years or so I've made modest and occasional contributions to this community. Mostly through learning how to use the toolset, raising and discussing issues with their respective developers, and acting as a tester after code changes.

Development on that toolset continues with enthusiastic community and individual effort. There's much to do. But the prospect is that eventually there'll be a toolset whose complexity is hidden behind, and drives, simple user interfaces that enable non-technical users to write documents in a way where the separation between content (e.g. whether this string of text is a heading, paragraph, or link) and presentation (e.g. the font family and font size for a heading, paragraph, etc) is both: enforced, and something the non-technical user doesn't have to think about (too much).

When that occurs then all the benefits of the separation between content and presentation in the web development world (when, after the 90's, presentational tags in HTML where stripped out and replaced by the presentational power of CSS) will be available to the world of authors of plain language and plain text documents. And, the world of non-technical publishers of information, broadly conceived.

Think, for example, of a teacher whose student's upload their essays in markdown. The teacher then transforms those essays into a standard format, to the teacher's preference for reading. Then, when it is time for the teacher to criticize the essay, they can edit the plain text document, whether directly or via some WYSIWYG/Presentational interface. Then, for another example, think of a recruiter receiving resumes from candidates in markdown. This would much more readily allow a recruiter to transform the resumes in a consistent format for presentation to the employer-client.

Getting to the point where this workflow is properly standardized and known in the wider community is a future milestone. However, the toolset is already mature enough that it can be potentially deployed, with technical assistance, for communities of limited users. Such as within an organisation or between a limited number of organisations (where an application and protocol can be developed to enforce document conformance with an easy-to-use workflow). I'm well positioned to provide a potential solution here.

Technology Name Type Reference Documents
(I've written, unless otherwise indicated)
Skill Level Examples of My Use
Markdown Markup of plain language and plain text documents.

Official sources:

My (basic) guide:

Not applicable for original markdown. Intermediate for writing Pandoc markdown.

As for XML and JSON one doesn't quite have "skill in Markdown" as such. It's a simple format (at least in the original Gruber form).

However there's a set of tips and tricks to learn to write pandoc markdown so that, with knowledge of how to call pandoc, a production document can be transformed according to one's goals. A set of tips and tricks partially embodied in my PandocMarkdownStyleGuide.md.

Pandoc John MacFarlane's (awesome open source) markup transformation tool.

Official Source:

Mine:

Intermediate

Pandoc is 'just' a command line tool. Upon encountering it for the first time it'll take you only, say, 10 minutes to transform a simple 'hello world' markdown document to pdf (or some other desired format like XHTML or EPUB). However, using Pandoc to create production documents can be involved. PandocUsageQuickReference.md demonstrates some of the basics, taking you beyond 'hello world' examples.

So, for example, from AcademicJournalExample-MDBased.md, AcademicJournalExample-MDBased.bib, and some (detailed) configuration options, pandoc can transform those source documents via latex into AcademicJournalExample-MDBased.pdf

Latex Markup documents for "high-quality typesetting" as a pdf. LatexReferenceAndExample.tex, yielding LatexReferenceAndExample.pdf Intermediate

For example starting with AcademicJournalExample-TexBased.tex, journtab.sty and other supporting latex code I've written, yield AcademicJournalExample-TexBased.pdf. This is without using Pandoc at all.

Citation and Bibliography Tool Set: Zotero, BBT, CSL, Biblatex, EDTF Manage, embed (in markdown or latex), and format citations and bibliographies. Intermediate

I'm chiefly a mere user of Zotero.

With respect to BBT I've made the occasional bug report, always addressed superbly by the developer Emiliano Heyns (github: retorquere).

I have coded custom Citation Style Language (CSL) formats (e.g. by modding Chicago Manual of Style 17th edition (author-date)).

With respect to Biblatex I've raised suggestions around extending it to several kinds of datetime format. For example, BCE/BC and CE/AD support; approximate dates, date ranges, uncertain dates; and a raft of other datetime formats. And so with considerable programming effort from the main Biblatex developer, Philip Kime (github: plk) - and contributions on discussions from several thoughtful users - Extended Date/Time Format (EDTF) support was given to Biblatex.

From there EDTF support either fanned out into the other parts of the citation/bibliographic software ecosystem or was independently arising. I don't mean to suggest my efforts here were necessary. If I didn't raise these issues they'd have been raised by others at some point.

In any case in Biblatex, and (with varying levels of support) in other parts of the citation/bibliographic software ecosystem, you can now, for example, cite: Plato's Republic "(Plato [379BC] 2004)"; Da Vinci's Codex Trivulzianus "(da Vinci 1487/1490)"; and all the other EDTF formats to level 1.

I'd recommend writing markdown in either:

Reference Documents Licence

Reference documents I've written © 2021 by John Bentley, licensed under Attribution-NonCommercial-ShareAlike 4.0 International Creative Commons Icon Creative Commons Attribution Icon Creative Commons Non Commercial Icon Creative Commons Share Alike Icon

Bibliography

Updates