Code Monkey home page Code Monkey logo

website's Introduction

Murdo Maclachlan

I'm Murdo, a Scottish software engineering student (graduand, technically) who mostly uses Java and Python and has far too many hobbies and a remarkable skill for procrastination.

Quick Links

My website probably contains most information you might be looking for.

Experience

I'm most experienced in Java and Python. I'm also fairly experienced with JavaScript, HTML and CSS. I use Eclipse for Java, and VSCode (VSCodium, strictly speaking) for everything else.

I have some lesser experience in the following languages (alphabetical order): C, Erlang, Lua, OCaml, PHP, R, Shell, SQL

The projects I'm currently working on through this account are:

  • pipupdater, a Python command-line tool to automatically update any out-of-date packages reported by pip.
  • smooth_logger, a simple Python logging library that lets you customise various logging scopes and whether they will be printed or saved to the log file.
  • smooth_progress, a simple Python progress bar that can be integrated with the above library.
  • Word Search, a very simple Java auto-generator and auto-solver for word search puzzles, which currently needs much more development.

Some projects I've worked on in the past include:

  • oscr, tadr and torcf, command-line Python tools that interfaced with the Reddit API to streamline the transcribing process for members of the now shuttered r/TranscribersOfReddit project.

Programming projects of mine elsewhere:

I also have a few small Bash scripts:

  • installsp, for streamlining the installation of Slackware packages and moving them to a local repository.
  • sytdl, for shortening the argument syntax of youtube-dlp, because I'm lazy.

Contact

Once again, my website can be found here.

You can contact me for purposes relating to my public projects at [email protected].

website's People

Contributors

murdomaclachlan avatar

Watchers

 avatar

website's Issues

Tab view not controllable by keyboard

The tab view (e.g. on https://murdomaclachlan.github.io/website/pages/projects/videos.html) is not controllable by keyboard, e.g. you can't change to the other tabs with a keyboard only.
The tabs should be able to get focus from the keyboard and when you press enter it switches to that tab.

My guess is that the problem is caused by the tabs being a links without an href attribute.
Instead, they should be button elements with corresponding click handlers (and maybe key handlers, I forgot if enter sends a click event).

Add themed favicon/logo

The old website design changed the appearance of the favicon at certain times of year (rainbow colour for Pride Month, etc.). This was fun and should be re-implemented in the redesign.

Add dark mode

Bulma has finally add dark mode capabilities in version 1.0.0. Some restructuring of this website's styles are needed to make it gel properly, and then we can have dark mode.

Will include a button to switch between the two.

Event logo does not show description on hover

During one of the event periods defined in events.js, the logo switches to a different one. The logo is also given a data-desc property explaining the event. This section of code:

#logo-container:after {
content: attr(data-desc);
position: absolute;
padding: 4px 8px;
left: -18em;
top: 105%;
color: black;
background: white;
border: var(--border-basic);
border-radius: 5px;
white-space: nowrap;
opacity: 0;
transition: opacity 0.125s linear;
}
#logo-container[data-desc]:hover:after, #logo-container[data-desc]:focus:after {
left: 5%;
opacity: 1;
}

should then cause a popup on hover that shows this description, but that popup doesn't happen for some reason. I have no idea why not.

Focus outline on tabs hard to see

This is just a minor issue, the navigation works well now!

When the tabs are focused, the focus outline on the top and bottom is not visible (on Firefox):
image

Adding a margin to the ul element that contains all tabs seems to fix it (I tried 0.5em but you can play around with it)

Consider adding a "skip to main content" link

This is not a necessary addition, but might be a fun exercise and further improves the accessibility (and it's satisfying to see once it works).

The basic idea is that a keyboard user might not always want to tab through the whole navigation menu before reaching the main content (a screen-reader user doesn't have this problem as they have shortcuts to navigate more efficiently, for example by headers).
To fix this, a "Skip to main content" link can be added, that navigates the user directly to the <main> element which should contain the content of the page.

Just adding a plain link like this might confuse users who don't use keyboard navigation and might look ugly.
To solve this, the link can be hidden off-screen and then made visible only on keyboard focus.
(It's important to not hide it via visibility: hidden or display: none as it might not be focusable in this case)

So you can add the link to your navbar, give it a fixed height (or width) and set the default styling (e.g. margin) to move it off-screen to the top (or left).
Then you add :focus styling to move it back to the "normal" position.

You can read more about the technique on WebAIM.

You can find examples on the WebAIM page itself, GitHub also has one (although an ugly one).

Fix scrollbar always appearing

The padding of the body element seems to make it larger than the parent component, resulting in permanent overflow and a scrollbar.

A potential fix could be to set the body padding to 0 and wrap the rest of the content in a container which applies the padding (I haven't tested that though).

Retire tabular page structure

The tabular page structure (only one section being shown at a time, with a list of tabs to select each section) is needlessly complex and less accessible than simply showing all tabs at all time in vertical order. Retire the tab structure in favour of this more standard structure.

"Projects" and "More" tabs not accessible by keyboard

The "Projects" and "More" drop-down tabs cannot be focused with a keyboard and are therefore inaccessible to users that cannot use a mouse.

To reproduce, press "tab" several times on the page. You can see that the logo, the name and "Home" can be focused, but then it jumps to the main content of the page.

Expected: These drop-down tabs should be focusable, which should show the options of that drop-down which can then be focused one by one. Alternatively, you could focus the drop-down tab and it expands/collapses when pressing enter.

Reduce number of nav links that lead to the home page

Currently there are three links in the nav bar that get you back to the home page:

  • Clicking on the eye logo
  • Clicking on your name
  • Clicking on "Home"

This can be slightly confusing for the sighted user, but is also three keypresses for the keyboard user.

I'd recommend to make it one link only, e.g. by doing the following:

  • Remove the "Home" link
  • Wrap the eye and your name in the same a tag to only have one link that does both

Of course there are other ways to change this, up to you :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.