About Me
I'm 49 years old, born
in
Melbourne, Australia, completed a Bachelor of Digital Systems
in 2001, then lived up near
Brisbane until 2018, spent a couple months in
Wollongong, then back home to Melbourne again, where I presently reside in the northern suburbs.
Projects
- Software
- Guestbook (2012, 2018)
- Smoke Price Helper (2017)
- Hardware
I Made A Blinky
(2017, 2018)- Desk Clock mkII (2018)
- LED Strip (2018)
Skills
Profile Image
Skills
Programming Experience
Environments / Tools
Web Technologies
Embedded / Automation
To Do
Skills Key: Have Used Experienced Currently Using
Education
Udacity
2012 – 2013: Finally after far too long, life had settled down a bit to where I decided to see about brushing up on my learning some new skills, and re-learning others that I'd lost. And so it was that I came across Udacity — at the time, a fairly new, free (money — the second reason after life for such a long gap), and begun taking a little time out each day to work my way through a few of their courses;
- Introduction to Computer Science
- Started with a nice easy refresher, to get back into the swing of learning again.
- Web Development
- Using the Google Application Engine to develop a simple web site — that course was the genesis of all this, and provided me a always-on platform on which to base a few tasks that formerly I'd run off a permanently-on Linux box, but was otherwise unable to do due to having recently started using a Windows laptop (which rather strongly objects to being left running all the time).
- Artificial Intelligence
- This was their early foray into teaching the basic principals of such things as SLAM, used in the development of self-driving car technology. (Their newer courses are very good from what I've heard, but also no longer free — understandable, but unfortunate given my budget constraints at this time.)
I'd also queued up a second round, but Life as it happens had other plans, and those, along with a whole bunch more I'd intended to pick up (there's still a folder full of them in my browser bookmarks), never happened. They included; Statistics (always has been a weak point in my maths background), Physica (general interest, more of an elective in this case), and HTML5 Game Development
(mostly for the HTML5 — my web page design was sadly still quite firmly stuck in the 1990's — it's at least moved into the Y2K's now…).
Monash University — Clayton
1996 – 2001: Studied embedded systems at Monash University, with an eye to Home Automation. It took a little longer than intended (was only supposed to be a four year degree, with optional honours), due to a motorcycle accident in second year that left me having to repeat some of my core subjects — it did however, offer me the chance to pick up a lot of extra Computer Science electives to fill in the gaps.
Now: I'd gone to university originally, with this dream of a good quality reliable Home Automation system that did what you want — and 20 years later, it's still mostly just a dream: There's plenty of automation out there, but very little that I'd feel comfortable having in my home… Which is why I'm trying to get back into electronics yet again — if they won't make it a reality, perhaps I still can.
Some Quotes
Any sufficiently advanced technology is indistinguishable from magic.
Even if you are on the right track, you’ll get run over if you just sit there.
I'm not scared of a computer passing the turing test…
I'm terrified of one that intentionally fails it.
What's Here
This site is predominantly a general purpose grab bag of various little web-based projects and experiments of mine (since doing a Web Development with Google App Engine
tutorial back in 2012), with a side-serving of about Me
, and perhaps even a dash of informal resume. As part of a 2018 revamp, I've cleaned a lot of the visitor-friendly parts up, updated the user interface, and collected them in this section and in the Projects card up top.
For the most part, everything on here is home-brew, even when mature alternatives exist; this site isn't about being state of the art or enterprise ready, it's been about personal learning with personal projects, and I only resort to 3rd party packages for things I know I shouldn't try to do myself; crypto (always best left to the experts), and Bootstrap (with it's responsiveness, and the whacky things it does for browser compatibility). There's a bunch more here than is shown, but most of that are ongoing experiments — and locked behind an admin barrier until such time as they're ready to meet the big bad world of the internet — and back-ends for other projects in other spaces (and hence don't make a whole lot of sense exposing here).
(*) Note: Marked pages require logging in to this site with a Google account. For more info, read the Privacy and Liability section below .
2012 Hello World! (*)
(Finished)
As the name says, it's literally the Hello World
of GAE. It even comes in a plain text version! (This will also be trivially customised if you're logged in
.)
… 2018
Guestbook
(Working)
Regular run-of-the-mill Guestbook tutorial, right after the Hello World one. Remaining basically untouched since 2012, it's grown quite significantly in the recent revamp (2018) — most notably markdown-esque formatting, and online book-wise configuration — now doubling as container (a private guestbook
) of the About Me page quotes shown
above
.
2017 Smoke Price Helper (*)
(Frozen) Built over just a couple days to help make it easier for me as a non-smoker, buying smokes for my smoker partner. Initially built to keep track of the price of the various packets I regularly purchased (which could only be displayed from behind the counter, for reasons), it was then extended to make it easier to select a packet (or combination of packets) to achieve a given price (how many can I get for $40) or packet size (cheapest combination for 50) target. It's here as a reminder of how glad I am that I never took up smoking, and how terrible my site looked before the 2018 redesign — and I intend to try keep it as much as-is as reasonable.
2018 Fredderic - About Me
(Evolving) You're looking at it; the welcome mat of my personal web-facing pages. This page tells you a bit about me, but mostly just a space where I throw random things that don't need their own page (if you're me, there's several more panels showing, full of all sorts of random things).
2018 Base64 Encoder
(Finished) A very simple base64 encoder/decoder with a lean towards cloaking links for some overly protective chat services; since friends kept sending me base64 encoded links to bypass the filters, I made this trivially simple page to do the en/de-coding for me (it tries to decode, if that fails, then it encodes) — no other processing of any kind, and definitely not a link shortener. (It also has some minor conveniences the generic Base64 conversion sites don't offer — especially if you have the insider access knowledge.)
2018 JobSearch
(Idle) Job search site scraper to collect new jobs from my favourite job search site(s), try to remove duplicates (and make it easier for me to exclude the rest), and then sort by travel distance — this is how any self-respecting web developer would do it, right?!?
2018 Forms Test
(Work-in-progress) Development and testing of a custom forms framework which I'm hoping will work out pretty well… This is the test page; rendering is complete, but I'm not happy with the validation.
2018 Mailer Test
(Idle) Brief foray into receiving email addressed to the site itself (ie. sendspam@ciredderf.….com), and forwarding it to my main mail box with some stringent anti-spam measures. Successful proof-of-concept, so finished with it, for now.
… 2021
Goodnight
(Evolving) Simple (and not too ugly) plot of my sleep pattern… obviously for internal use only. However, also my first foray into dynamically generated SVG images, presenting my sleep period data as a fairly simple but none the less functional SVG rendered chart. Sleep period data is automatically logged by and pulled from my Home Automation system.
2019 [YouTube] Playlist
(Broken) Uses the YouTube API to fetch my Favourites list, stores a shuffled index in a cookie, and embeds the next video in a very simple page each time it loads. No auto-play, no order controls, no sorting, no filtering, just a different video each time. Simple and functional. (And yes, it's mostly good old regular pop… comes from the old days with these things called radio's…)
What's Not Here
Private Servers
This site hosts a couple backends for various projects; for example, a product sales tracking database for things I never actually got around to selling in the SecondLife Marketplace (I do have a couple very basic things I shoved on the marketplace for cheap, just to let me get some real sales transactions &mdash and have actually made a whole half a cup of coffee worth in sales over the couple years since), but then drifted off the platform so never really made much use of it all. Another that tracks my sleep hours and general daily wellness
— also tied into my home automation system. Even a couple utilities I've put together for other people to use.
Media Scheduler
I run a home-brew local-access-only Python server on my home computer, managing a fairly convoluted schedule of shows, movies, RSS, YouTube, e-books, and other entertainment media. I like binary weighted
prioritisation, which mixes several series together, while also prioritising them in first-in first-out order. The scheduler serves a set of webpages allowing me to add the next thing I wish to watch to a list, and mixing it into the sequence, with options to skip a series for a bit, watch an extra episode or an episode out of order, etc., and it keeps track of it all for me, and offers to auto-launch the media via a simple play button where possible.
Home Automation
Running a Home Assistant instance controlling a mixture of consumer IoT devices (lights, power plugs, etc.), its phone app and voice assistant interfaces, a custom control service on my computers (allows me to do things like mute the volume when I go to bed, and lock the computer when I leave the house), and the Desk Clock and LED Strip mentioned in the Hardware projects section. Obviously I have no intentions of exposing any of that to a public accessible page, and it intentionally has no contact with this site — I could use either he bridge I built, or one of it's internal connectivity options, but I can think of nothing that I would want exposed here.
Web Frontends; React, Vue, Svelte, and others
I've been experimented with several frontend and WebApp frameworks, that don't play well with this older site structure (React and Vue have a drop-in mode for progressive implementation for example, but it misses out on a number of features of the full framework, and I've implemented a lot of my own framework infrastructure &mdash based loosely on Django — for this site over the years), and were mostly distinct local instances that were never put online — especially the ones involving external services with limited free tiers, that I experimented with and then discontinued. (I am considering replacing this site with one implemented in React, or one of it's derrivatives.)
Unity Game Engine
Recently (2021) started with some practice applications that were never beautified enough that I'd be happy posting screenshots. I'm far more programmer than artist, and focused on functionality and the language itself (C#) rather than level design or aesthetics. So showing off a screenshot full of either simple coloured shapes, or a bunch of free assets, doesn't really feel like it captures the achievement of the experience.
Linden Scripting Language
As noted under Private Servers above, during the late 2010's in particular I spent a lot of time in SecondLife, with a significant portion of that participating in several in-world Linden Scripting Language
groups helping other people — my diverse programming background having afforded me a very fast on-ramp to the language in particular; LSL is a fairly simple language loosely based on C, but devilishly quirky in it's limitations and application. One interesting project, is a bridge to my home automation system allowing an in-virtual-world device to both control and reflect the state of real life devices — most notably my room light has a working light switch in the virtual world.
… and basically most things since 2019. I doubt (and hope) I'll never stop learning new things, and improving what I already know, but I have changed where and how, and I hate to say it but this old site just isn't it any more.
Useful Links
- Roadmap to becoming a web developer in 2018
- Was shown this by one of the GCTS guru's, and it looks like exactly what I've been wanting — the long winding road to DevOps…
- Why computers sometimes crash.
- Something every person who works with computers should keep in mind. I first came across this way back when, and this time, felt it needed keeping. So now it's kept.
Privacy and Liability
You are presently not logged into this site.
Like most of this site, this section serves a double-purpose; firstly, it's a disclaimer and privacy declaration, but secondly, I consider this of general interest to anyone who see's those Sign in with Google
buttons around the place, and has wondered how they work.
Firstly, as noted in the What's Here section
above
, this site is really mostly intended as my personal learning sandbox, and so I make no guarantees about it's content, or any data held herein. For that reason also, aA good deal of this sites functionality is only available to me, personally. Of what's left, I've made as much of it open to the public as makes sense, and intend to continue to do so.
With that in mind, thereThere are some minor features of this site that do become accessible only if you use the Log In
function at the top of the page, such as leaving a star rating on the random quotes that show
above
(which does nothing but influence how often a given quote shows up). That login function very simply uses Google Account login, where Google take care of the authentication, and simply gives me the information I list below if — and only if — you're logged in
. For my part, I never see any passwords, and so don't have to store any information for hackers to hack (unless you consider those star ratings to be worth stealing).
An example of what this site would see if you were logged in
:
- Email: 'example@gmail.com'
- Your current Google Account email address — presently not directly used or stored by this site, except as the author on Guestbook posts.
- Nickname: 'example'
- Generally just the username portion of your email address; intended to be
a unique, human readable identifier for you with respect to this application
(more or less quoted from the Google developer documentation). Most notably, this is what actually gets shown on Guestbook posts as the author. (I am considering adding a very thinprofile
to allow for such things as customisation of this field.) - User ID: '12345678901234567890'
- This is easily the most interesting of the three — a
Apermanent unique mostly meaningless identifier. For the most part, this is all I use to identify any information this site stores on your behalf; such things as the star ratings use this identifier to allow you to see (and change) the rating you gave a quote. This is used instead of your email address because you can change your email address, and doing so would otherwise both cause you to lose access to your information, and potentially allow someone else to subsequently impersonate you on this site (which has happened to some large commercial sites which really should have known better).
And that's it. That's all I get when you log in with your Google Account, and this is the very mechanism I use to lock away the non-public portions of this site. There is no user account
or profile
, there are no ads, 3rd parties, tracking (except the request and error logs that every web server produces, and which this site itself can't actually access anyhow), or analytics, and I keep no secrets for hackers to hack, or privacy to have stolen.
This site does set some trivial cookies — feel free to clear them any time you like. However, several pages will fail to load if the main cookie — set by this page — is not present (a very simple hot-linking block).