Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com
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.
I find AI helpful when coding in unfamiliar languages or topics, as it generates initial code that roughly works, that I can then iterate on.
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.
With the latest Microsoft Word, if you open a PDF that is a scanned image of a document and convert it to Word format, it does a pretty decent job of not only OCR (optical character recognition) but also picking matching fonts for various sections.
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.
It's pretty easy to imagine an evolved mess of an open ad hoc but broadly adopted ecosystem where LLM are surrounded by a bewildering array of Node-like domain-specific extensions.
Security concerns aside (...) that sounds pretty useful.
Right, for example early LLMs were notoriously bad at math, as they had been trained on language. They'd get simple math right, likely due to "rote memorization", but couldn't do basic arithmetic with 3-digit numbers. The common AI agents seem much better now. I suspect they added separate math processing logic and trained the LLMs to recognize when and how to delegate to it, though I'm not certain of that.
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.
Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com
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.
You're absolutely right that "procedural", at least as I understand the word in 2025, is a poor label for 6.001.
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...
Given their definition of procedural, the term makes sense. The book is about processes and procedures that describe how they're executed or things are computed, versus describing what is computed (mathematical sense, declarative or more declarative, closer to some popular meanings of functional programming today).
They define functional programming as "[p]rogramming without any use of assignments". Which would be a subset of procedural programming in the sense that they mean it.
They also contrast imperative and functional programming (the first being with assignments and mutations, the latter without). Both imperative and functional programming can reasonably fall under procedural programming using their definitions.
The fuller excerpt concretely put in §3.1.3 "The Costs of Introducing Assignment":
"So long as we do not use assignments, two evaluations of the same procedure with the same arguments will produce the same result, so that procedures can be viewed as computing mathematical functions. Programming without any use of assignments, as we did throughout the first two chapters of this book, is accordingly known as functional programming."
Btw, I've just read the first section of Chapter 5 [Computing with Register Machines] for the first time, and think it's the best introduction to assembly that I've seen (and I've seen a few).
Calling it 'fake' is dismissive. Also, it isn't written in Scheme, but merely described in the native data format: lists of symbols.
The next section builds a virtual machine that is written in Scheme to run the code. One of the beauties of Scheme/Lisp (and source of much of its power) is the simplicity of the syntax. It allows it to be incredibly succinct.
The last section in the chapter builds a compiler to translate Scheme into this virtual machine assembly code so you can run it in the virtual machine simulator. An ouroboros.
I can see how 6.001 was a bit like jumping into the deep end to learn to swim.
Starting from, "To design a register machine, we must design its data paths (registers and operations) and the controller that sequences these operations." In less than 5,000 words it proceeds to implementing recursive procedure calls in what amounts to assembly:
(controller
(assign continue (label fact-done)) ; set up final return address
fact-loop
(test (op =) (reg n) (const 1))
(branch (label base-case))
(save continue) ; Set up for the recursive call
(save n) ; by saving n and continue.
(assign n (op -) (reg n) (const 1)) ; Set up continue so that the
(assign continue (label after-fact)) ; computation will continue
(goto (label fact-loop)) ; at after-fact when the
after-fact ; subroutine returns.
(restore n)
(restore continue)
(assign val (op *) (reg n) (reg val)) ; val now contains n(n - 1)!
(goto (reg continue)) ; return to caller
base-case
(assign val (const 1)) ; base case: 1! = 1
(goto (reg continue)) ; return to caller
fact-done)
A translation of:
(define (factorial n)
(if (= n 1)
1
(* (factorial (- n 1)) n)))
It's quite a jump in knowledge, but explained very clearly through a series of guided examples. It's close to equivalent code in x86 or arm, but much easier to read.
well it's really very hard to find the worst idea because there are so many bad ideas in programming languages. of course the ones that bother me the most are the ones that are designed to keep me from doing what i want. i was after all a libertarian programmer. okay. and so i don't want anybody to tread on me, but the worst features of languages that i can think of -- the really worst thing -- is complex syntax. okay. and as alan perlis quipped, syntactic sugar
yields cancer of the semicolon. okay. the problem with complex syntax is that it hides possibly important to understand mechanisms, but more importantly it makes it very difficult to write programs that manipulate programs -- that read them, that write them and analyze them. and that, in fact, i often have programs that write programs that i want to run in-line. for example, numerical programs that are constructed from symbolic algebra expressions. okay. so that's a nice feature of lisp, for example, which has lots of parentheses, is a uniform representation of programs as data and the ability to execute code that you've just constructed. and as a consequence i would say my mantra here is syntax without representation is tyranny.
It's very "functional" in the "functional programming" sense, but not at all in the sense that 6.003 is about the "functional" descriptions of LTI systems (i.e., that the "signal" output of a "system" is a function of the input, which you can do things like take the Laplace transform of). "Procedural" is the term used in the class's textbook, and the "functions" in Scheme are called "procedures" in the Scheme standard.
We have a user interface design rule that keyboard shortcuts and context menus must only be "shortcuts" for commands that are discoverable via clear buttons or menus. That probably makes our apps old-fashioned.
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.
I think the centered icons on W11 were done for one reason and one reason only: ripping off MacOS (probably because it's what the design team uses themselves and it felt familiar to them). There is no sensible UX reason to do it, and even in MacOS it's a detriment to its interface.
Centered taskbar app indicators work well on 16:9 and wider screens. On such screens, UI elements placed at corners are less prominent, you have to extort a deliberate effort to look there, unlike on tiny, 4:3 of yore. Ever since I got my ultrawide, and long before Windows 11 made this a default, I've been using bottom centered app buttons and Start/widget in the left corner. On a narrower and smaller screens (like a laptop), I find vertical taskbar more ergonomic, and centered/top aligned app buttons don't matter as much there in practice.
I don't think it's a macOS ripoff, they would've also ripped off more of the dock if that was the goal. For instance, you would've been able to do things like "pin the task bar to the side".
I think they wanted the start menu to be front and center. And honestly, that just sounds like a good idea, because it is where you go to do stuff that's not on your desktop already. But clicking a button in the bottom left and having the menu open in the middle would look weird, so centering the icons would make sense.
I think there are better ways to do it and I'm sure they've been tried, but they would probably confuse existing Windows users even more.
Yes! This is how things should be. And additionally, I want to see all the keyboard shortcuts visible on the menu items they activate. And every tool tip that pops up when you hover over a button should also show whatever keyboard shortcut activates that function. It's the best way for novice users to notice and the keyboard shortcuts for the things they care about without having to go elsewhere to look them up.
I think it's user-hostile that 'maximise' is next to 'close'. After moving my mouse so far, I need to start using fine control if I want to maximise it. I want more of the program and, if I fail, I get none of it - destructively!
Corners and edges are rarely used that way. They should be. See "Fitts Law".[1]
My metaverse client normally presents a clean 3D view of the world. If you bring the cursor to the top or bottom of the screen, the menu bar and controls appear. They stay visible as long as the cursor is over some control, then, after a few seconds, they disappear.
This seems to be natural to users. I deliberately don't explain it, but everybody finds the controls, because they'll move the mouse and hit an edge.
Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com
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.
Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com (sorry, summer 2025 internships have been filled)
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.
Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com (sorry, summer 2025 internships have been filled)
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.
Stellar Science | Hybrid (USA) Albuquerque NM, Washington DC (Tysons VA), Dayton OH | Full time, interns/co-ops | U.S. citizenship required | https://www.stellarscience.com
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.
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/.
reply