I'm now at the point I research parts to see where the LED control is stored.
My keyboard LED is controlled internally without software. My mouse requires software to set, but there is open source rgb control software that was trivial to install and set once, uninstall and forget.
The only one I got wrong was my GPU, which apparently isn't rgb but just has a strip of coloured light beaming at all times.
Thankfully my case isnt mesh everything, so most light is kept inside.
> Leave your phone on silent permanently, setup your emergency contacts like partner and kids to ring on silent, and turn off all notifications except email and SMS/WhatsApp. That’s the key to a simple life. You won’t miss anything important and that realization is the most freeing
This is pretty similar to my setup. Always on do not disturb. Typically my family and close friends communicate through a chat app, that doesn't make sound but if it's time sensitive an sms or call will make sound for starred contacts.
Back on the day when phones had notification LEDs I'd setup apps to have specific colours. These days with always on OLED displays I use an app aodNotify to setup a a little spinning circle on the screen. Purple is family/friend chat app, blue is a call, green sms etc.
Everything else I periodically poll for information. ie I go out of my way to check emails etc
I had a perfectly functional Galaxy A71 this time last year, still had great battery life, etc.
I had to replace it because it only has 5 years of support. Samsung offers 7 years of support but only on their top tier phones.
Google offer 7 years, even on their A series phones so I chose a pixel 9a. It's fine, I don't love it or hate it, but it's not doing anything I care about better than my last phone.
After the battery problems that the Pixel 4a, 6a, and 7a have had, I'll stick to the regular Pixel phones (well - who knows far this sideloading clampdown will go).
I know people have had battery problems with non-a Pixel phones, but the number of 'a' phones with battery problems caused Google to publicly respond.
Mine is so slow to become initially responsive. It (thankfully) comes on to whatever source / channel it was on when turned off, but it takes a good 15 seconds till you can change a channel, closer to 30 seconds to change input source. And when it does accept inputs it frustratingly drops inputs for another 10 seconds or so.
Recent switcher to macos. I can't find a way to separately set mouse acceleration and scroll wheel momentum.
I use a trackball for RSI reasons, in order to get across the screen in a single flick means high sensitivity, mouse acceleration is absolutely needed to be able to make small movements. This makes my scroll wheel useless because a single scroll moves the page about 1/10 of a line
I will pile on here and claim Apple is shockingly hostile to accessibility. From the weird way tabs work for focus to the limited options for text clarity, to the lack of control for mice customization, it feels like it has been a low item on their priorities for some time.
Great post. And if you want some control support for your cronjobs perl App::Cronjob[1] can provide features such has exclusive locking, so a job won't run if the previous run is still going, or provide a timeout, and some options for sending mail on success or failure
> I think this is incorrect. Specifically the Windows ARM support. Official hardware support page indicates that the Windows version requires x64. I unfortunately don’t have the hardware to confirm for myself. But Blizzard is the kind of company that would have made a blog post about that.
It has been around for a while, circa 2021. They made a forum post when they released it.
> There's something to be said for the restrictions of an environment when you're learning how to operate in a domain that seems to shape future thinking.
When at University the academic running the programming language course was adamant the Sapir–Whorf hypothesis applied to programming language. ie language influences the way you think.
Reading the YCombinator link there's a mention of APL and a comment by dTal[1] which includes saying:
> "A lot of the mystique of APL is because it's illegible ... nothing more than a DSL for 'numpy-like' code. .. same demo, using Julia and the result is (in my opinion) much more legible: ... let n=sum(map(
sum() in Julia is more clear and more readable at a glance than +/ in APL, but the APL version is a combination of two things. + which is a binary addition function, and / which is reduce, a higher-order operator or meta-function. sum() in Julia doesn't lead you to think about anything else except what other builtins exist. The APL notation leads you to wonder about combining other commands in that pattern, like times-reduce is ×/ and calculates the product of an array of numbers. From the notation you can see that sum and product are structurally related operations, which you can't see from names sum() and product(). Then you change the other part by wondering what plus does if used with other higher functions, like +\ (scan) and it's a running-sum across an array. (i.e. "+\ 1 1 1 1" gives "1 2 3 4", the sum so far at each point).
So the notation isn't just about readability, it's a tool for thinking about the operations. Different notations enable you to think about different things. If we imagine there was no sum() then you might write:
sum = 0
foreach (n in numbers) { sum += n }
product = 0
foreach (n in numbers) { product *= n }
and whoops that doesn't work; this notation brings to the focus that sum has to start with 0 and product has to start with 1 to get the right answer and you can wonder mathematically why that is; APL notation hides that just like it hides the looping. Different notation is a tool for changing the what people think about - what things we must attend to, cannot attend to, and what new things a notation enables us to see. dTal's next reply:
> "the power of abstraction of APL is available to any other language, with the right functions. ... there's nothing to stop anyone from aliasing array-functions to their APL equivalents in any Unicode-aware language, like Julia (oddly, nobody does)."
Maybe nobody does it because if you can't take the patterns apart and put them back together differently without an APL engine behind it, is there any benefit? Take an example from APLCart[2]:
{⍵/⍨∨\⍵≠' '} Dv # Remove leading blanks [from a character vector]
In C# that task is str.TrimStart() and I assume it's a loop from the start of the string counting the spaces then stopping. Calculating length - num_of_spaces, allocating that much memory for the new string, copying the rest of the string into the new memory. I wouldn't think it was do-able using the same higher order function (\ scan) from a running sum. What this is doing to achieve the answer is different:
{⍵≠' '} ' abc def' # make a boolean array mask
┌→──────────────────────┐ # 0 for spaces, 1 for nonspaces
│0 0 0 1 1 1 0 0 0 1 1 1│
└~──────────────────────┘
{∨\⍵≠' '} ' abc def' # logical OR scan
┌→──────────────────────┐ # once a 1 starts,
│0 0 0 1 1 1 1 1 1 1 1 1│ # carry it on to end of string
└~──────────────────────┘
{⍵/⍨∨\⍵≠' '} ' abc def'
┌→────────┐ # 'compress' using the boolean
│abc def│ # array as a mask to select what to keep
└─────────┘
Now how do I remove the leading 0s from a numeric array? In C# I can't reach for TrimStart() because it's a string only method. I also can't assume that there's a named method for every task I might possibly want to do. So I have to come up with something, and I have no hints how to do that. So I have to memorise the TrimStart() name on top of separately learning how TrimStart() works. That notation gives me a clear readable name that isn't transferable to anything else. In APL it's:
{⍵/⍨∨\⍵≠0} Dv # Remove leading zeroes [from a numeric vector]
That's the same pattern. Not clear and readable, but is transferable to other similar problems - and reveals that they can be considered similar problems. In C where strings are arrays of characters, you aren't doing whole array transforms. In C# strings are opaque. In APL strings are character arrays and you can do the same transforms as with numeric arrays.
Which part of that would you alias in Julia? I suspect you just wouldn't write a trimstart in this style in Julia like you wouldn't in C#. You wouldn't think of using an intermediate boolean array.
It's not just about "readability", the APL notation being concise and self-similar reveals some computy/mathematical patterns in data transforms which "giving everything a unique English name" obscure. And APL notation hides other patterns which other notations reveal. i.e. Different notations are being tools for thinking differently about problems, Notation as a Tool for Thought.
reply