@swetland@chaos.social
@swetland@chaos.social avatar

swetland

@swetland@chaos.social

Writes the codes. Recovering OS Engineer (BeOS, HiptopOS, Android, LK, Fuchsia). Embedded systems hacker. Hobbyist Digital Designer. Player of video games. Etc.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

danderson, to random
@danderson@hachyderm.io avatar

Yesterday I ended up taking a random walk through "the rust memory model is more what you'd call "guidelines" than actual rules".

Today I took a wrong turn and ended up on the LKML, in which I learned that the kernel has its own unique memory model, but also now contains rust code which follows the rust memory model (whatever that turns out to be), and also it's necessary to be able to exchange data back and forth between memory models.

Some days, I'm just amazed that computers sometimes work.

swetland,
@swetland@chaos.social avatar

@danderson This is one of my grumbles with modern systems languages... their memory models are often frustratingly at odds with being able to do what you want to do in a kernel environment. Migrating to C++ in Fuchsia's kernel caused a pile of headaches because of this.

swetland, to ImmersiveSim
@swetland@chaos.social avatar

Was chatting with some folks this morning about how much I enjoyed Immersive Sim games (Deus Ex, System Shock, Dishonored, Prey, Control, Deathloop, Fallout 3, etc) and was reminded of the verticality and environmental storytelling that I really enjoyed in Dishonored 2.

So, have some screenshots of some witches having tea on a chandelier in a museum.

Zooming in on a chandelier.
I guess if you're a witch with teleportation magic this is as good a place to enjoy a spot of tea as anywhere else in the building.
Discarded tea tray and stack of books on a ledge.

jacqueline, (edited ) to random
@jacqueline@chaos.social avatar

did you ever go to lan parties?

swetland,
@swetland@chaos.social avatar

@jacqueline Apart from playing some Marathon in a mac lab in college (if that counts) a few times, a number of times at a friend's place in the years not long before the pandemic, which was specifically optimized for such things. Never in the traditional "lugged my desktop PC somewhere" sense.

http://kentonsprojects.blogspot.com/2011/12/lan-party-optimized-house.html

janeadams, (edited ) to random
@janeadams@vis.social avatar

When writing code, do you start with an ontology / function call graph / other diagram? Or does it emerge from your code as you move classes and functions out of a notebook and into a module?

swetland,
@swetland@chaos.social avatar

@janeadams It really depends a lot on the project. Some things I'll dive into prototyping and hammer out the architecture along the way. Others I'll sketch out some kind of diagram or data model first.

I do tend to build bottom up, probably influenced by a lot of systems/OS/tools work over the last few decades, but will also build some things top-down to meet in the middle.

Very much a believer in incremental building and testing along the way -- always keep it compiling as it evolves.

swetland,
@swetland@chaos.social avatar

@janeadams Once code starts to solidify and it feels like the rate of change (at the architectural level) is slowing down a bit, I do like writing some technical documentation, especially if it's something others are going to be working with, but often just to remind me of the general shape of things when I revisit the project later.

mcc, to random
@mcc@mastodon.social avatar

I am in a terrible mood and I will tell you why: C++

swetland,
@swetland@chaos.social avatar

@mcc I'm not 100% sure this is a case of "smells like undefined behaviour so the compiler just shrugs", but I am increasingly of the opinion that modern compilers that treat UB as a license to just make code just straight up fault or do absolutely random shit should provide a -werror-on-undefined-behaviour option to fail at compile time rather than runtime.

swetland,
@swetland@chaos.social avatar

@whitequark @gsuberland @mcc I remain baffled that modern compilers will happily emit a trap for UB but not provide an option to flag it as a compile-time error.

Especially since they seem to be constantly introducing exciting new UB with every compiler and/or language revision, it feels like it'd be awfully handy to learn about it at compile time rather than at runtime.

swetland,
@swetland@chaos.social avatar

@whitequark @gsuberland @mcc On further reflection, I find this even more baffling given clang's early claim-to-fame (and big influence on gcc) of much more expressive, informative, and comprehensible errors and warnings.

swetland,
@swetland@chaos.social avatar

@whitequark @gsuberland @mcc I was looking for a general "flag any UB as an error" flag, but I suppose assorted flags for specific situations are better than nothing.

