Technology Tales

Notes drawn from experiences in consumer and enterprise technology

11:49, 27th January 2022

Hugo Multilingual Part 1: Content translation

Setting up multilingual support in Hugo involves configuring language settings, translating content through filename or directory-based systems and ensuring proper linking between translations. Resources such as images or data files can be shared across translations or localised individually using page bundles, while data files require manual handling to match language-specific content. URLs can be adjusted to reflect localised slugs and the .Sites method allows access to default language content from other language contexts. The process also includes managing theme strings for localisation in subsequent steps, ensuring consistency across all language versions of a site.

11:48, 27th January 2022

How to Convert HTML to Markdown in Python?

Converting HTML to Markdown in Python is achieved using the third-party markdownify package, which must be installed via pip before use. Once imported, the process involves passing an HTML string to the markdownify() function, along with optional parameters such as heading style, to produce a properly formatted Markdown output. For example, HTML elements such as headings and unordered lists are converted into their Markdown equivalents, with headings rendered using hash symbols and list items preceded by asterisks.

11:13, 22nd January 2022

Markdown Guide

This free and open-source resource provides comprehensive guidance on using Markdown, a straightforward markup language designed to simplify document formatting for web use. It includes a cheat sheet, explanations of basic and extended syntax features such as tables and code blocks and tools to help users create and enhance content. The guide is accessible to beginners and experienced users alike, with options to subscribe for updates, and is maintained as a project by Matt Cone under a Creative Commons licence.

11:06, 22nd January 2022

Layouts in Hugo

In Hugo, layouts define the structural framing of a page, such as headers and footers, while content files store the actual written material in its purest form using front matter metadata and markdown. Different layouts can be applied across multiple pages, with a default hierarchy determining which layout is used when no specific one is assigned. The two primary default layouts are single for standard content pages and list for index-style pages such as a home page.

To avoid duplicating similar layouts, a base layout file can be created to hold shared HTML structure, with child layouts only defining the unique portions of each page through a block system. Styling is handled by placing Sass files in an assets directory, which Hugo processes and links automatically through the base layout, meaning any style changes apply consistently across all pages that inherit from it. Navigation between pages is not covered within layouts themselves but is instead handled separately through Hugo partials.

11:05, 22nd January 2022

How to change Bootstrap default input focus glow style

In Bootstrap, form elements such as input fields, text areas and select dropdowns are highlighted with a blue glow by default when they receive focus. This default styling can be overridden by applying custom CSS to the .form-control:focus selector, specifically by adjusting the border-color and box-shadow properties to achieve a different visual effect. For example, setting a pink border colour alongside a corresponding box shadow value will replace the default blue glow with a custom pink one, allowing developers to tailor the appearance of focused form elements to suit a particular design.

21:09, 16th January 2022

Numba is an open-source, just-in-time compiler that converts a subset of Python and NumPy code into fast machine code using the industry-standard LLVM compiler library, allowing numerical algorithms to reach speeds comparable to C or FORTRAN. It works by applying simple decorators to Python functions at runtime, requiring no separate compilation step or additional compilers. Designed with scientific computing in mind, it integrates well with NumPy arrays, Jupyter notebooks and distributed frameworks such as Dask and Spark. Numba supports parallelisation across multiple CPU cores, SIMD vectorisation for further speed gains and GPU acceleration via NVIDIA CUDA, all from within standard Python code. It is compatible with a broad range of hardware including Intel, AMD and ARM processors as well as NVIDIA GPUs, and runs across Windows, macOS and Linux, with precompiled binaries available through conda and pip.

21:09, 16th January 2022

Learn Julia For Beginners – The Future Programming Language of Data Science and Machine Learning Explained

Julia is a high-level, dynamic programming language designed to combine the speed of C/C++ with the ease of use associated with Python, making it particularly well-suited to computationally complex problems in fields such as chemistry, biology, machine learning and data science, though it is also capable of supporting web and game development. The language features a flexible variable system with dynamic typing, support for Unicode and emoji variable names, and straightforward conditional statements and loops that use an end keyword rather than brackets or braces.

