1. 19

    I enjoy the ESP32 boards quite a bit. They are very cheap, they come with WiFi and BT built in, and you can write either C or Arduino code for them.

    There are the older esp8266 boards but they lack some cool power management stuff the newer ESP32 boards have.

    1. 3

      They also come with a pretty nice SDK - it’s usually the bane of the smaller boards, that the SDKs are terrible or you end up having to write a whole lotta a drivers yourself, which isn’t what I find fun ;-)

      1. 1

        I agree, the ESP32-IDF SDK is surprisingly pleasant. But there are some other embedded SDKs that seem nice too, like Zephyr and mbedOS, that support a lot of popular ARM-based boards. (Though I haven’t actually used them.)

      2. 3

        I have a bunch of the ESP8266s flashed with Tasmota, on breadboards with a Dallas temperature sensor for monitoring stuff around the house.

        One of them has a relay which controls my garage door in parallel with the garage door switch at the wall. I have a few that are embedded in “smart outlets” bought from Amazon that I flashed Tasmota over-the-air as to avoid closed source firmware.

        All of these are connected to my Hubitat for automation and pushing temps to InfluxDB. Here is a snapshot of one of my Grafana dashboards: https://snapshot.raintank.io/dashboard/snapshot/jzZznlmjEWaatSNw1AbN2znAPcC4N8wE

        1. 2

          Hubitat rules so hard.

          1. 1

            I bought the C5 shortly after it was released and they have done a great job improving it over time, the web UI is lot more responsive than it used to be and there has been a steady flow of sane features while still keeping it rather simple/focused. I like it a lot!

            1. 2

              My only real issue is that geofencing with the mobile app doesn’t work consistently. Everything else is extremely reliable.

              1. 2

                Agreed, forgot about geofencing… My current workaround is the OwnTracks phone app with OwnTracks Presence app for Hubitat: https://github.com/bdwilson/hubitat/tree/master/OwnTracks-Presence - the downside is battery consumption on my phone is higher. I also use an app for presence based on WiFi since my phone has a static IP on my LAN.

        2. 2

          For the embedded category I really like the Nordic nRF52 chips. Well supported in Rust, nice bunch of peripherals onboard, debugging with OpenOCD+gdb works well, official docs are nice. Supports BLE, 802.15.4, ESB for radio. No Wi-Fi but that only makes everything lighter.

          1. 1

            That’s what I’ve started with, and they are fun for sure. I went with the Adafruit Huzzah32 boards, for a nice combination of features and low-enough price. (Might use something else if making a bunch of something.)

            Next up, using uLisp on the one I’ve got on order.

            1. 1

              Alternative: WFI32

            1. 6

              I just use a shell scripts with defaults write commands and for software, I use a Brewfile for Homebrew. Mostly works well.

              1. 3

                Same here - /bin/sh script with lots of defaults, installer, etc. lines. Assembled over the years, one-touch CLI-only setup - does 100% of what I need it to do.

                Hooking all of the work Macs up to an existing SaltStack server has been on my TODO list for a while now but it’s always on the back burner.

                1. 3

                  If you install the mas package, your Brewfile will have the versions of software you’ve downloaded from the Mac App Store. It’s pretty nice.

                1. 1

                  Eero and Amplifi, depending on a given week.

                  They are both meh. I am a network engineer by day. I don’t want to mess with that stuff at night. Something something cobbler’s children.

                  But I’m about at my wits end and about ready to deploy a Microtik/Edgerouter or something.

                  1. 13

                    I can really suggest Mikrotik. They are cheap and very powerful. I have one running in my home as router and access point and it’s work fine from years.

                    I had a bunch of ARM boards running Docker Swarm, but I am planning to migrate them to some refurbished x86 boxes because they struggling too much with CPU intensive applications (think about ELK). Anyway ARM boxes works fine for DNS or home automation services like HomeAssistant.

                    1. 3

                      Which Mikrotik box are you using? I’m considering the catchily named RB4011iGS+5HacQ2HnD-IN to get 10 gigabit ethernet ports plus really fast wifi. I wish I could get away with the hAP AC2 or AC3, but have too many ethernet devices.

                      1. 2

                        Anything with metal boxes is good. They used to make too-cheap plastic boxes as well.

                        I’ve used RB433s (with capsman) for more than a decade and am a fanboi: Mikrotik still ships new firmware for >10yo hardware and replies to support email with a straightforward factual reply. If you want my undying love for whatever you’re doing, that’s the way to win it.

                        1. 2

                          I am a Mikrotik fanboy as well: in my very past work experience, I have used Mikrotik from small boxes to ISP BGP routers and they work very well. They are not Cisco or Juniper of course, but they cost a fraction and they are very powerful. You need a basic script skills and sometimes the configuration is a bit tricky (i.e. for QoS) but you can implement very advanced networking feature.

                          The support is good (at least for a free support) and they keep pushing lot of new features, like Wireguard implementation.

                        2. 1

                          I have the RB4011iGS+5HacQ2HnD-IN. It’s fantastic.

                          https://lobste.rs/s/dbr7yu/what_do_you_use_for_your_home_networking#c_pkpte7

                          1. 1

                            I have an hAP device. For my use case (I have a 50mb connection) it’s enough. Every room in my house has an Ethernet plug, but I am using a refurbished Cisco 3550 as core switch that I got for free at my job.

                            1. 1

                              I use RB4011 and a pair of PoE powered cAP ac. Copper throughout the house for desktop PCs and TV boxes. In conjunction with gigabit cable works amazingly well.

                              1. 1

                                RB4011iGS+5HacQ2HnD-IN

                                As far as I can tell, while that model has 10 ethernet ports, they are not switched which means if you treat it like a switch and plug in 10 Ethernet devices and they start using bandwidth, they’re going to hammer your router’s CPU and memory.

                                For best performance, you’re going to want to dangle a switch off of this, instead.

                                Edit: I stand corrected. The block diagram shows two Realtek switch controllers inside. These are performant, switched ports. You are good to go!

                                https://i.mt.lv/cdn/product_files/RB4011iGSplus5HacQ2HnD-IN_181032.png

                                1. 1

                                  Keep in mind that the 4011 for some bizzare reason does not support passive DACs, which is really bizzare in the SFP+ world.

                                2. 1

                                  +1 for Mikrotik. I have a couple Hap’s, Hex’s, CRSxxx, and an RB3011. Excellent kit. Fairly steep learning curve.

                                1. 21

                                  Arduino serves it’s purpose perfectly: attract beginners and allow those who don’t want to invest a deep amount of effort to do things with microcontrollers.

                                  It was never designed to be a one-size-fits-all or a tool for professional embedded programmers.

                                  I don’t see the issue.

                                  1. 11

                                    I agree completely.

                                    It’s like people who complain that all those people out there using tablets now (90%?) can’t do as much on a tablet as the author can do on a PC/Mac/Linux.

                                    No doubt true, but those 90% of people couldn’t do those things on a PC either. And can easily do things on their tablet that they wouldn’t be able to do on a PC.

                                    1. 6

                                      I agree, and the author even acknowledges that. It seems to me that the author’s main point is that the world of embedded programming is still complex and fragmented, and it’s hard to hire people who have the experience to navigate it effectively.

                                      The points about Arduino felt mostly unnecessary.

                                    1. 12

                                      I once wasted an entire month trying to resolve some cryptic C# compile errors where Visual Studio simply wouldn’t recognize some of my source files. In the end, the reason was that the compiler silently failed to recognize files with path lengths of longer than 255 characters, even though you can technically create such files on Windows. A prefix like “C:\Users\Benjamin\Documents\ProjectName\src" combined with C#’s very verbose naming conventions meant that a few of my files were just over the path size limit.

                                      1. 8

                                        I feel like Windows is drowning in technical debt even more than Linux is. The APIs to work with long paths have existed for ages now, so most modern software lets you easily create deep hierarchies, but Windows Explorer still isn’t updated to work with those APIs so if you create a file with a long path, you can’t interact with that file through Explorer. There have been solid widgets for things like text entry fields in various Microsoft UI frameworks/libraries for ages now, but core apps like Notepad and - again - Windows Explorer still aren’t updated to take advantage of them, so hotkeys like ctrl+backspace will just insert a square instead of doing the action which the rest of the system has taught you to expect (i.e deleting a word). CMD.EXE is an absolutely horrible terminal application, but it hasn’t been touched in ages presumably due to backwards compatibility, and Microsoft is just writing multiple new terminal applications, not as replacements because CMD.EXE Will always exist, but as additional terminal emulators which you have to use in addition to CMD.EXE. The Control Center lets you get to all your settings, but it’s old and crusty, so Microsoft is writing multiple generations of separately holistic Control Center replacements, but with limitations which make it necessary to use both the new and the old settings editors at the same time, and sometimes Control Center and some new settings program don’t even agree on the same setting. Windows is useful as a gaming OS, but any time I actually try to use it, I just get sad.

                                        1. 6

                                          CMD.EXE is an absolutely horrible terminal application, but it hasn’t been touched in ages presumably due to backwards compatibility, and Microsoft is just writing multiple new terminal applications, not as replacements because CMD.EXE

                                          What you think of as cmd.exe is actually a bunch of things, most of which are in the Windows Console Host. The shell-equivalent part is stable because a load of .bat files are written for it, but PowerShell is now the thing that’s recommended for interactive use. The console host (which includes a mixture of things that are PTY-subsystem and terminal emulator features on a *NIX system) is now developed by the Windows Terminal team and is seeing a lot of development. Both cmd.exe and powershell.exe run happily in the new terminal with the new console host and in the old terminal and the old console host. At the moment, if you run them from a non-console environment (e.g. from the windows-R box), the default console host that’s started is the one that Windows ships with and so you don’t get the new terminal.

                                          1. 1

                                            Windows Terminal is great when I can use it, but it does not seem to work well with administrator privileges.

                                            1. 1

                                              You can use the sudo package from scoop. For me it’s good enough.

                                              1. 1

                                                Wow, did not know about this! It looks like it still generates a UAC popup unless you configure those to not exist. Still, far better than nothing.

                                                http://blog.lukesampson.com/sudo-for-windows

                                            2. 1

                                              but PowerShell is now the thing that’s recommended for interactive use

                                              Which one? ;-)

                                              I have some code that extracts config/data/cache directories on Windows (the equivalent of “check if XDG_CONFIG_DIR is set, otherwise use .config” on Linux) and it’s just a hyperdimensional lair of horrors.

                                              Basically, the best way to get such info without having to ship native code is to run powershell (version 2, because that one does not have restricted mode) with a base64 encoded powershell script that embeds a C# type declaration that embeds native interop code that finally calls the required APIs.¹

                                              I’m close to simply dropping Windows support, to be honest.


                                              ¹ The juicy part of the code for those interested:

                                                static final String SCRIPT_START_BASE64 = operatingSystem == 'w' ? toUTF16LEBase64("& {\n" +
                                                    "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\n" +
                                                    "Add-Type @\"\n" +
                                                    "using System;\n" +
                                                    "using System.Runtime.InteropServices;\n" +
                                                    "public class Dir {\n" +
                                                    "  [DllImport(\"shell32.dll\")]\n" +
                                                    "  private static extern int SHGetKnownFolderPath([MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags, IntPtr hToken, out IntPtr pszPath);\n" +
                                                    "  public static string GetKnownFolderPath(string rfid) {\n" +
                                                    "    IntPtr pszPath;\n" +
                                                    "    if (SHGetKnownFolderPath(new Guid(rfid), 0, IntPtr.Zero, out pszPath) != 0) return \"\";\n" +
                                                    "    string path = Marshal.PtrToStringUni(pszPath);\n" +
                                                    "    Marshal.FreeCoTaskMem(pszPath);\n" +
                                                    "    return path;\n" +
                                                    "  }\n" +
                                                    "}\n" +
                                                    "\"@\n") : null;
                                              
                                              1. 1

                                                Which one? ;-)

                                                PowerShell 7 Core, of course!

                                                …for now!

                                                …unless you also need to support classic PowerShell, in which case, PowerShell 5!

                                                …and be careful not to use Windows-specific assemblies if you want to be cross-platform!

                                            3. 3

                                              The APIs to work with long paths have existed for ages now

                                              Well, I’d agree about technical debt, but this claim is a great example of it.

                                              As an application developer, you can choose one of these options:

                                              1. Add a manifest to your program where you promise to support long paths throughout the entire program. If you do this, it won’t do anything unless the user has also modified a system-global setting to enable long paths, which obviously many users won’t do, and you can expect to deal with long path related support queries for a long time. This is also only supported on recent versions of Windows 10, so you can expect a few queries from users running older systems.
                                              2. Change your program to use UTF-16, and escape paths with \\?\ . The effect of doing this is to tell the system to suppress a lot of path conversions, which means you have to implement those yourself - things like applying a relative path to an absolute path, for example. This logic is more convoluted on Windows than Linux, because you have to think about drive letters and SMB shares. “D:” relative to “C:\foo” means “the current directory on drive D:”. “..\..\bar” relative to “C:\foo” means “C:\bar”. “\\server\share\..\bar” becomes “\\?\UNC\server\share\bar”. “con” means “con”.

                                              I went with option #2, but the whole time kept feeling this is yet another wheel that all application developers are asked to reinvent.

                                              1. 1

                                                Windows is useful as a gaming OS, but any time I actually try to use it, I just get sad.

                                                • Microsoft Office and the Adobe Suite (or replacements such as the Affinity Suite).

                                                It would be really nice if Microsoft just ported Office.

                                                1. 2

                                                  They effectively have. It seems like Microsoft cares far more about the O365 version of Office than any native version — even Windows.

                                                  1. 2

                                                    They effectively have. It seems like Microsoft cares far more about the O365 version of Office than any native version — even Windows.

                                                    Office 365 is a subscription service, most of the subscriptions include the Windows/Mac Apps. I guess that you mean Office Online, but it only contains a very small subset of the features of the native versions. I tried to use it for a while, but you quickly run into features that are missing.

                                                2. 1

                                                  The separation of the control centre may actually go away soon. If the articles are up be believed, MS finished that migration in the latest version.

                                                  1. 1

                                                    More details? The only thing I heard was that they were finally killing the working ones.

                                              1. 6

                                                A $12 Logitech K120. It’s great, it’s cheap, it’s plenty.

                                                1. 28

                                                  MIPS is everywhere, still. Including in network gear, wireless, IoT, and other embedded applications.

                                                  1. 8

                                                    This. While it seems to me that most high-end network gear is slowly migrating towards ARM, MIPS keeps turning up in odd places. I recently dug around in the weird world of handheld video game consoles designed to run emulators, and found this spreadsheet compiled by the fine folks here. I was surprised to see a relatively large number of CPU’s with “XBurst” architecture, which MIPS32 plus some DSP extensions.

                                                    I have a friend who recently got an internship at a company to help optimize their AS/400-based database infrastructure, and it looks like the current IBM systems are still backwards-compatible with S/390 programs. So while you might not see s390 much it’s probably not going away quickly.

                                                    I believe Alpha, PA-RISC and IA-64 are officially deprecated these days, so nobody is making new ones and nobody seems to want to. To my surprise, it appears that people are still manufacturing SPARC hardware though.

                                                    1. 3

                                                      Mostly Fujitsu, but even they are doing more aarch64.

                                                      1. 3

                                                        it looks like the current IBM systems are still backwards-compatible with S/390 programs

                                                        My understanding is that IBM Z stuff today is extremely compatible with System/360 programs from the mid-’60s.

                                                        1. 2

                                                          So while you might not see s390 much it’s probably not going away quickly.

                                                          For legacy applications on MVS and friends, yeah, but IBM basically killed 31-bit Linux.

                                                          To my surprise, it appears that people are still manufacturing SPARC hardware though.

                                                          There’s still a market for legacy Solaris systems.

                                                          1. 1

                                                            How frequently are these legacy Solaris systems updated? How frequently are IBM Z systems updated? I heard (might be unsubstantiated) that some mainframes still run 20 year old Perl, even though the OS gets updates.

                                                            1. 1

                                                              Depends how much they care; if they do, they’ll keep their ancient application onto newer Solaris on newer hardware (i.e M8).

                                                              The 20-year-old-Perl makes me think you’re talking USS on z/OS (aka MVS); that’s a world I know very little of.

                                                          2. 1

                                                            IBM i (née AS/400) is all on PowerPC these days. It’s a very different system from s390/mainframe/zOS

                                                        1. 3

                                                          This has already been discussed publicly by Satya/some other exec at BUILD. MSFt would fully-open source it if the IP allowed, but the IP doesn’t allow for it.

                                                          I think one of two scenarios might pan out:

                                                          1. That you will see large portions of Windows open sourced, and the IP-encumbered parts replaced with open source-friendly components.

                                                          2. Microsoft puts Windows into maintenance mode and jumps to Linux as the basis for future OSes, with open, multi-platform APIs.

                                                          Frankly, at this point, I don’t know which is more likely.

                                                          1. 2

                                                            Do you have any sources for this? Would like to read more about what Satya said about it.

                                                            1. 1

                                                              I’ve wondered about number (2) for awhile now. If they created a really nice desktop environment and GUI toolkit I bet people would adopt it like crazy, particularly given the messes that have been made of GTK and Qt.

                                                              1. 2

                                                                Linux desktop use is maybe 1-2%. Why would they care about crazy adoption among that user base? Microsoft’s real competition are Android and iOS.

                                                                1. 1

                                                                  Sorry, my assumption would be that MS would bring a big chunk of its existing user base to (its own version of) Linux. In other words, they’d ship “Windows 11” and it would be a Linux distro under the hood the same way Apple moved to a Unix with OS X. Presumably they’d ship a compatibility layer like Apple did with Rosetta. I don’t think it will happen, there’s just too much legacy “stuff” there, but it’s an interesting thing to ponder.

                                                                  1. 2

                                                                    I agree that it’s nice to fantasize about the idea. Though it would be a very large effort, first I assume that the Windows libraries/APIs are probably very much reliant on the Windows kernel. Secondly, Linux does not really have the driver model that hardware manufacturers are used to.

                                                                    On the other had, they could just start submitting code and tests to Wine. If they make it bug for bug compatible with Windows, they wouldn’t even need to port Windows to the Linux kernel. I am really impressed how well Proton works for games, I can only imagine what Wine as a base for non-game applications if Microsoft would invest in it.

                                                                    I think in practice, they will just skim profit from Windows 10 as long as they can, while extending their cross-platform strategy for applications (e.g. see the recent announcement of Electron-based Outlook). Also, it seems that they want to do another attempt at a ChromOS-like Windows with Windows 10X.