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 | ||||
Windows: Terminal + IDE Setup
I've done this so often, its useful to track somewhere.
- Install Visual Studio: https://visualstudio.microsoft.com/downloads/
- 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
- 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
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}}
- On the command line - temporarily as an administrator - call:
Set-ExecutionPolicy RemoteSigned
- This allows the .ps1 file to be executed
- Restart the terminal
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?
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...
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...
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 (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.
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...