https://mastodon.social/@grimalkina/114717549619229029
I don’t know enough about these things to form an opinion. 🫤 I sure wish it was true, though. 😅
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. 🥳 It’s very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
1. Condene a agressão ilegal ao Irão por parte de Israel e dos Estados Unidos da América;
2. Proíba o uso de infraestruturas e do espaço aéreo português para qualquer tipo de apoio aos ataques;
3. Aplique sanções ao Estado de Israel pelas suas consecutivas violações do Direito Internacional e pelo genocídio em curso na Palestina;
4. Reconheça de imediato o Estado da Palestina.
Assina-se aqui: https://actionnetwork.org/forms/parar-a-guerra/
#Portugal #Israel #petição
1. Condene a agressão ilegal ao Irão por parte de Israel e dos Estados Unidos da América;
2. Proíba o uso de infraestruturas e do espaço aéreo português para qualquer tipo de apoio aos ataques;
3. Aplique sanções ao Estado de Israel pelas suas consecutivas violações do Direito Internacional e pelo genocídio em curso na Palestina;
4. Reconheça de imediato o Estado da Palestina.
Assina-se aqui: https://actionnetwork.org/forms/parar-a-guerra/
#Portugal #Israel #petição
1. Condene a agressão ilegal ao Irão por parte de Israel e dos Estados Unidos da América;
2. Proíba o uso de infraestruturas e do espaço aéreo português para qualquer tipo de apoio aos ataques;
3. Aplique sanções ao Estado de Israel pelas suas consecutivas violações do Direito Internacional e pelo genocídio em curso na Palestina;
4. Reconheça de imediato o Estado da Palestina.
Assina-se aqui: https://actionnetwork.org/forms/parar-a-guerra/
#Portugal #Israel #petição
@EsquerdaNet@EsquerdaNet https://masto.pt/@EsquerdaNet/114733876416292593
@EsquerdaNet@EsquerdaNet https://masto.pt/@EsquerdaNet/114733876416292593
@EsquerdaNet@EsquerdaNet https://masto.pt/@EsquerdaNet/114733876416292593



Brilliant, sure, let's ignore existing definitions and go with gut feeling (incidently, Meta has a gut feeling generator).
Source: https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/14625-Apply-AI-Strategy-strengthening-the-AI-continent/F3563576_en
#OpenSource
Brilliant, sure, let's ignore existing definitions and go with gut feeling (incidently, Meta has a gut feeling generator).
Source: https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/14625-Apply-AI-Strategy-strengthening-the-AI-continent/F3563576_en
#OpenSource
Brilliant, sure, let's ignore existing definitions and go with gut feeling (incidently, Meta has a gut feeling generator).
Source: https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/14625-Apply-AI-Strategy-strengthening-the-AI-continent/F3563576_en
#OpenSource
https://abav.lugaralgum.com/material-aulas/Processing-Python-py5/comprehension.html
(preciso dar uma melhoradinha na página, por umas imagens, arrumar links quebrados) ![lista = [ f(x) for x in iteravel if cond(x) ]](https://media.ciberlandia.pt/ciberlandia-media/media_attachments/files/114/721/626/957/717/462/original/c91ee40155f8e9fd.png)
@urlyman@urlyman https://mastodon.social/@urlyman/114720462376167356 
@urlyman@urlyman https://mastodon.social/@urlyman/114720462376167356 
@urlyman@urlyman https://mastodon.social/@urlyman/114720462376167356 
We’re talking about this pattern, right?
f, err := os.Open("filename.ext")
if err != nil {
log.Fatal(err)
}
Nothing stops you from leaving out the
if
, right? 🤔
!!
was a sudo
argument and never used it out of that context! Thanks for the $(!!)
tip 🤘
https://racingbunny.com/@mookie/114718466149264471
> 18 rules of Software Engineering
>
> 0. You will regret complexity when on-call
> 1. Stop falling in love with your own code
> 2. Everything is a trade-off. There's no "best" 3. Every line of code you write is a liability 4. Document your decisions and designs
> 5. Everyone hates code they didn’t write
> 6. Don't use unnecessary dependencies
> 7. Coding standards prevent arguments
> 8. Write meaningful commit messages
> 9. Don't ever stop learning new things
> 10. Code reviews spread knowledge
> 11. Always build for maintainability
> 12. Ask for help when you’re stuck
> 13. Fix root causes, not symptoms
> 14. Software is never completed
> 15. Estimates are not promises
> 16. Ship early, iterate often
> 17. Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed – but this doesn’t “add” to the program. Don’t use “software is never done” as an excuse to keep adding and adding stuff to your code.
Option
and error handling. (Or the more complex Result
, but it’s easier to explain with Option
.)fn mydiv(num: f64, denom: f64) -> Option
// (Let’s ignore precision issues for a second.)
if denom 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Here’s a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You can’t divide by zero, so the function returns an “error” in that case. (
Option
isn’t really used for errors, IIUC, but the basic idea is the same for Result
.)`Option` is an enum. It can have the value
Some
or None
. In the case of Some
, *you can attach additional data* to the enum. In this case, we are attaching a floating point value.The caller then has to decide: Is the value
None
or Some
? Did the function succeed or not? If it is Some
, the caller can do .unwrap()
on this enum to get the inner value (the floating point value). If you do .unwrap()
on a None
value, the program will panic and die.The
if let
version using destructuring is much shorter and, once you got used to it, actually quite nice.Now the trick is that you *must* somehow handle these two cases. You *must* either call something like
.unwrap()
or do destructuring or something, otherwise you can’t access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And *the compiler enforces it*.(In case of
Result
, the compiler would warn you if you ignore the return value entirely. So something like doing write()
and then ignoring the return value would be caught as well.)=
https://www.uninformativ.de/desktop/2025%2D06%2D21%2D%2Dkatriawm%2Dold%2Dxorg%2Dapps.png
Good luck figuring out which of these UI elements are click-able – unless you examine every pixel on the screen.