Tech Review

Exploring the various technologies and terminologies needed for a day in the life of an Erika-style developer.

Note: Page is under development. Please bear with me, thanks!

Theory

Math

Math for 3D

Data Structures

Algorithms

Math for Computer Vision

Programming Paradigms

Development Principles

Design Patterns

Architectural Patterns and Paradigms

Multi-Threading Paradigms

Multi-Process Programming Paradigms

Development Basics

Modern C++

Build Processes and Paradigms

Third Party Libraries

Data Management

UI Shell Abstractions

Cross Platform and other Interoperability

Memory Leaks and other Error Handling

Unit Testing

Computer Graphics

Basic Pipeline

Modern Tech Stack

Modelling

Rendering

Animation and Simulation

Miscellaneous

Performance and Optimization

Techniques

For GPU and CPU

Profiling

Computer Graphics++

GPU Programming and Languages

Game Engines

3D Data Visualization Techniques

Computer Vision

Augmented and Virtual Realities

UI

UI Paradigms

UI with Qt

Developing UI with MS Windows

Cool things with UI

Cloud and Web Dev

Concepts

Cloud Services and Service Management

Tech Stack

General Development

Professional Tips

Tech Tips

IDEs and other Tools

Windows: Terminal + IDE Setup

I've done this so often, its useful to track somewhere.

  1. Install Visual Studio: https://visualstudio.microsoft.com/downloads/
  2. Install Windows Terminal: https://apps.microsoft.com/detail/9n0dx20hk701?rtc=1&hl=en-ca&gl=CA
    • Set the Developer PowerShell as the default; optionally set the default startup directory to your source folder
  3. Install vim: https://www.vim.org/download.php#pc
    • Be sure to add the .bat so it'll add vim to the command line path
    • vim ~/.vimrc then add the following: set nobackup nowritebackup
    • This ensures backup ~ files aren't created
  4. vim $PROFILE
    • This will create the profile file in the right place. Good content includes:
    # Comments go here
    Set-Alias -Name vi -Value vim
    
    # Parameter aliases must use function instead
    Function aliases {vim ${PROFILE}}
    
  5. On the command line - temporarily as an administrator - call: Set-ExecutionPolicy RemoteSigned
    • This allows the .ps1 file to be executed
  6. Restart the terminal
July 03, 2024, at 07:29 PM

Pivots

When we start at a new company, the environment is as it is - we learn how to work within it, become experts in it if we aren't already, and develop ways that help us thrive in the environment.

As the years go on, the environment changes - the build systems need overhauling, or the IDEs or software versions need and are upgraded, or a new tool or process is introduced, or the organization is re-worked -- which might impact any number of things from how and who you interact with, to your retirement savings approach, to your long term professional motivations.

Each pivot, or adjustment, or "ask" from the company involves needing to - likely - do a messy transition, from what you used to know, to what TheNewThing is. Holding space in your memory for what you're transitioning from, while carving out space for what's being adjusted. Sometimes it can feel like changing the oil in a car while still driving. It can be tough - and as an aside, its often interesting when we don't celebrate or recognize the work involved in such transitions.

And over the years, doing this again, and again, and again, can be exhausting, demoralizing and make us weary of the next NewThing or even seeking out a NewThing.

But what I find particularly interesting is when you pick up and leave and change to a new company, you free up much of the mental space that's been carved out. You're genuinely open to a new way to do things, to whatever the new environment is like, and accepting of it, where its at.

So the question is: are there better ways of accepting a pivot or an adjustment or "ask". How can one repeatedly and actively accept a team or company precisely where its at - even during a transition - rather than feeling bogged down in trying to re-organize yet another approach. How do we stay open and excited about all these pivots, especially through the years?

January 13, 2023, at 08:00 PMerika

Interesting Vlog / Podcast

Interesting interview by Lex Fridman with John Carmack - one of the programmers behind Doom, Quake, etc, currently working at Meta on the metaverse and AI.

Some of the interesting takeaways so far:Read more...

August 16, 2022, at 06:02 PMerika

Don't Quit

Shortly after undergrad, I took on an absolute dream job - computer graphics development surrounded by other smart-cookie graphics developers working on the state of the art in 3d modelling. And I worked my ass off trying to contribute as much as I could as well as I could, fixing bugs, adding small features, supporting various platforms and customers across vast time zones. I learned so, so much, and contributed decently well, especially given I was told - as a junior - not bother the non-junior engineers. But, c'est la vie, it was not enough for the company and I was put on a Performance Improvement Plan (PIP). Unaware what exactly that meant, despite best efforts to survive, it wasn't enough.

