Introduction
I am not a smart man. But you do not need to be smart in order to write software. In fact, I have found that, more than anything else, curiosity is the engine of productivity in software engineering. It can be easy to get discouraged if you are not careful though. The sheer volume of things to learn in software engineering can be overwhelming to the point of paralysis. Sometimes I find it helpful to remind myself of something I used to say when studying mathematics:
Mathematics is not about understanding more. It is about misunderstanding less.
I like to think that this applies to software engineering as well. Don't try to learn everything. You can't. It's a fool's errand. But, day by day, you should hopefully be able to point to something you misunderstand just a little bit less. I have worked hard to break into the software industry, something I have now been doing professionally for a couple of years, but I have much more "breaking" and "misunderstanding less" to do. This site represents portions of my journey. Feel free to point out whatever mistakes I make. Hopefully we can both learn from them. Here's to misunderstanding everything just a little bit less.
Noteworthy Resources
This site consists primarily of documentation pages (i.e., the "Handbook"), but a blog is also actively maintained. Noteworthy posts from both categories may be found below as well as links to other noteworthy external resources that I maintain (but are not technically part of this handbook).
Handbook Entries
Data Structures Overview
Check out time and space complexity overviews for various data structures and array sorting algorithms.
See Data Structures OverviewSliding Window
Get a more detailed look at the sliding window pattern, a pattern that frequently comes up in coding interview problems.
See Sliding WindowWindow Functions (SQL)
An in-depth guide to SQL window/analytic functions. This is not only a guide but also a useful reference to keep handy (e.g., syntax guidance, basic examples, etc.).
See Window FunctionsBinary Search Template
Binary search may be easy to understand conceptually, but implementation can sometimes be a mess. This template tidies things up considerably.
See Binary Search TemplateFeynman Technique
Tired of not being able to learn things quickly? Give the Feynman Technique a try next time.
See Feynman TechniqueLeetCode Problems by Category
Tagged problems on LeetCode can only be so helpful. Additional contextual details can help, especially if these details are personalized.
See LeetCode Problems by CategoryMath Reference
The topic of "math" is impossibly large on its own. This reference helps corral some mathematical facts that may be of use in everyday engineering.
See Math ReferenceDefinitions
A cumulative list of definitions can be quite useful, especially when you are in need of a dust-up or review.
See DefinitionsBlog Posts
Comments with Giscus
This blog post details how to enable comment sections on doc pages and blog entries on sites powered by Docusaurus (like this one) using giscus.
ReadLight/Dark Modes with Material UI and Docusaurus
This blog post details how to synchronize the default light and dark mode palettes used in Material UI with the light or dark mode being used on a Docusaurus site.
ReadExternal Resources
Docusaurus Input-Output Examples
Collection of input-output examples for use with sites powered by Docusaurus.
VisitKaTeX Reference
Basically the KaTeX documentation site (but everything is ensured to work with Docusaurus).
VisitMySQL Reference
Easy-to-use references to many MySQL functions (e.g., string functions, date functions, etc.).
VisitPostgres Reference
Easy-to-use references to many Postgres functions (e.g., string functions, date functions, etc.).
VisitAlgorithm Design Manual (Book Notes)
Book notes to accompany Steven Skiena's Algorithm Design Manual.
Visit