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:
- Not Applicable
- Basic
- Intermediate
- 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:
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:
|
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:
- Visual Studio Code. Without cost and open source. Great for editing the source markdown with a presentation view side-by-side.
- Typora. Currently without cost ("[free] during beta") and closed source. Great for editing in the presentation, "What You See Is What You Mean", view. Can readily switch between presentation and source markdown view.
Reference Documents Licence
Reference documents I've written © 2021 by John Bentley, licensed under Attribution-NonCommercial-ShareAlike 4.0 International
Bibliography
- |Access 2000 Developer’s Handbook Volume 1| Litwin, Paul, Ken Getz, and Mike Gilbert. 1999. *Access 2000 Developer’s Handbook Volume 1: Desktop Edition*. Volume 1: Desktop edition. San Francisco: Sybex, 1999-09-02.
- |Access 2000 Developer’s Handbook, Volume 2| Litwin, Paul, Ken Getz, and Mike Gilbert. 1999. *Access 2000 Developer’s Handbook Volume 2: Enterprise Edition*. Volume 2: Enterprise edition. San Francisco: Sybex, 1999-12-01.
- |Pro Git| Chacon, Scott, and Ben Straub. 2014. *Pro Git*. 2nd ed. https://git-scm.com/book/en/v2. New York, NY: Apress, 2014-10-14.
- |Programming Microsoft Visual Basic 6.0| Balena, Francesco. 1999. *Programming Microsoft Visual Basic 6.0*. 1st edition. https://www.amazon.com/Programming-Microsoft-Visual-Developer-Reference/dp/0735605580. Redmond, Wash: Microsoft Press, 1999-06-21.
- |SQL Server 7 Developer’s Guide| Otey, Michael, and Paul Conte. 1999. *SQL Server 7 Developer’s Guide*. Osborne/McGraw-Hill, 1999. Google-Books-ID: SOyFQgAACAAJ.
Updates
- 2022-04-18 13:40: Updated JavaReference-Language.pdf; and XmlQuickReference.pdf.
- 2021-10-20 17:49: Added updates section; For PHP, "Examples of My Use", added gallery view php source info; added section "General Dev Tools" and Git info.