But my pessimism may be unfounded or based on ignorance. At some point AI will probably get better at these things as well, either with better LLMs or by augmenting LLMs with outboard spatial reasoning modules that they can interact with.
189 karma · joined June 1, 2022
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Except for interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field. Masters or PhD is a plus. (Roughly 25% of our staff have PhDs.)
Technologies: Lots of C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and analysis projects use Python and C++. Web projects use Java and Typescript/React. We're a bit behind the curve on developer AI adoption, and we're okay with that.
Apply online: at https://www.stellarscience.com/careers/.
But my pessimism may be unfounded or based on ignorance. At some point AI will probably get better at these things as well, either with better LLMs or by augmenting LLMs with outboard spatial reasoning modules that they can interact with.
Of course that's true of both sides of this discussion too.
I really value DRY, but of course I have seen cases where a little duplication is preferable. Lately I've seen a steady stream of these "duplication is ok" posts, and I worry that newer programmers will use it to justify copy-paste-modifying 20-30-line blocks of code without even trying to create an appropriate abstraction.
The reality of software is, as you suggest, that there are many good rules of thumb, but also lots of exceptions, and judgment is required in applying them.
It's not easy to deduplicate after a few years have passed, and one copy had a bugfix, another got a refactoring improvement, and a third copy got a language modernization.
With poor abstractions, at least you can readily find all the places that the abstraction is used and imorove them. Whereas copy-paste-modified code can be hard to even find.
Microsoft tried hiding less commonly-used menu options a decade or so with Office and it was so terrible they abandoned it - only to try the same approach with the Windows 11 Explorer menu.
I absolutely hate that rigid "Basic" vs. "Advanced" distinction, but one of our image processing UIs was so complicated a customer really pressed us to add that. We tried and tried and couldn't come up with something better, so we settled on an approach that I still feel is suboptimal.
So I welcome seeing what AI/LLMs may be able to contribute to the UI design space, and customizing per user based on their usage seems like an interesting experiment. But at the same time I'm skeptical that AI will really excel in this very human and subjective area.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Except for interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field. Masters or PhD is a plus. (Roughly 25% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and analysis projects use Python and C++. Some projects use Java or Typescript/React.
Apply online: at https://www.stellarscience.com/careers/.
Some older C++ frameworks give all their objects a common base class. If that inheritance isn't virtual, developers may not be able to multiply inherit objects from that framework. That's fine, one can still inherit from classes outside the framework to "mix in" or add capabilities.
I've never understood the diamond pattern fear-mongering. It's just a rarely-encountered issue to keep in mind and handle appropriately.
We've had several candidates with completed bachelor's degrees apply for internships, prove themselves, and get full-time jobs that way. This "back door" job hiring pathway might work elsewhere as well.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience, or a Masters or PhD in lieu of work experience. (Roughly 25% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and analysis projects use Python and C++. Some projects use Java or Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience, or a Masters or PhD in lieu of work experience. (Roughly 25% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and analysis projects use Python and C++. Some projects use Java or Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, some projects use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Even so, I have to constantly hound the AI to write concise code, to reuse code, to consolidate duplicate code blocks. When I ask it to remove the useless comments, it also removes the useful comments, so I have to goad it back into adding back individual helpful comments.
I had AI write some Python unit tests and it showed me how to mock, which I had never done in Python. That's great! But when I examined the tests, they were so "white box" and brittle that almost any change in implementation would break the tests.
When coding in a familiar language (C++), I tried turning on the auto-AI assistant (for our one project where security rules allowed it) and while I was impressed that it would auto-complete whole blocks of text based on my actual code base, not once was I able to accept those blocks as-is.
So for me at this point AI is at best a net +2% productivity improvement, though I surely have lots to learn about other ways in which it could be useful.
Similarly coding-focused LLMs can access backend engines that actually run the code and get feedback, either to show the user or to internally iterate.
Having a whole host of such backend processors would be great. Users still only ever have to interact using natural language, but get the power of all these specialized tools in the backend. There are some tasks LLMs can do, but special-purpose algorithms may do better, faster, and/or with less energy usage.
I just tested this with my internet connection disabled and it still worked. Since it's doing local processing, I suspect it uses traditional OCR algorithms rather than LLMs.
As the article concludes, LLMs aren't magic, they're just one useful tool to include in your toolbox.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, some use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
6.001 taught 'define' and 'let' but didn't teach 'set!' until week 6 or so. So we learned functions, variables, scopes, recursion, lambdas, strings, numbers, symbols, lists, map, filter, flatten, and more - all without ever modifying a variable. That's very "functional".
Once we learned that it was possible modify existing variables, we learned object-oriented programming; objects were just lambdas with closures that took messages indicating which function to call. We then learned a fake assembly language written in scheme that had both an interpreter and a compiler, also written in scheme. While "procedural" feels wrong, I'm not sure what label one could apply to all this...
I recall learning that the four corners of the screen are the most valuable screen real estate, because it's easy to move the mouse to those locations quickly without fine control. So it's user-hostile that for Windows 11 Microsoft moved the default "Start" menu location to the center. And I don't think they can ascribe it to being mobile-first. Maybe it's "touch-first", where mouse motion doesn't apply.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5-6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, some use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5-6.9, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, some use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5-6.8, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, some use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. AI/ML and other projects use Python, others use Java or Javascript/Typescript/React.
Apply online at https://www.stellarscience.com/careers/.
And as industry took the lead in language innovation, government removed its Ada requirement.
Nice! We're still small so we somehow can keep that level of trust, but I always worry about how things may change for the worse as we grow. Mimicking the open source model as much as we can, even within a small private company, has worked well for us so far.
> > ... clang-format and clang-tidy to automate some of the simpler things, also goes a long way.
> 100% agree. It's totally worth it even if you disagree with the specific formatting decisions made.
So true! 5-6 years ago we had to make open source contributions to both clang-format and clang-tidy for several months to get them to support closer to our preferred style before we could get the "ok, close enough" buy-in across the company to implement automated formatting. (Mostly bug fixes for evidently rare flag combinations, but also a few small new features.)
In retrospect it was completely unnecessary - simply relying on automated formatting is sooo much better than any specifics of the formatting. I'm still glad we did though, as it made both tools better. We earned the maintainers' trust with a few early PRs, and remained active contributors for a while, but haven't contributed much lately.
(Posted on Firefox mobile... Thanks!)
IIRC if we didn't think we'd need a new version anytime soon, to reduce costs sometimes we wouldn't purchase MSDN renewals.
I think Microsoft's licensing 20 years ago shows the prevailing view then was that companies wanted the certainty of perpetual licenses.
> A lot of inconsistency is the result of unwillingness to fix other people's stuff
Agree, so we find it best to practice "no code ownership" or better yet "shared code ownership." So we try to think of it all as "our stuff" rather than "other people's stuff." Maybe you just joined the project, and are working around code that hasn't been touched in 5 years, but we're all responsible for improving the code and making it better as we go.
That requires a high trust environment; I don't know if it could work for Firefox where you may have some very part-time contributors. But having documented standards, plus clang-format and clang-tidy to automate some of the simpler things, also goes a long way.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. Some projects use Python, Java, or Javascript.
Apply online at https://www.stellarscience.com/careers/.
They were able to hire Permanent Residents, but failed to mention in their ads that they could also hire a narrow subset of asylees and refugees who are considered US Persons despite not being Permanent Residents. (EDIT: I think the definition of "protected individual" at https://www.ecfr.gov/current/title-22/chapter-I/subchapter-M... is the relevant one.)
Our jobs are in a different category that is limited to US citizens.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, laser systems modeling, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, computer vision and image processing, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5, CMake, git, OpenGL, CUDA, Boost, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. Some projects use Python, Java, or Javascript.
Apply online at https://www.stellarscience.com/careers/.
Company: We're a small scientific software development company that develops custom scientific and engineering analysis applications in domains including: computer vision and image processing, space situational awareness (monitoring the locations, health and status of on-orbit satellites), image simulation, high power microwave systems, modeling and simulation, AI/ML including physics-informed neural networks (PINN), human body thermoregulation, laser systems modeling, high performance computing (HPC), computer aided design (CAD), and more. All exciting applications and no CRUD. We emphasize high quality code and lightweight processes that free software engineers to be productive.
Experience: Other than interns, we currently require a Bachelors degree in physics, engineering, math, computer science, or a related field, plus preferably 3+ years of work experience or a Masters or PhD in lieu of work experience. (Roughly 30% of our staff have PhDs.)
Technologies: Mostly C++23, Qt 6.5, CMake, Boost, git, OpenGL, CUDA, Jenkins. Windows and Linux, msvc/gcc/clang/clangcl. Some projects use Python, Java, or Javascript.
Apply online at https://www.stellarscience.com/careers/.