I always thought Gary Kasparov deserved a rematch with Deep Blue. IIRC he claimed he could have won a rematch. It is possible he learned enough about this opponent in his first encounter to defeat it.
The Art of Computer Programming, Knuth
The Third Manifesto, Date and Darwen
Specifying Systems, Lamport
Types and Programming Languages, Pierce
Homotopy Type Theory, The Univalent Foundations Program
The Calculi of Lambda-Conversion, Church
Out of all these, Specifying Systems really hit me in a way that’s stuck with me deeply. After the first chapter, I felt like I understood software on a whole new level.
As it is break week 2/3 of the way through Hoon School Live I am studying Gall Guide and Full-Stack Walkthrough
I’ll explain it to you once I finish this mad CrossFit workout. You should totally do CrossFit, by the way. Check out my InstaTok for some sick ideas on how ripped CrossFit can make you. CrossFit.
Certain communities are known for being very vocal about their favorite things. In this case, Linux distro choice. IMO this is a few years late and for maximum currency it should’ve been “Local man installs Nix.”
Arch is a Linux distro with a (arguably silly) mindset of installing things manually. When installing and using arch, one is required to fiddle with intricated parts of the system, often lower level than what most people need to handle. The installation also includes steps in which you do not have access to a graphical ui and are forced to do things on a terminal.
There is the quite well deserved stereotype of arch users bragging about using as implying they are more l33t h4x0r than other people.
The joke is spot on.
Here we are 17 years later. As Joel wrote, it would take decades for Microsoft to go down, and they could always reinvent themselves.
Dotnet instead of .NET Framework, this reinvention has passed the early stages and seems to be doing OK, not taking over the world, but seems to be healthy enough. Runs on Linux and there are advantages to such a large collection of free open source libraries having a major corporate sponsor
and speaking of Open Source, the reinvention of supporting open source
Windows10, kinda sorta a reinvention of Windows..but it is still Windows. I personally don’t know any developers who care about the Windows API, but MS has positioned it to be just one of several platforms compatible with dotnet 6 (coming in November)
Azure, MS was late to the cloud party, but they proved they can at least be one of the surviving major cloud platforms
Office, reinvented as Office365…MS continues to milk this cow.
Quantum computing, MS is determined to be in the running for this prize.
And above all Microsoft continues to be profitable quarter in and quarter out. No sign of reinvention as a consulting company.
If I’m awaken at 2am from being on-call for more than once per quarter, then something is seriously wrong and I will either fix it or quit.
I quit my last job partially over this, at about the same paging rate :)
It would have to be the old FSharpx F# OSS project on Github.
Since then the project has been broken up into smaller pieces. Nuget.org lists 16 different packages, although the project itself was broken into 3 -4 (depending on how you count them) Github repos.
At the time I was one of the top contributors, and I would still today be one of the top 3 for FSharpx.Collections, except the way the repos were split up all my history ended up in FSharpx.Extras, which I don’t even think I contributed to.
In fairness to the individual who undertook splitting the repo, at the time I wouldn’t have preserved the Git history correctly either given my state of Git competence then. This was the project that took me from zero Git skills to some competence.
It all started over 11 years ago.
KeePass.
Back when Gnome + Mono was a thing lots of interesting stuff was born, eg. Beagle.
Suse was actively developing nice user facing tools in mono at astonishing pace, then C# fell from favour because of politocs, most stuff was half rewritten in C++/Python/JavaScript, usually in lower quality/featureset.
Since then I find Gnome worse with every release, but that has not so much to do with .NET support.
I was using keepass on my windows desktop. When my machine started to die I was pleasantly surprised to find my keepass database worked on debian.
There are a few Mono apps from back when the Gnome project was kind of adopting Mono as their standard runtime for apps. Two that come to mind are Tomboy (notes app) and Banshee (music player).
If anything should work on Linux, it should be F#, but here’s a tweet from yesterday from the author of an F# course bemoaning the difficulty he is having getting his course to seamlessly work.
https://twitter.com/kitlovesfsharp/status/1362125496683819012
It works fine for me on Fedora. As the comments suggest, it may be related to snap.
Ionode is buggy sometimes, but so is Visual Studiofor F#.Both are steadily getting better.
PowerShell for one, but it’s fairly recent that .NET Core got Linux support, so I doubt there are many large projects around yet. Most likely any really large open source projects in the coming years will come from Microsoft open sourcing their own products.
There may be some, but I have been waiting for a bit more maturity in the .Net Core, .Net 5 (and now .Net 6) ecosystems before diving in. A year ago, I was reading a lot of stories about cross platform issues in core and I had my own painful experience setting up .Net Core with Asp.net.
I’m actually quite surprised how quickly there is now a .Net 6 version coming out.
The improvements I would like to see over and above what SQL offers just are not compelling enough for anyone except hackers to attempt or even care about. Unless it was delivered to me on a silver platter, I wouldn’t even care.
I really miss a good cheap Windows tablet. I used to have one of the very early low-end Surface tablets. It was great for plopping on the couch and surfing the internet, and still let me access the other file systems on my home network and run some applications. But the battery eventually gave out and the damn case was entirely glued. I tried heating the glue, but it wasn’t something I was experienced at and I cracked the screen.
Having seen both the SV and traditional sides of the software engineering experience, an SV company can hire great SEs and still self-sabotage by egotistical young founders who think they know better than the experienced SEs they hired because famous-VC gave them an A round, validating their genius.
I’ve decided the reason I’ve never mastered rebase is because working with small reams on production and OSS projects there is little value in tidy history. For projects involving really large teams this is completely different.
I disagree.
Even if there are only 2-3 developers, being able to see the flow of changes going into mainline as discrete feature oriented chunks is immensely helpful when you’re going back through history trying to figure out exactly where something went wrong.
Honestly, I find a lot of use in a tidy history in all projects. Any time that I need to use git log -S
, git bisect
, git revert
, it makes it way easier if the history is tidier. I do use these tools in my personal projects, because they’re v powerful for finding bugs.
Unix ignoramus here, but functional programming enthusiast. I was made aware of NixOS a few months ago and really liked the idea of it. If I ever get around to firing up a *nix computer, I think I would like to try this. Has anyone ever installed on a Raspberry Pi 4?
I seem to have something about NixOS on RPi4 in my bookmarks: https://lobste.rs/s/pdkwcq/nixos_on_raspberry_pi_creating_custom_sd - though I haven’t tried that myself.
Personally, I only installed Nix on my RPi4 with Raspbian. One thing I had to do to make it work was to switch Raspbian to a 64-bit kernel image. There’s some (theoretically experimental, yet it worked flawlessly for me) flag for this; if I found the right one, I believe you need to put arm_64bit=1
in the RPi4’s /boot/config.txt
, then reboot.
Please note, that if you’ve never used Unix/Linux at all before, starting from NixOS might be a rather deep dive. Say, akin to learning car driving by buying a battered used 4x4 and having it delivered into your backyard. It’s definitely doable, and if you like experimenting you’ll definitely have tons of fun and learn a lot, though don’t be surprised if many people might say it’s not the easiest nor most typical way to do that. Depending on what is your vision of fun, you might want to consider going with Ubuntu/Raspbian first, if you prefer smaller and safer steps (i.e. learning in a Chevvy at a driving school) - or, it might be exactly the path to pick if you do like crazy hacker adventure :D (Personally, somewhat recently I did a for-fun project of assembling Android .apk files by hand from scratch, byte by byte, so I can totally relate if you’d like to choose the crazy way ;P)
I build SSH-enabled SD images for screen/keyboard-less installation via: https://github.com/Robertof/nixos-docker-sd-image-builder
Someone helpfully provided step-by-step instructions for the builder here: https://gist.github.com/chrisanthropic/2e6d3645f20da8fd4c1f122113f89c06
Things I tripped over initially:
sdImage.firmwareSize
from 128
to something like 1024
if your SD card has the space. If you don’t know what you’re doing you’ll probably want to nixos-rebuild switch a few times which can consume more than the default.DISABLE_ZFS_IN_INSTALLER=y
for build speed and NIXPKGS_BRANCH=master
so it works and you don’t just get a very smol Christmas tree with blinking lights.access_key
and secret_key
to the amazon-ebs
source, like so:source "amazon-ebs" "nixos_sd_image_builder" {
access_key = "<...>"
secret_key = "<...>"
..
}
A word of warning on the new 4b with https://github.com/Robertof/nixos-docker-sd-image-builder
I bought the 8gig model in september, it wouldn’t boot at all. Bought a 4gig model, booted same sd card I created and it worked fine, popped carg back in the 8 and then that booted. You should be ok now as the firmware is more up to date and you can always install a newer firmware but the 8g pi 4 is a bit weird. And not just with nixos i’ve seen lots of reports of similar from other people on the pi forums.
Other than that caveat it works fine, one thing i have to try out is the usb boot from the latest firmware and ditch sd cards entirely for these little pi’s.
I’ve used it for two different 8GB Pi 4s in the past month - apart from forgetting to set NIXPKGS_BRANCH=master
I’ve had no other problems.
I stuck with Amiga from 1986/7 until Windows 95, and the 2 skills I should have picked up I did not. Instead of paying $500 at the time for a proper C compiler I spent it on an Epson 8-pin dot matrix printer. The ARexx language fulfilled all my hobby programming needs. For an editor I latched on early to UEdit, which was ahead of it’s time as a programmable editor. Unfortunately the author passed away too soon, before anyone really caught on to OSS (and before HTTP and the internet revolution), so when VIM was released on a Fred Fish disk it was just more noise to me.
proper C compiler
Meant DiceC, back then. The author is Matthew Dillon, which later became Freebsd project lead, then forked it into Dragonfly as random committers insisted in moving forward the wrong way (copying Linux) regarding SMP, and he was ousted from the project for trying to hold that back and design SMP approach properly instead.
I don’t know, but it was supposedly a cheap (relatively) C compiler. Matt was apparently in high school at the time. Quite enterprising.
I’m already forgetting more than just the details from those days, but have a notion that I shared my happiness, anger and hearthache on BBSes using CygnusEd with Thor. Don’t know exactly when I met CygnusEd, nor Arexx or Thor for that matter, but they were all love at first sight. It lasted until summer ’98, when I my studies finished, and my free time vanished almost over night. Powered it on now and again after that, but in 2006 my 1084S monitor finally died, and that was it.
ARexx was just the cat’s meow for me at the time. I think in some ways it was a proto-functional language. My Amiga bbs hangout was FAUG, first amiga user’s group I think very early on (like 1987) Donald Knuth popped in on occasion, but I could be wrong. I didn’t know who he was at the time.
Thanks, I suspected as much, but never really checked. Haven’t had time, money or room to do anything with my old A500 or A4000, only cleaned the motherboard of the latter after the battery had leaked out, have to check for damages.
Mostly agree, but not assertive enough.
I recommend writing out the full agenda
Published agenda before the meeting (preferably attached to the invites) is a requirement,.
I like the shared notes document. Nice touch for remote meetings, and even in person meetings.
Every meeting should must result in published action item, with assignments.
Features that may still make it to F# 5, but the team has not committed to shipping https://github.com/dotnet/fsharp/pulls?q=is%3Aopen+is%3Apr+label%3A%22Candidate+for+F%23+vNext%22
I’m especially looking forward to the Applicative computation expressions. I never caught on to defining operator symbols and coding applicatives that way. I do use a custom computation expression when I need it. A standard computation expression in the language will be nicer to have.
I know the Microsoft F# team is working hard to get this Extension members visible to trait constraints fix into the release as well. It apparently is not easy. https://github.com/dotnet/fsharp/pull/6805
I’m in the process of abandoning NixOS. It is just not suitable for Unix novices like myself. My most recent build is Linux Mint, which offers a more friendly app install and update experience for the uninitiated. I’m going to rebuild my NixOS machine on that distro soon too.
Knock on wood I’ve never had to “roll back”, which was the feature of NixOS which at the time was most appealing to me.
NixOS is a piece of software, so it has no feelings. Welcome back whenever you feel like it.
NixOS is still hard to get started with even with lots of *nix experience. Any Ubuntu or derivation like Mint is probably a good bet for “normal” users. They provide the vast majority of the value, at a fraction of the startup complexity. My own adventure was a little similar:
configuration.nix
is vastly preferable to Puppet, never mind manually setting everything up.I’m an experienced Linux system administrator and I make heavy use of NixOS for managing my homelab and cloud-hosted VMs, but I stil use Arch Linux on my desktop and laptop PCs. NixOS is great for servers but less good at being a desktop OS, and in any case for the computers I use daily I care more about being able to make quick and arbitrary config changes than I do about codifying their state with a configuration language.
So I think that’s more of a home manager thing than a NixOS thing. HM does seem to be the dominant way people use NixOS but I really hated not being able to hot reload my RC files (eg when configuring i3) and decided I wasn’t going to do it. And it works great. I just drop stuff in systemPackages and use the traditional configuration mechanisms and life is good.
I really think home manager is kinda misguided. Dropping RC files into place was never the painful thing about setting up a new machine, that’s the easy part. The sucky bits were remembering what constellation of packages you had installed (solved by NixOS already) and secrets management (eg creating and installing ssh keys, which HM doesn’t really do anything to help you with)
With my config in HM, I can do things like change a single variable and have my font or primary/secondary colors across all apps/environments change instantly. I can switch between wezterm/alacritty for my main term and things like running
prs
(pass
in Rust) with a single variable change. I have all of my dotfiles version controlled alongside the package versions, meaning that when I rollback to before zellij changed their config format, everything “just works”.I used stow for a very long time. HM is to stow, what NixOS is to Puppet. Though I do lament the eval/build times making trivial changes a bit annoying. But I find that’s easy to resolve too - when I’m iterating rapidly, I just do it in-place and then hoist that config into Nix/HM whenever it’s done and ready to be a part of my permanent config.
I’ve only very recently started using Home Manager, mostly as a replacement for several previous methods of managing dotfiles, but I’m finding that being able to codify a selection of packages I have installed is pretty useful. On the other hand, I’ve already run into some bugs with Home Manager; more importantly, I don’t trust the Nix ecosystem as it stands today to completely reliably manage every system configuration file I have on my system, or build every single package I care about (it seems like NodeJS packages are particularly vulnerable to having them break during a NixOS deploy, I think because a lot of the derivations for them were autogenerated from the Node metadata with some tool?).
Same here. I don’t know why, but I like to get to know the inner working of things and the whole “Just use home manager” way didn’t appeal to me.
Now after working out my own configuration setup I don’t see the appeal of it at all.
And I still have a lot of things I’d like to know about the nix language, but I’m getting there step by step.
Hell, I use Manjaro for my several home servers even. The Arch distros are very usable and lightweight, and AUR is a godsend.
IMO that’s reasonable. When you have more experience, though, it’s definitely worth it to re-evaluate Nix and NixOS for your use cases.