You mean “flavour”, right? Another small but important difference.
You mean “flavour”, right? Another small but important difference.
I think it’s a bit more than that. I think that the idea is that you simplify the problem so that the rubber duck could understand it. Or at least reformulate it in order to communicate it clearly.
It’s the simplification, reformulation or reorganisation that helps to get the breakthrough.
Just thinking out loud isn’t quite the same thing.
It goes really well with YAGNI. Also DRY without YAGNI is a recipe for premature over-architecting.
This is also one of the main benefits of TDD. There was a really good video that I can’t find again of a demonstration of how TDD leads you to different solutions than you thought you use when you started. Because you code exclusively for one single requirement at a time, adding or changing just enough code to meet each new requirement without breaking the earlier tests. The design then evolves.
I’ve always heard of your “post-architecture” referred to as “evolutionary design”.
Technically, he would have three drives and only two drives of data. So he could move 1/3 of the data off each of the two drives onto the third and then start off with RAID 5 across the remaining 1/3 of each drive.
As a Canadian driving around the UK I always found these signs strange. When passing one we would raise our fists in the air and shout, “End road work…end road work everywhere!!!”.
It amused us.
In respect to sitting above the API layer and turning DTO’s to/from Domain Object’s, I’d call them “Brokers”.
I looked and Python has the library support for the GPIO and to do background threading to poll pins. My preference would be to go with a JVM language like Kotlin, but then I’m a programmer. Python, from the little that I’ve mucked about with it is really just one step in complexity from scripting. Maybe even easier, because some things in shell scripts are super difficult to do.
Maybe then you need to move one stop up from scripting into something closer to actually programming. I’d be surprised if Python doesn’t have the library support on a Pi for dealing with both serial and GPIO I/O.
the end stop in external to the serial communication
Does this mean that you have some kind of other signals or pin-outs? If so, this is starting to sound like a great project for a Raspberry Pi, because the GPIO pin array can handle that.
Keep in mind that it has been decades since I last used Kermit, but I’m pretty sure the use case it was originally designed for was…
Connect to a serial port, which had a modem attached. Talk to the modem and get it to dial a number. Presumably, the remote end answered and the port attached to its modem would issue a login prompt. Negotiate the login and then issue a bunch of commands to change directories and then launch Kermit on the remote system. After that Kermit to Kermit communications took over until you terminated the session. Finally, log off the remote system and hang up the modem.
All of this stuff could be done via scripts. I seem to remember that it would actually wait for a response, and then parse the response in the script. I don’t remember ever doing polling loops.
If you’re on a *nix box of some type, it’s totally possible to open up a serial port for manual I/O even in something like a bash script. Even if you have to reverse telnet to a terminal server.
Kermit on top of FTP can work really well. Kermit has its own communication and transfer protocol, IIRC, but updates in the 1990’s allowed it to be used with TCP/IP and FTP. So you can write a script to log into a remote system, run some commands and then initiate a file transfer. The scripting allows you to wait for responses and act on them.
Yes, $15 CAD/day to “roam like home”. I have an Orange eSIM that I can keep alive if I use it at least once every 6 months - with a local french number that stays mine. It costs me about $40 CAD for a 30 day - 20GB top up. My wife uses Nomad for data only, we both don’t need local numbers, and it generally costs $12 CAD for 5 GB 2 week top-up.
So I figure about $60-70 CAD for 3 weeks travel virtually anywhere in Europe. Calls and SMS included (for one) without long distance charges. Compared to $630 for “roam like home” for two people from a Canadian carrier - doesn’t matter which one as far as I can tell.
We both recently got new phones to be able to use eSIMs.
And the physical SIMs stay active. So my elderly parents can call my Canadian number if there’s an emergency and it will ring through.
In fact, on our last trip to Rome, when we used a credit card at the hotel, it was refused and then seconds later I got a text from the bank asking for confirmation on my Canadian number. I had no choice but to text “Yes” back, and that single text activated roaming for the day and cost me $15.
So write it properly from the get-go. You can get 90% of the way by naming things properly and following the Single Responsibility Principle.
Stone only makes sense for people used to pounds, shillings and pence. For instance, “This costs 3 pound, 4 shilling and 8”, and, “I weight 12 stone, 6 pounds and 3 ounces”.
FORTRAN IV was the first language I learned to program in. Punch cards!!!
I never expected to see a compiler in this list, at least not in 2023.
Back in 1988 I realized how rubbish Microsoft was when I discovered Borland’s Turbo Pascal and Turbo C compilers. I’d previously used the MS compilers and they were multipass, multi-minutes to finish a compile. The Borland ones were single pass and FAST.
Back then, compile times could be huge, and everyone was publishing benchmarks on compiled program performance, which mattered on the hardware of the day. I never even think about that stuff these days.
Well, there are specific hardware configurations that are designed to be servers. They probably don’t have graphics cards but do have multiple CPUs, and are often configured to run many active processes at the same time.
But for the most part, “server” is more related to the OS configuration. No GUI, strip out all the software you don’t need, like browsers, and leave just the software you need to do the job that the server is going to do.
As to updates, this also becomes much simpler since you don’t have a lot of the crap that has vulnerabilities. I helped manage comuter department with about 30 servers, many of which were running Windows (gag!). One of the jobs was to go through the huge list of Microsoft patches every few months. The vast majority of which, “require a user to browse to a certain website” in order to activate. Since we simply didn’t have anyone using browsers on them, we could ignore those patches until we did a big “catch up” patch once a year or so.
Our Unix servers, HP-UX or AIX, simply didn’t have the same kind of patches coming out. Some of them ran for years without a reboot.
Kotlin is a very easy transition, and it sorts out a ton of issues that you find in Java. Certainly easier than moving to Rust.
I’m not sure if traffic is “convenience” at this point. At least where I live, it’s a nearly essential piece of functionality.
In fact, for local driving it’s often the only reason to use a map app. I already know how to get to most of the places I want to go, I just need to know the best route to avoid traffic now.