swetland,
@swetland@chaos.social avatar

@mcc @whitequark @gsuberland I forgot about that one. Will have to update my list of "things about C++ that negatively impact my sanity."

I feel like at some point C and C++ compilers crossed over from "impressive optimization" to "so aggressive that I can't rely on my code to actually do what a straightforward read of the source says it does."

I'm probably tainted by growing up with old, dumb compilers, but I miss being able to trust the compiler to actually do what I ask it to.

b0rk, (edited ) to random
@b0rk@jvns.ca avatar

poll: when you see this message in git status:

”Your branch is up to date with 'origin/main’.”

do you know that your branch may not actually be up to date with the main branch on the remote?

swetland,
@swetland@chaos.social avatar

@b0rk I can see how this could be confusing to people -- I do a git remote update first when I want to know how things fare compare to the remote (If there is a remote! I tend to start new projects local-only, which maybe is an unusual habit?)

I think that not doing any network traffic as a side-effect of status commands is a reasonable feature (and certainly the behavior I want from git), but can understand people maybe wanting different behavior.

gsuberland, to random
@gsuberland@chaos.social avatar

was checking out GPU prices versus performance and wow do high end GPUs really not stack up to the cost these days. I bought a 1080Ti and a 2080Ti at release because both of those were major upgrades from the '60 and '70, but now? feels like there's only a few percent in it between a 4070 Super and the higher end cards despite a huge price difference.

swetland,
@swetland@chaos.social avatar

@gsuberland There is all the raytracing stuff, which can look pretty slick, but that's mostly the domain of higher end newer AAA titles. For less intensive workloads, yeah, I'm not sure a RTX30x0 or RTX40x0 is going to make a significant difference.

I still have a GTX1070 in the Linux workstation and for some KiCAD, FreeCAD, and a bit of Blender at 4K, it's been plenty.

swetland,
@swetland@chaos.social avatar

@gsuberland For the more high end gaming stuff (Control or Cyberpunk 2077 with the settings cranked up), an RTX4090 (in the absurd new windows gaming box) was a pretty big step up from an RTX2080 for me (30-40fps to well over 100fps), but most less extreme stuff was already quite performant. I mostly talked myself into upgrading for Starfield, which ended up being a disappointment.

swetland, to Anime
@swetland@chaos.social avatar

This blink-and-you'll-miss-it single frame of Marcille bonking herself with her staff in episode 3 of Delicious in Dungeon is amazing.

#Anime #DungeonMeshi #DeliciousInDungeon

image/jpeg
image/jpeg
image/jpeg

swetland, to random
@swetland@chaos.social avatar

So, I am forced to wonder, having accidentally shipped a package to someone's previous address due to a stale ups.com contact... is there really no way to edit or delete a contact on ups.com, or is this feature just hidden incredibly well?

I thought, aha, I'll just create a new contact with (2024) in the nickname to help avoid this issue in the future. It appears you can only do that as the side effect of creating a new shipment, and it's only saved upon completion and payment. Amazing.

b0rk, (edited ) to random
@b0rk@jvns.ca avatar
swetland,
@swetland@chaos.social avatar

@b0rk I tried using git stash once when it was a new feature and that's pretty much the only time I've ever managed to lose my work with git in a way where I absolutely blame git for it. Have never used git stash again.

swetland, to tokipona
@swetland@chaos.social avatar

This week I became aware of toki pona, a very minimalistic, small, simple (120 words) conlang that's been around since 2001 and is apparently pretty popular (as such things go).
https://tokipona.org/

Various resources for learning it:
https://sona.pona.la/wiki/Recommended_learning_resources

Cheat Sheet (source of the attached images, pdf version):
https://jansa-tp.github.io/cheatsheet

More extensive grammar notes:
https://github.com/kilipan/nasin-toki

Wikipesija (wiki written in toki pona):
https://wikipesija.org/wiki/lipu_open

#TokiPona #Conlang

toki pona cheat sheet page 2 of 4 from: https://jansa-tp.github.io/cheatsheet
toki pona cheat sheet page 3 of 4 from: https://jansa-tp.github.io/cheatsheet
toki pona cheat sheet page 4 of 4 from: https://jansa-tp.github.io/cheatsheet