One of its most powerful features is multiple dispatch, which allows functions of the same name to be defined with different argument types, enabling developers to write both generic and type-specific code without cramming every scenario into a single function. Julia also supports structs, which function similarly to classes in object-oriented languages, allowing developers to define custom objects and types with optional constructors and typed attributes.

Package management is handled through a built-in manager accessible directly from the read-evaluate-print loop, with commands to add, remove and inspect installed packages, and the language allows packages to be loaded using either the using or import keywords, with the key difference being how functions are brought into the current namespace. For those wishing to explore the language further, official documentation and guided learning resources are available through the Julia project's own platform.

14:15, 16th January 2022

JuliaAcademy is a free online learning platform dedicated to teaching the Julia programming language, offering a range of courses suited to different skill levels and interests. Available courses cover topics including the fundamentals of the language for those with prior programming experience, data science methods and visualisation, an introductory course aimed at hesitant beginners, computational modelling, machine learning foundations and a short guide to getting started with the platform itself. Each course is led by a named instructor, several of whom hold doctoral qualifications, and all courses are available at no cost to learners.

14:13, 16th January 2022

How to install NumPy package in Julia?

Installing NumPy in Julia involves verifying the presence of the language on a system and leveraging Python integration to access the library. Users first check for an existing Julia installation by executing commands in the terminal, then proceed to install the PyCall package through Julia's package manager, which acts as a bridge to Python's ecosystem.

Once PyCall is added, it enables the import of NumPy using a specific function, allowing Julia to utilise Python's numerical computing capabilities. This process highlights Julia's compatibility with Python libraries, facilitating tasks such as data analysis and machine learning within its environment.

The steps outlined focus on the technical workflow required to integrate external Python modules into Julia, ensuring that users can harness the functionalities of NumPy without relying on native Julia implementations. The approach underscores the interoperability between Julia and Python, offering a pathway for developers familiar with Python to extend their tool set within Julia's high-performance framework.

14:07, 16th January 2022

The Future of Machine Learning and why it looks a lot like Julia

The Julia programming language is increasingly being considered a strong candidate for the future of machine learning and deep learning, despite its ecosystem being less mature than Python's. Its core framework for deep learning, Flux.jl, is written entirely in Julia, making its internals far more accessible than those of TensorFlow or PyTorch, which rely heavily on C++ with Python wrappers.

Julia offers native support for multidimensional arrays, eliminating the need for additional libraries like NumPy, and its data handling tools such as CSV loading and DataFrames.jl are significantly faster than their Python counterparts. Flux is designed with simplicity and extensibility in mind, allowing developers to build custom functions that integrate seamlessly into the broader ecosystem, and unlike TensorFlow or PyTorch, it is not backed by a single large corporation, making it more genuinely open to community contribution.

The language also enables powerful combinations with scientific computing packages, such as DiffEqFlux.jl, which merges neural networks with differential equations to support physics-informed machine learning. Where Julia currently falls short is in community-generated learning resources and convenience utilities for data loading and image processing, areas where TensorFlow and PyTorch remain more user-friendly, though active development continues to close these gaps.

  • The content, images, and materials on this website are protected by copyright law and may not be reproduced, distributed, transmitted, displayed, or published in any form without the prior written permission of the copyright holder. All trademarks, logos, and brand names mentioned on this website are the property of their respective owners. Unauthorised use or duplication of these materials may violate copyright, trademark and other applicable laws, and could result in criminal or civil penalties.

  • All comments on this website are moderated and should contribute meaningfully to the discussion. We welcome diverse viewpoints expressed respectfully, but reserve the right to remove any comments containing hate speech, profanity, personal attacks, spam, promotional content or other inappropriate material without notice. Please note that comment moderation may take up to 24 hours, and that repeatedly violating these guidelines may result in being banned from future participation.

  • By submitting a comment, you grant us the right to publish and edit it as needed, whilst retaining your ownership of the content. Your email address will never be published or shared, though it is required for moderation purposes.