My confidence was shattered. Read more...

March 30, 2022, at 02:43 PMerika

Because text is fun

Text editors look easy - type some characters in a box. Done. But when you drill into it, implementing text editing well is highly involved. This showcases a few examples of why its hard, but honestly it barely scratches the surface. This is why we build things well, build them once, and re-use to high heaven.

September 08, 2021, at 03:25 PMerika

GitHub vs. Microsoft's TFS

Word to the wise: Github is not the golden unicorn others might think it is when comparing it to Microsoft Teams.

Sure, there are some great things about it (comparing between branches/changesets for a given pull request), but its teh sux for leaving and responding to code review comments (Did you really need to disable a comment chain when I've updated one variable in the adjacent block?). I also miss the in-editor reviewing, so its easier to test out changes locally (vs. online on github). I'm just saying. Not a golden unicorn...

August 26, 2021, at 05:35 PMerika

Fun 3D File Format Functionality

So apparently Pixar created Universal Scene Description file format, which is converging on being pretty well used across a variety of 3D products these days. Its lacking in some extraneous functionality (animation - couldn't figure out a common schema; and seemingly a variety of projection approaches/camera descriptions amongst others), but is a solid foundation for converging on file formats. Something the industry has struggled with FOREVER.

Anyhoo, some relevant links:

  • Overview
  • Geometry - API documentation. Discussion includes supported primitives (eg. for fast collision detection/common representations), as well as mesh, nurbs, etc. and conventions adopted (eg. right hand rule, RH coordinate system for winding)
  • Rendering Overview - API documentation. Discussion includes camera setup and pixel ratios

July 05, 2021, at 11:47 AMerika

2021-06-08 Cool Shit Summary

A few things to be interested in:

June 08, 2021, at 11:58 AMerika

Fun Specs for WFH

Had a conversation earlier today about how I've got my system setup for working from home. So:

  • Desktop (mine)
  • Surface laptop (work's)
    • Sits on a cookie cooling rack to deter overheating
  • Dell Universal Dock 6000 (mine)
    • Contains: HDMI and DisplayPort ports, USB ports, LAN; using USB or USB-C to connect to the Surface laptop
    • My three home monitors are all hooked up to the display port
    • Connected to Surface laptop via USB-C
  • Wireless keyboard (with two Windows keys, thank you very much) and mouse (mine)
  • KVM Switch (mine)
    • Only using the mouse and keyboard connectors
    • Connected to desktop and dell dock
    • Video uses VGA, and is therefore not connected - someday I might get an HDMI-oriented KVM, however...
  • Monitors - 3 Dell monitors (mine - mostly used from Kijiji)
    • Each hooked up to dell dock and desktop via HDMI and DisplayPort (yes, its a lot of video cables...)
    • Each monitor has been "programmed" so its buttons allow for easy switching of the input source via preset modes
    • 1080 x 1920; 2560 x 1600 and 1200 x 1920
  • Webcam (mine)
    • This is manually swapped between work and and home PC. I don't use it very often for home-based things, so its not really a bother
  • Headphones (mine)
    • Sony WH-1000XM3
    • Connect via bluetooth, so when swapping, re-pair with the respective computer

For working from home:

  • Laptop runs Teams, Slack, and other similar communications. All A/V goes directly through it, rather than via the remote desktop (which doesn't make sense imo).
  • A subset of monitors are used for displaying the work environment / remote desktop. See notes on how to do that here.
  • I have a powershell script on my remote machine so when RDP invariably rearranges my windows layout, it resets to how I normally use it. Maybe I'll incorporate that here one day (uses GetWindow, SetWindow), but it sounds like some people have their own setups for this.
April 28, 2021, at 06:07 PMerika

NVIDIA's GTC 2021 Highlights

So, I haven't yet watched all these, but when the program came out, this is my hit-list of highlights for this year's FREE NVIDIA GPU Technology Conference (GTC), which ran Apr 12 - 16th, 2021. I may have simplified the titles a touch...Read more...

April 20, 2021, at 05:42 PMerika

BlogIt Side bar

Recently Written

erika: end hiding comments and categories

erika: end hiding comments and categories

Group-Specific Sidebar

Blix theme adapted by David Gilbert, powered by BlogIt