News for hackers. Stuff that matters.
Re:Oxide: The Cloud Computer by TrueDuality on Thursday October 26, 2023 @08:04AM (#38024430)
I'd like to add that their open source code is also EXTREMELY high quality. If you're an embedded developer go take a look at Hubris and Humility. I ended up using those to GREAT effect for this custom one-off aerospace device and it was a fantastic experience to integrate with. Definitely a change from what I was used to that took a bit of getting used to.
Re:Oxide: The Cloud Computer by throw0101c on Thursday October 26, 2023 @08:58AM (#38024907)
> I'd like to add that their open source code is also EXTREMELY high quality.

* https://github.com/oxidecomputer

Re:Oxide: The Cloud Computer by doublepg23 on Thursday October 26, 2023 @11:44AM (#38027151)
MPL even, that should satisfy about anyone who'd want to contribute.
Re:Oxide: The Cloud Computer by csomar on Thursday October 26, 2023 @10:14AM (#38025872)
I agree. I stole some of their stuff from here https://github.com/oxidecomputer/third-party-api-clients/tre... when I needed a SendGrid integration. High quality code and proper use of Rust types.
Re:Oxide: The Cloud Computer by jeffrallen on Thursday October 26, 2023 @11:13AM (#38026662)
Their ring logger was really enlightening to me about the value of Rust enums. Heterogeneous log events are dropped into the ring with some holding only the fact that something happened, and others holding additional data about what happened. Then Humility is able to print out the contents of the ring either online or in crash dumps. This is how you get logging in nostdlib Rust without ending up without half of a badly implemented printf. Instead, Humility, which has the full stdlib available, formats the enums for the firmware.
Re:Oxide: The Cloud Computer by vlovich123 on Thursday October 26, 2023 @12:19PM (#38027781)
Link?
Re:Oxide: The Cloud Computer by mkeeter on Thursday October 26, 2023 @01:02PM (#38028495)
The embedded side is here: https://github.com/oxidecomputer/hubris/blob/master/lib/ring...

And the debugger is here: https://github.com/oxidecomputer/humility/blob/master/cmd/ri...

I also gave a talk at this year's Open Source Firmware Conference that covers a bunch of debug strategies: https://www.osfc.io/2023/talks/unplugging-the-debugger-live-...

(conference videos aren't online yet, but should be posted early next week)

Re:Oxide: The Cloud Computer by behnamoh on Thursday October 26, 2023 @10:25AM (#38026028)
On a side note, I really liked their website. The ASCII animations are interesting -- wish there was a video game that had those.
Re:Oxide: The Cloud Computer by ranger207 on Thursday October 26, 2023 @10:40AM (#38026214)
Cogmind (https://www.gridsagegames.com/cogmind/) has those sorts of animations
Re:Oxide: The Cloud Computer by jefurii on Thursday October 26, 2023 @12:35PM (#38028042)
The developer also released the ASCII art editor he used to make all those nifty designs: https://www.gridsagegames.com/rexpaint/
Re:Oxide: The Cloud Computer by LoganDark on Thursday October 26, 2023 @02:20PM (#38029660)
Woah , definitely going on my wishlist
Re:Oxide: The Cloud Computer by mlindner on Thursday October 26, 2023 @05:12PM (#38031773)
I've been interested in Cogmind for a while, unfortunately it only works on Windows (which seems an odd choice for a text-based game) so I have no ability to play it.
Re:Oxide: The Cloud Computer by rileyphone on Thursday October 26, 2023 @05:51PM (#38032164)
It appears to work under Proton in Linux. https://www.protondb.com/app/722730
Re:Oxide: The Cloud Computer by benjaminleonard on Thursday October 26, 2023 @12:48PM (#38028259)
They are very fun to make as well! I've built my own mini-lib on top of this ASCII rendering library (https://github.com/ertdfgcvb/play.core).

I design them in Monodraw, pass it through a janky converter I wrote that converts text into a json grid of characters. I then render a number of layers that get combined, which is a mix of the static art layer, and others generated from functions that spit out a similar cell based frame.

If you're interested: https://gist.github.com/benjaminleonard/c913ddbf23fe7a70f9c2...

And for what it's worth there's this ASCII game: https://twitter.com/StoneStoryRPG

Re:Oxide: The Cloud Computer by throw-DO-178C on Thursday October 26, 2023 @10:45AM (#38026268)
> ... code is also EXTREMELY high quality. If you're an embedded developer go take a look at Hubris and Humility.

So, Humility is like MC/DC?

https://en.wikipedia.org/wiki/Modified_condition/decision_co...

Re:Oxide: The Cloud Computer by steveklabnik on Thursday October 26, 2023 @11:03AM (#38026515)
Humility is a debugger, not a code coverage tool.
Re:Oxide: The Cloud Computer by throw-DO-178C on Thursday October 26, 2023 @11:17AM (#38026721)
HUMILITY

1. The state or quality of being humble; freedom from pride and arrogance; lowliness of mind; a modest estimate of one's own worth; a sense of one's own unworthiness through imperfection and sinfulness; self-abasement; humbleness.

-- Webster's 1918 Dictionary

Our avionics software was originally spec-ed to not NEED a debugger it was to be of such high quality, but the designer added break point op-codes in the VM anyway. I guess he was aware of the concept of humility, too. ;) Like humor, humility seems to be in short supply these days.

Re:Oxide: The Cloud Computer by lamontcg on Thursday October 26, 2023 @12:11PM (#38027656)
> humility seems to be in short supply these days.

People claiming to be humble are all over the fucking place these days and Millennials are addicted to wanting that word like crack. The result is that the people bragging about being humble the most are usually narcissists.

Re:Oxide: The Cloud Computer by throw-DO-178C on Thursday October 26, 2023 @02:16PM (#38029601)
> Like humor, humility seems to be in short supply these days.

Hmm...maybe I should have referenced:

https://en.wikipedia.org/wiki/Sacred_cow_(idiom)

> The motto of the satirical magazine The Realist was "Irreverence is our only sacred cow".

Humor does seem to exist today, it just has a narrow band-pass filter, with apparent focus on "organic" product marketing.

Re:Oxide: The Cloud Computer by acct-litter-zed on Monday October 30, 2023 @02:16PM (#38073436)
I think 'throw-DO-178C' was being less literal than you are assuming here. Note that they quoted the comment about extremely high quality. What gives Hubris/Humility that level of quality?

When I see the concept of "extremely high quality" applied to software in the aerospace domain, I tend to think of methods like formal proofs and "semi-formal" methodologies like DO-178C (including MC/DC, not as a tool, but as a critical sub-process). It does appear that Humility adheres to some traditional ideas used in even "safety conscious", real-time embedded work:

> However, Hubris may be more interesting for what it doesn't have. There are no operations for creating or destroying tasks at runtime, no dynamic resource allocation, no driver code running in privileged mode, and no C code in the system. This removes, by construction, a lot of the attack surface normally present in similar systems. [1]

Oxide surely didn't invent all these concepts, we were applying some of this (using C) in the early '90s on human-safety-critical embedded projects, and they were most likely used before that. The attack surface eliminated is more than just security, e.g. even self-induced "attacks" from task priority inversion. Maybe the concept of applying them to rack mount servers is novel, but I have no experience there. Techniques like DO-178C go farther and do things like trace requirements to object code and strict coverage criteria.

When you are considering where Hubris/Humility might be applied in aerospace, also note that it would most likely be denied at the proposal stage of talking to a regulatory body like the FAA if you said, "The methodology for our brake controller is cloning a Github repo written by 100X S/W engineers in the Rust language, then modding that to fit." It's a process you have to follow in a documented fashion, from the start. Who knows--I certainly don't know everything--if you do have a identify reproducible process that improves S/W quality, the FAA might be interested.

And as far as eliminating debuggers goes, Boeing did actually do a joint academic/industry project on a zero-bug reduced (subset) Ada compiler (Zbra), which itself would be qualified as a tool instead of the more laborious process of mapping requirements to object code directly. [2]

In the spirit of humor shown on this topic, I would suggest considering a reduced subset of Rust called Iron. :) Regards, and best of luck!

[1] https://oxidecomputer.github.io/hubris/

[2] http://www.sigada.org/conf/sigada2002/SIGAda2002-CDROM/SIGAd...

Re:Oxide: The Cloud Computer by danbruc on Thursday October 26, 2023 @11:13AM (#38026660)
Tangent. In my admittedly limited experience, embedded code seems to have a tendency to be some of the worst code you can come across. The stuff is already low level and not the most easy to follow, but then embedded developers seem to despise names with more than two letters and a number. Without the datasheet at hand it is impossible to figure out what any of the code does because everything is just an abbreviation or acronym from some block or pin-out diagram.
Re:Oxide: The Cloud Computer by otteromkram on Thursday October 26, 2023 @06:46PM (#38032631)
What's the point of your comment?
Re:Oxide: The Cloud Computer by teraflop on Thursday October 26, 2023 @11:46AM (#38027197)
Yeah, I just skimmed through the reference docs for Hubris and was very impressed with what I saw. No "rocket science", just (apparently) solid technical decisions that are extremely well justified and documented.

https://oxidecomputer.github.io/hubris/reference/

Re:Oxide: The Cloud Computer by o11c on Thursday October 26, 2023 @05:34PM (#38031980)
Some interesting rare choices there (some of which would be applicable to normal userlands or even to language VMs):

* Memory access is protected, but addresses are not virtually mapped. The lack of paging of course ties strongly to the inability to dynamically add tasks.

* They wish they could have read-only shared libraries (viable since there's only one address space) so they could truly be shared, but the current ecosystem assumes mutability is possible (even though in Rust mutable globals are rare).

Re:Oxide: The Cloud Computer by taink on Thursday October 26, 2023 @12:17PM (#38027737)
The only big thing missing for now is their OS (or rather, their Illumos distribution), Helios[1].

Can't wait to read its source code, I was curious since reading this thread[2].

[1] https://github.com/oxidecomputer/helios (if this is not found for you, we're in the same boat)

[2] https://news.ycombinator.com/item?id=33337086

Re:Oxide: The Cloud Computer by cryptonector on Thursday October 26, 2023 @12:26PM (#38027895)
> their open source code is also EXTREMELY high quality

I would expect nothing less from that crew. They did amazing things at Sun Microsystems, Inc. (RIP), and they continue to do even greater things now.

Re:Oxide: The Cloud Computer by throwawaaarrgh on Thursday October 26, 2023 @03:32PM (#38030633)
Thought I had heard the cringiest random names for an oss project, and then...
Re:Oxide: The Cloud Computer by otteromkram on Thursday October 26, 2023 @06:36PM (#38032561)
Is that the same extremely high-quality open-source code that currently has a failing build?

https://github.com/oxidecomputer/hubris

And, that one underscore-delimited folder name in this repo just catches the eye, huh?

https://github.com/oxidecomputer/humility

Re:Oxide: The Cloud Computer by mbStavola on Friday October 27, 2023 @09:40AM (#38038302)
If those are your complaints, I think they're probably doing okay.
Re:Oxide: The Cloud Computer by bcantrill on Wednesday November 01, 2023 @12:39PM (#38100874)
With respect to Hubris, the build badge was, in turns out, pointing to a stale workflow. (That is, the build was succeeding, but the build badge was busted.) This comment has been immortalized in the fix.[0]

With respect to Humility, I am going to resist the temptation of pointing out why one of those directories has a different nomenclature with respect to its delimiter -- and just leave it at this: if you really want to find some filthy code in Humility, you can do much, much better than that!

[0] https://github.com/oxidecomputer/hubris/commit/651a9546b20ce...