Hi!
My name is Tom Hartung, and here is an overview of the important projects I keep on
github,
with links to specific repositories as appropriate.
Note that I work every day, and
can prove it!
Not only that, this is allwork that I have done on my own time.
And to make sure the whole story is perfectly clear, and ensure expectations are properly aligned with reality,
please note all projects are on-going.
This is because I feel learning from these projects is much more important than completing them.
Quick Links
You could call this a "menu" if you like, but I want this page to be simple and keep the focus of it on content.
The
tomhartung.com-d8.
github repository contains the source for my
TomHartung.com
site1.
It is a standard
Drupal 8
install plus the
Drupal AWD and RESS customizations
I have written.
I am new to Drupal, and at this time documentation for Drupal 8 is somewhat limited,
so if you visit this site, note that it is a little more
in progress than the others.
The
seeourminds.com
github repository contains the source for my
seeourminds.com
and
groja.com
sites.
It is, for the most part, a standard
Joomla 1.7
install.
These sites are going offline — or at best will be far less functional —
when I switch to the new server,
which is running Ubuntu 16.04 and PHP 72.
This is a static site, one of the first ones I built, and it has no repo on github.
It is not mobile-friendly, but it is not obsolete either.
I like to think of it as being a cave wall painting and
I have no plans to update it at any time in the near future.
Of course, if what I am reading about https in articles such as
this one on arstechnica.com comes to pass this one may wind up with some sort of "red flag."
Interesting times are ahead, indeed!
The static ip is included with my land line, so although it is "free," bandwidth is limited.
My Sites Run My Dog Food Only
Note that these sites run only the base distribution of the CMS and the extensions that I write.
That is, they do not run any third-party extensions.
When it comes to my personal web sites, I eat only
my own dog food.
I have written customizations — extensions, modules, plugins, templates, and themes —
for each of the three popular LAMP CMSes,
Joomla,
WordPress
and
Drupal,
and keep the code on
github.
I have been doing this off-and-on for many years, since the
PHP Nuke
days, in fact.3.
This type of work is both challenging and rewarding, and I would like to find more of it.
Most recently I have been using Device Detection, provided by the
idMyGadget
adapter API, to implement Adaptive Web Design (AWD), or more specifically,
Responsive Design With Server Side Components (RESS).
This work is fairly extensive and appears on a
separate page on this site.
During the last recession (2008-??) I ported the code for
groja.com
and
seeourminds.com
from
PHP Nuke
to
Joomla 1.5.
Although this work is fairly extensive, at this time it is nonetheless obsolete.
If you are interested, the details are on a
separate page on this site.
Please be sure to check out the two separate pages listed above, especially the one on
Adaptive Design and RESS Using Device Detection.
They summarize and explain quite a bit of the work I've been doing lately — and all of it on my own dime.
It would be great to get a chance to do more work like this, especially if I could actually get paid for it!
My adaptive, interactive, and comprehensive
online resume
uses device detection and
jQuery Mobile
to present visitors with a device-dependent experience,
and the source for it is on
github.
The
resume
repository on github contains the source for
my adaptive, interactive, and comprehensive
online resume.
How It Adapts to Your Device
When you visit it on a desktop or tablet, the resume appears as a single page —
using slightly different styles on the tablet.
When you visit it on a phone, the server:
Adds the jQuery Mobile JavaScript library to the code served to the browser
Breaks each section into a separate screen
Adds navigation bars at the top and bottom of each screen,
allowing the user to focus on one section of the resume at a time
Regardless of the device, the resume uses JavaScript to make the experience more interactive.
And although it lists all of my jobs — and is hence comprehensive — it will show all of them only if the
visitor really wants to drill back into my past.
Try It Yourself!
These repos include documentation that should be enough to enable you to create your own
adaptive, interactive, and comprehensive online resume.
I write scripts and document processes that help me
keep my sites functioning, keeping many — but not all — of these on
github.
I am language-agnostic,
and happy to work with older languages such as
English,
Python.
Bash,
and even
Perl.
As you might guess, I use English to define processes and when giving presentations,
and I use Python, Bash, and Perl to write the scripts.
The joomoowebsites directory contains some plans I was working on for awhile
Images, slides, and other notes from presentations I have given are in the presentations directory
I still keep most of my Bash and Perl utility scripts locally (as opposed to on github), and
move them to github as I convert them to Python.
Therefore this repo does not yet include many, if any at all, of the Bash and Perl utility scripts
I use on a daily basis (e.g., to quickly ssh between hosts on my LAN).
Also, there are a very few utility scripts in the
edison_usr_local_bin
repo.
I had to separate them out because they help me quickly find and kill processes and so are extremely important
when experimenting.
And while the eventual goal is to convert all of them to python3,
I could not get python3 to run on the Edison.4
Like all the other projects on this page, this is fun and educational
work,
but not important enough for me to focus on exclusively at this time, and so still very much
in progress.
The Edison is a micro-computer — about the size of a largish postage stamp.
Having virtually no recent experience with this sort of computing,
for me that weekend was a huge and wonderful learning experience.
After the event I spent some time writing basic programs to run on it, keeping the code on
github.
Although there is support for other languages, including Java, I chose the following:
The
edison_node repo
contains JavaScript programs that perform basic digital and analog input and output,
along with a few more fun things that work best using this method.
The
edison_python repo
contains JavaScript programs that perform basic digital and analog input and output,
along with a few more fun things that work best using this method.
The
edison_arduino repo
contains C/C++ sketches (programs) that perform basic digital and analog input and output,
along with a few more fun things that work best using this method.
Most of these programs work similarly in all three languages, but there are significant
differences in capabilities and the ability to write elegant, understandable code
once one gets past the basics.
I have additional repos —
edison_config_tools
and
edison_usr_local_bin
— that contain supporting code.
I bought several books, most of which are published by
O'Reilly,
to help guide me through all this.
This entire project has been a huge amount of fun!
I have been learning JavaScript and CSS in the background (so to speak) for many years.
Both seem to be constantly undergoing significant changes, and
it is important to spend some time on occasion keeping up with these,
because JavaScript is ubiquitous, and you never know....
The
always_learning_javascript
repo has some work I have done recently at
Nodeschool.io
and
Codecademy.com
The
ubuntu-hello_world
and
todos-bogotobogo_com-source
repos contain some work I started for a client who has since gone dark on me.
9
This new technology, which allows visitors to save a site to their phone's home screen, sounds quite exciting!
This looks like a great idea for my
groja.com/seeourminds.com
project.
However, at this time (2015-08-02) it works properly only on Android Phones, and my mobile phone is an Apple.
Bummer, right? Well that is exactly why they call it "Progressive..." — but that's another story.
There are some online tutorials and classes at
developers.google.com
and
Udacity
Keep an eye on the progress I make on this in
pwa-tutorials.
I have been hearing a lot of buzz about this new technology and
definitely want to check it out.
I suppose that
this tutorial
will be an excellent place to start, once I find the bandwidth.
Along with other benefits, keeping the code I write for these classes on github allows me to
start coding for a class on one pc, commit and push what I've done, and
resume the class or tutorial on another pc. Sweet!
Just because some code is publicly available on github, doesn't mean you can safely
download and use it
for free.
It's true.
Licensing
My original intent was to use the
directions at gnu.org
to open-source all of this work,
making it available for reuse under the
GNU Public License
(GPL).
I have done this with some of my code, and in particular
many of the individual files have been open-sourced to varying degrees.
I believe I am like most people in that I really don't mind people using and learning from my code.
However there is some concern that a black hat of some sort
might somehow make a bunch of money off of my hard work.
Production Readiness
Another concern is readiness for production.
For one thing, different environments require different levels of performance and security, and
for another, this term is virtually impossible to define, because new methods of attack are constantly evolving.
Although I use some of this code on my personal sites,
these sites are for demonstration purposes only.
They run only the core CMS code and
my own code,
and no other third-party extentions.
Additionally, I keep many backups of both the code and the database, in case one of my sites gets hacked.
If you do not follow the same precautions, I certainly cannot guarantee positive results.
Due to monetary constraints, there is only so much work I can afford to do, alone and by myself,
without getting any sort of financial compensation for it.
And moreover, as fun as it sounds, producing and giving away production-ready is just not one of
my goals at this time.
So you should not assume that any code you find in any of these repos —
whether licensed or unlicensed — is production-ready.
This code is strictly available as-is —
but: I would be
more than happy to work with you
to make any of the code you find in any of these repos production-ready upon request.
Using My Code
I would definitely be flattered if you wanted to use some of the code I have worked so hard on,
but it's impossible for me to feel flattered if I don't know about it!
So if you are interested in using some of my code, please:
Check to see if the repo has a LICENSE file, and if so, abide by those terms
Contact Me
to see if I would be willing to do more work on it, or add a LICENSE file to the repo, or both — and we'll take it from there
Better yet, let's
work together
on getting it ready for production in your environment
1
I have a spreadsheet filled with hundreds of articles I would like to post to these sites at some point,
but instead of creating content I invariably find myself working on other, more technical and
ultimately more interesting projects in my
spare time.
2
I am looking into completely rewriting these sites using the latest technology from google and/or facebook,
and making one or both a
Progressive Web App
(PWA), or maybe use
React Native,
which is getting a lot of buzz lately (ooh shiney, let's play!)
For up-to-the minute information on the progress I am making on this project, see the
Lifelong Learner section and associated repo(s).
3
Unfortunately much of that work is now obsolete....
4
Fwiw, I did not try all that hard to get python3 to work on the Edison....
5
6
7
9
Which is ok, because truth be told, I am all about the learning, and I told him I do not charge for research.