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 | ||||
![]() | ![]() | ![]() | ![]() | ![]() |
Programming Paradigms | ||||
![]() | ![]() | ![]() | ![]() | ![]() |
Development Basics | ||||
![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ||
Computer Graphics | ||||
![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ||||
Performance and Optimization | ||||
![]() | ![]() | ![]() | ||
Computer Graphics++ | ||||
![]() | ![]() | ![]() | ![]() | ![]() |
UI | ||||
![]() | ![]() | ![]() | ![]() | |
Cloud and Web Dev | ||||
![]() | ![]() | ![]() | ||
General Development | ||||
![]() | ![]() | ![]() |
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.
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.
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...
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
2021-06-08 Cool Shit Summary
A few things to be interested in:
- Siggraph 2021 - Virtually hosted Aug 9 - 13th this year. Advance registration ends June 28th
- Visual Studio 2019 v16.10 released May 25th is C++20 feature compliant. eg. calendars, timezones, format text formatting, co-routines. Microsoft is gearing up for Visual Studio 2022, its next major release.
- Apparently Apple is doing a thing (WWDC 2021), and announcing iOS 15.
- OpenGL Mesa Drivers are being expanded for external support, eg. Vulkan interoperability.
- Vulkan website got a makeover by Khronos, including keeping resources in one place such a projects and tools used in a Vulkan ecosystem.
- W3C with help from Apple, Google, Mozilla, Microsoft and "others" are putting together WebGPU and WebGPU Shading Language (WGSL) to replace WebGL which was based on OpenGL ES.
- Google Maps is playing with WebGL.
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.
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...
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...