swetland, to retrocomputing
@swetland@chaos.social avatar

The classic MacOS code segment approach is kind of fascinating. I had just sort of assumed that, being a 32bit architecture, things would be much simpler, but I'm used to 32bit platforms that lean heavily on an MMU.

The desire for position independent code (and avoiding complex relocation) combined with the 68K's limit of 16bit offsets for PC-relative access, and the need to be very frugal with memory in early Mac systems clearly drove a lot of this design.

#RetroComputing #Mac68K

ktemkin, to random
@ktemkin@chaos.social avatar

taking bets on how long it’ll be before I accidentally insert a Japanese “は” instead of a toki pona “li”

(bonus if you can predict if I do that, “を” for “e”, or “で” for “lon”)

swetland,
@swetland@chaos.social avatar

@ktemkin My mind is currently being blown by the madness that is OpenType fonts that can do all the fancy combining stuff in the font itself (looking at some sitelen pona fonts). It's like having the IME baked into the font.

Related: I'm surprised that there doesn't seem to be much use of romanized toki pona words under sitelen pona glyphs like furigana.

Obviously multiple readings are not an issue here, but as an assistive device for learners...

swetland, to retrocomputing
@swetland@chaos.social avatar

That was an adventure. Managed to get one of the included demos to build with Consulair Mac C 5.02 on System 6 (in the Mini vMac emulator).

Setting up working search paths with the Path Manager was a bit involved. The files on the install disks were not actually organized in a way compatible with the default search path setup.

And the resource compiler refused to write a .rsrc file, but would write a .rel, which did link with some changes to the link script.

#RetroComputing #Mac68K

Output from the C Compiler for Demo.C
Source, Object, Map, and Application files, after Compiling, Resource Compiling, and Linking.
Running "Bob's Demo" which provides little doodle and text windows and an about box. Fancy. It also offers to play a tune but that doesn't work for me in Mini vMac.

swetland, to retrocomputing
@swetland@chaos.social avatar

For this exploration of Classic MacOS programming I wanted to aim for relatively early (more late 80s) to capture much of the feel of the early Mac platform, tooling, and APIs, but not too early because developing software on an 8MHz floppy-only platform with 512K-1024K ram is pretty rough (more pain than nostalgia).

I was thinking System 6 and an '020 or '030 machine, and found an LC III on ebay and pulled the trigger before realizing that meant System 7.1 minimum.

#RetroComputing #Mac68K

swetland,
@swetland@chaos.social avatar

System 7.1 is at least still (the very end of) the pure 68K era, and I can use mid-late System 6 compatible tooling (like THINK C 5.0) and APIs, so it's not the end of the world.

And to my understanding it should be entirely possible to write software that'll run just fine on earlier hardware (provided it fits in the memory constraints, sticks to the compatible Toolbox calls, etc).

#RetroComputing #Mac68K

swetland,
@swetland@chaos.social avatar

@zarfeblong Oh neat. I'll have to check that out when I get the LC III up and running (various bits like the keyboard and mouse, an ethernet card, etc arriving this week).

I only ever really used Macs for some word processing and page layout in high school so never did get a chance to explore gaming on them. Any suggestions for best-of-System 6/7-era stuff to dig up?

swetland, to retrocomputing
@swetland@chaos.social avatar

The CODE Editor for ResEdit is a neat little addon that lets you view full disassembly (instead of just a hex dump) of CODE resources, including symbol names, if present, etc.

#RetroComputing #Mac68K

About Box for ResEdit Code Viewer

swetland,
@swetland@chaos.social avatar

@danilo Yup. Adding a link to the original post.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • JUstTest
  • InstantRegret
  • mdbf
  • ethstaker
  • magazineikmin
  • cubers
  • rosin
  • thenastyranch
  • Youngstown
  • osvaldo12
  • slotface
  • khanakhh
  • kavyap
  • DreamBathrooms
  • provamag3
  • Durango
  • everett
  • tacticalgear
  • modclub
  • anitta
  • cisconetworking
  • tester
  • ngwrru68w68
  • GTA5RPClips
  • normalnudes
  • megavids
  • Leos
  • lostlight
  • All magazines