328 karma · joined March 20, 2022
I work in accountancy and while its possible to audit the output of the spreadsheet, (as I'm sure it's possible to audit the output in other domains) as an erstwhile Software Engineer I can't help but think it would be better if I could better verify the integrity of the spreadsheet itself. It's far too easy to introduce unnoticed errors.
Other people have different views on this but I love the idea of spreadsheets but I don't like any spreadsheet software. I think there's massive room for improvement. But if you were to ask me how to improve it specifically, I couldn't really pinpoint anything.
I had a go at doing something in this space to scratch a very specific itch but of course, it doesn't address any of my complaints here. Rather, it tried to tackle another of my complaints - the lack of good support for different number bases https://github.com/JetSetIlly/Ivycel/
The emulation is complete and the 6507, TIA, RIOT and memory sub-systems are all accurate. It supports all the known cartridge formats, including those that make use of on-cartridge ARM processors and also specialist cartridge types like MovieCart.
The debugger is extensive and, uniquely, allows the emulation to be stepped at a sub-CPU-cycle level. Programs running on the ARM can be inspected at the source code level if DWARF data is available; breakpoints can be added and local/global variables can be inspected.
For the player, games can be played with a simple but effective series of CRT effects (implemented with GLSL shaders) and quick and responsive rewinding of gameplay. In fact, the rewind system plays an important part in the debugger too.
From the perspective of a Go developer, I believe it shows that the language can produce good and useful applications for the desktop. There is an undoubted performance penalty introduced by the use of supporting C libraries (SDL, Dear Imgui, etc.) but it is, in my opinion, not terrible. Other people may disagree with that and I'd be interested in hearing their thoughts.
The project is not worthy of a v1.0 tag but I now consider it complete if not bug-free. I know I've made some poor engineering choices but I believe many of these mistakes were due to my inexperience with the language - I would certainly make different choices today.
I look forward to constructive criticism from the programmers and engineers on Hacker News before moving onto my next project.
I'm not sure I would agree with that. go:generate is a core part of Go since v1.4 and the enum generators are the kind of thing that was intended. https://go.dev/blog/generate
That said, enums would be a welcome improvement to the language. But even then, I think go:generate has a place.
As someone who works in accountancy (as a bookkeeper/accountant) I have to be brutally honest and say that I've been very disappointed in the UI of all the accounting software packages I've used. None of them give me the immediacy or simplicity of a well organised filing cabinet, they really don't.
I'm not sure what a good solution would look like, but I can't help thinking that making the double-entry system more visible and apparent to the user would be a good start.
There's also the GNU implementation in GCC that's under the GNU GPL 3 licence. Moreover, the specification itself doesn't seem to have any licencing requirements at all.
So you're absolutely right: Go is the very opposite of proprietary.
The 2600 kernel that runs on the 2600 is excellent but the encoding method is what makes a real difference here. Lodefmode did a great job with this. The use of playfield/background and player colour is exceedingly clever.
The PlusCart also includes a WiFi chip for Internet access.
Exciting times in the world of the Atari2600.
The error you've described is an "error of original entry" and will be invisible if you only look at the trial balance. It can ultimately be caught when you compare the banking ledger with what's actually in the bank.
Other errors that don't appear in the trial balance can be incredibly hard to detect and in fact, may never be noticed. This is where the real art of bookkeeping is IMO.
The types of errors that do affect the trial balance are things like forgetting to enter a purchase in the purchase ledger but entering the transaction into the banking ledger correctly. Silly errors really, but we can all need help to stop us making those.
I've used glyphs as small as 4x5 but I've struggled to come up with anything smaller for most characters.
Here's an example of a full text adventure for the 2600 if anyone's interested https://github.com/JetSetIlly/Adventureland-2600
Better or worse with an even smaller font? I'm not sure.
I've seen tools that can compare the git commit dates of code with nearby comments and that's a good start. However, there are potential problems with that, such as code and the comments that discuss the code not being near each other; or the code being updated and there being no need to update the comment
I think literal programming might help here, but that's an entirely different topic really.
Looking for more advanced tools that that and I suppose we're into the world of AI - asking the tool to understand both the code and the comment and to compare the underlying meaning.
Code review is an option but outside of an organisation that's difficult to do and besides, I think the problem would be best solved by something that is repeatable and part of the build process. And I'd love to be able to have a git commit hook that can say, "hold on! you've updated code but there's a comment that now looks old". That's the dream.
And The Manhattan Project was originally the "Manhattan Engineering District". Although that sounds a little bit exotic, at least to my ears.
It seems to me that compatibility with any cartridge would require a recreation of the actual VCS hardware. That sounds expensive to me and is probably why Atari haven't gone down this route. But as you say, that leads to a half-baked solution.
The other option is an emulator that can communicate with the cartridge in real time - but that doesn't exist and I doubt Atari have gone to the trouble of making one (we're all assuming they're using Stella at this point, but I don't think that's been confirmed).
If the market for this product is people who only want to play the older ROMs on a HDTV then I'm sure the 2600+ is a fine product.
As you suggest, one way around that is to fingerprint the cartridge and then to load a binary into the emulator from internal memory (if they're using Stella then the emulator is capable of emulating the processors on those chips) but I don't believe that is an option provided by the 2600+. And if it was, it's a very limiting option for the end user because new homebrew games wouldn't work.
My concern is that it's not clear to me how this will look on my computer. Currently, I download the source tarball and build with the latest Go toolchain I have previously installed. I then change the path to point to the newly built toolchain.
So, in the future, what is it I'm downloading? How does the toolchain get updated exactly? Where does the new executable reside? What happens to the toolchain that I explicitly built and installed? How does Go1.21 change my path?
As I say, I like the idea in principle but there are details that I think are important, that don't seem to have been explained anywhere.
From the Go Toolchains documentation:
"When using GOTOOLCHAIN=auto or GOTOOLCHAIN=<name>+auto, the Go command downloads newer toolchains as needed. These toolchains are packaged as special modules with module path golang.org/toolchain and version v0.0.1-goVERSION.GOOS-GOARCH. Toolchains are downloaded like any other module, meaning that toolchain downloads can be proxied by setting GOPROXY and have their checksums checked by the Go checksum database."
I don't know for sure though.
go mod init <project name>
Still simple but for better or worse it's now a necessary part of the process.Telemetry is one of those topics that comes with a lot of baggage. Coupled with Google's baggage and we see the inevitable response. I have a similar impression as you - people saw the word "telemetry" and thought they'd read enough.
I thought Cox's posts were great. I came in thinking, "telemetry? hell no!" but came away thinking he made a good case. People can still disagree over it but some of the misinformation is absolutely unbelievable.