Tech

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

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. Was I cut out for this? Was this really the direction I wanted to go? What was wrong with me? Ultimately, I decided to upgrade via a Masters, and then the better part of a PhD in computer graphics, but easily THIS could have been a moment where I decided to leave the industry. I had seen other colleagues leave - the IT dev who quit after a few years, tired of the disorganization within her team; the software dev who pivoted to sports organization after she experienced burnout. My experience at this company was hard, with long hours, working in isolated conditions, on technically challenging problems in a code base I was not familiar with and in a language I was still maturing into. Why should I stay? Why would I stay?

Last year, I took a risk and switched jobs. The tech stack is entirely new-to-me. The team and its dynamics are incredibly different than my last job. The problems are interesting and challenging but I feel confident I can reach out and collaborate with my team when I hit an impasse. I'm not working crazy overtime hours. In the back of my mind, I hear myself worry about PIP, and not doing enough and not being as incredible as those expectations were all those years ago. And yet, during this year's performance review, my manager kept re-iterating how great I'm doing, contributing well to the team and without any negotiations, I received an above average pay bump.

So what is the takeaway? When times get tough, step back, evaluate a game plan, and try again. If someone goes to train to become, say, an electrician, sure they might pivot and leave the industry. But more likely if they aren't enjoying their immediate work, there are so many other areas to try: self-employment, part of a company, part of a building/site staff, teaching/mentoring, sales, etc. or just finding the right team with the set of expectations that suit. Just because one experience may be hard or difficult, doesn't mean that all will be the same. In hindsight, perhaps it was that I had enjoyed and thrived at a number of my co-op jobs, so I knew it is possible to find good places to work in the industry. So although my initial reaction was to upgrade, if I had been a bit more mindful, I might've recognized that the skills I acquired at that difficult position would aid me in my future applications. And in time, help me find a position, a team and a company I'm more aligned with.

The tough days aid our personal and professional growth - provided we're mindful to pay attention and remind ourselves we are indeed capable.

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 (work's)
    • 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 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
  • 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 (work's - but bought for me?)
    • 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 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

How to RDP fullscreen with a subset of monitors

Scott Hanselman has put together a quick and easy writeup on how to use remote desktop with just a subset of available monitors here. Should the link ever go down, I wanted to document how I use this myself, borrowing from Scott's description. Read more...

March 27, 2021, at 03:19 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