Being able to act and think critically, although necessary, is often a privilege to cultivate and to practice.
Being able to act and think critically, although necessary, is often a privilege to cultivate and to practice.
Friday afternoon situation: I finally finished a complete backup of my system to a secondary hard drive. Mission accomplished, time to store the backup drive somewhere safe, right?
There was only one tiny, slight, mildly catastrophic problem.
I have two identical hard drives inside my PC chassis. Same brand. Same capacity. Cable management inside my case looks like a bowl of cybernetic spaghet, so physically tracing the SATA cables was an absolute non-starter unless I wanted to dedicate the next three hours to unraveling zip ties.
Linux, in its infinite wisdom, labeled them /dev/sda and /dev/sdb. But which physical brick of spinning rust was holding my precious backup, and which one was actively holding up the entire damn OS? One wrong yank while hot-swapping, and I'd be restoring a backup I literally *just* made.
Naturally, instead of opening the case like a normal person, I decided to diagnose this using raw, unadulterated terminal wizardry.
Enter the Spin-Down Technique™.
I opened the terminal, cracked my knuckles, and issued a command to manually put /dev/sdb into hibernation:
sudo hdparm -y /dev/sdb
I pressed Enter, pressed my palm against one of the disk in a heist movie, and waited.
*Whirrrrrrrrrrrrr—click.*
SILENCE. One of the drives went totally dead quiet and stopped vibrating. It worked! I knew exactly which physical drive was /dev/sdb!
Now, I just needed to double-check /dev/sda to be 100% sure before pulling the plug. I fired up the partitioning utility on /dev/sda:
cfdisk /dev/sda
And then... pure poetry. I had to sit there for 3 seconds listening to the other drive go *VMMMMMMMMM* as the platters spun back up to 7200 RPM just to read the partition table.
No cable tracing, no pulling out my hair, and zero accidental OS destruction. Just a Linux kernel, a few terminal commands, and acoustic drive detection. Who needs LED status lights when you have ears and hands?
Moral of the story: Always listen to your hardware. Literally.
--gemini
At the center: Cybernetics, Informatics, and Smart System already encompass all the three axes, but respectively have different leanings, i.e. Cybernetics put more emphasis on control, Informatics (the name allegedly comes from information-automatization) put more emphasis in the information, and Smart/Intelligent System put the emphasis in automating the tasks.
Entertainment may serve as another axis: media, interactive computing, playing around with robots of any kind, etc. People can have fun in any way the want, though: from people having fun watching CNC mill to having [simulated] sex on VR.
I badly wanted to add "Entertainment", unfortunately venn4 is not in matplotlib yet; and the interactions can also be quite loose yet complicated just as chatgpt suggested.
Your mileage may vary tho.
Currently I revisited some GUI programming for some weekends project with some friends at https://github.com/jendralhxr/uget2/. Our go-to python guy used to like guizero, but recently he is trying out tkinter and customTkinter. I have never really tried Tk and later found that customTkinter model-view-controller model is not as fluid as I experienced with Qt.
Hence, I revisited the community-official Qt-Python affairs: (saner person would just call these bindings instead)
Thankfully, the official-official version has better naming scheme that is self-explanatony:
But this version was said to be lagged for a while during Qt 5 term, albeit started earlier during the Qt 4 days. Company stuff, I guess.
All the projects are good with wonderful people working behind/on them. But this is what I don't really like with python people: not really considering how to pass on legacies (i.e. not quite respecting legacy code base, compatibility issues with third-party libraries, reluctance to re-study/re-write the code, and the inertial needs to keep the business going with developmental code).
I guess as end user, we can still use them, wisely and adapt to changes, swiftly.
This paper looks indeed weird: 10.1142/S1793431120500013. The content is (kinda) okay: alternative alloy for RC cylindrical bridge pier which helps bridge by flexibly cope with seismic load. But the problem is in the list of authors. The last listed author (Nailiang Xiang) uses email address of supposedly another person (Ko Noryo).
Those two are actually the same person. It is his Japanese pseudonym. What gives
I think the third part of the saga is about memories and reminiscence. We hear more voice echoes and occasional dissonant piano chords. Around the 3:00 mark, we hear the memoriiiiies. Grey did not elect to fill in the piano chords, this is not just any other pop song.
Compared to the older version (below), 2023's is definitely darker. It is no longer about anger, anguish, and helplessness. Death (as in void/emptiness) perhaps?
My work pc is running the latest ubuntu jammy (22.04LTS) and NVidia has yet to release the promised Jetpack 6 and sdkmanager [supposedly] featuring ubuntu jammy for both the host and target board.
The latest jetpack currently available (5.1.2) features ubuntu focal (20.04LTS) target. They provided some docker images for the host, but the actual run-ability is questionable and we need some more workaround. Some ppl had it easy, most others struggled (here, here, and others).
Inside the docker container (host), we need to modify /etc/issue, /etc/lsb-release, /etc/os-release and /etc/apt/source.list to "pretend" as ubuntu jammy if your actual host is not actually one.
Here is my flashing/installation notes:
I use these two families of programming languages quite often. I did C/C++ first then Octave/Matlab later on. The two differ in how they handle multi-directional array, especially ones more than 3-nest deep.
We know that computer memory uses (virtual?) contiguous address of memory--so by any means they are 1-dimensional. But program (and in this regard, the programming language) needs to map them somehow to fit the continuous address arrangement abstraction.
On 3-dimensional array, with C it is:unsigned int val[2][4][3];
for (i=0; i<2; i++){
for (j=0; j<4; j++){
for (k=0; k<3; k++){
printf("%d %d %d %p\n", i, j, k, &(val[i][j][k]));
}
}
}
*
0 0 0 00007ff73f2dd040
0 0 1 00007ff73f2dd044
0 0 2 00007ff73f2dd048
0 1 0 00007ff73f2dd04c
0 1 1 00007ff73f2dd050
0 1 2 00007ff73f2dd054
0 2 0 00007ff73f2dd058
0 2 1 00007ff73f2dd05c
0 2 2 00007ff73f2dd060
0 3 0 00007ff73f2dd064
0 3 1 00007ff73f2dd068
0 3 2 00007ff73f2dd06c
1 0 0 00007ff73f2dd070
1 0 1 00007ff73f2dd074
1 0 2 00007ff73f2dd078
1 1 0 00007ff73f2dd07c
1 1 1 00007ff73f2dd080
1 1 2 00007ff73f2dd084
1 2 0 00007ff73f2dd088
1 2 1 00007ff73f2dd08c
1 2 2 00007ff73f2dd090
1 3 0 00007ff73f2dd094
1 3 1 00007ff73f2dd098
1 3 2 00007ff73f2dd09c
*/
See the memory address changes LSB (least significant [4] bytes, lol) based on the variable's LSB (last-shown beacon, I am making up this abbreviation).
With Octave, the story is slightly different. The two pages from the official documentation:
- https://docs.octave.org/v4.0.3/Index-Expressions.html
- https://docs.octave.org/v5.1.0/Advanced-Indexing.html
don't help much as they only give example up to only 2-dimension.
>> val= reshape(1:2*4*3, 2,4,3);
>> val =
ans(:,:,1) =
1 3 5 7
2 4 6 8
ans(:,:,2) =
9 11 13 15
10 12 14 16
ans(:,:,3) =
17 19 21 23
18 20 22 24
>> val(:,1,:)
ans(:,:,1) =
1
2
ans(:,:,2) =
9
10
ans(:,:,3) =
17
18
>> val(1,:,:)
ans =
ans(:,:,1) =
1 3 5 7
ans(:,:,2) =
9 11 13 15
ans(:,:,3) =
17 19 21 23
See.... the first index in the element actually iterates first, i.e. the LSB now becomes MSB. It is somewhat nice to have first index as row vector/identifier and second index for the column. But what about third index? Fourth?
Well, sometimes you just have embrace the quirk.
Lawrence Kohlberg developed a model of human conscience development on مميز (mumayyiz), one's ability to perceive what's good/proper and wrong/bad.
It has been said there were three stages:
To the observation, these three are more of approaches rather than stages as they can happen simultaneously, i.e. conventional approach provides the general evaluation for pre-conventional approach. Although for most of the time they do agree with one another, exceptions do happen--in which we need to tread things more carefully and taking multiple/deeper perspective.
Early morning, I placed a rather unscheduled phone call to a big brother.
Thank you for being there, and here back then. We are gonna visit you someday, when the dirt has settled, when the water can quench our thirst.
We are, already, some steps forwards. Thanks to you too.
Github no longer allows HTTPS access to the repositories. SSH has been the new style since August last year.
remote: Support for password authentication was removed on August 13, 2021.
I have had an old repo which I had left since two years ago when HTTPS was still the norm there. As now I need to continue some more work on it, the usual git push ritual is no longer working as the remote was still on the HTTPS password authentication.
The way we change it so that remote points to SSH session is:
$ git remote remove origin
$ git remote add origin git@github.com:username/repo.git
$ git push --set-upstream origin main
Make sure your SSH public key is already registered up there in the cloud :)
Saw it right away. The arch/suspension bridge collapsed [more] due to the failing hanger cable. My claim is justified.
I guess I went to school not for nothing. Hopefully the phd is somewhat useful for the society later down the road.
10.1155/2013/756912 and 10.3233/SAV-2012-0736
I just happened to stumble upon these two DOIs which refer to the same document. Although the practice is not illegal by any means, it said to be deprecated (since when?).
Expert system (the dumb) has these limitations: common sense, inspiration or intuition and flexibility to apply in the semi-relevant field. Experts (the sensible) decide based on their overall view of the occurred problem, but expert system has not enough information. Experts know their lack of knowledge and the limits of their information in dealing with new problems, but expert systems have narrow knowledge domain and just work when they are developed for specific or very specific problems. (source)
Unfortunately, off-the-shelf education can often make human just an expert system. The actual learning experiences: knowing what works and what doesn't, how and why, conceptualizing concepts across different phenomena; that make human an actual expert.
Japan is quite a fascinating places when it comes to cars. The country has developed its automotive industry with quite a unique identity after WW2 but still likes the global "style" of automobile. Within the country, the are also subcultures associated with particular group of people, e.g. bosozoku, ricer, etc.
The Japanese consumers have indeed learnt a thing or two about cars when it comes down to pragmaticism of car ownership. Typical car ownership scenario in Japan involves family of 3 with one 4-seater kei or 5-seater compact hatchback; or family of 4/5 with one 7-seater (usually wagon) and a kei.
But, farmers, with ample subsidy from local government to run their business, regulated [high] price of agricultural produce, extended family living together within the same land plot, and relatively cheaper living cost in rural areas; have some spare change and purchasing power. And when they go for cars, oh boy, they GO!
This morning, I realized a farmer family in my town has five cars in their open-layout garage: just a roof with plastered floor. Those five cars are: a Subaru SUV, a BMW station wagon, a Daihatsu kei, a Nissan kei truck, and a Mazda sedan.
Later I noticed that the Subaru SUV is no longer there, now there is a Mazda SUV.
The immediate neighbor has a Lexus, a Toyota wagon, and three keis. And the next neighbor collects Porsches, and drives quite a VW. Oh boy.
This neighbor just got a BMW replacing the VW for the daily.
A friend recently purchased an SSD (Crucial CT240BX500SSD1) to replace the now-getting-slower HDD (WDC WD5000LPCX)in his laptop. The SSD is smaller so simple dd won't like like what I did previously. Thankfully the old drive was not full and we can cram the content in.
The laptop has optical drive bay which I swapped with 2.5" drive caddy so we can use both the old and new drive together.
I went with FossaPup64 as it fits the only flashdrive within my grasp (1 GB) today. The current version of cfdisk now does support EFI beautifully, we can just mimic the partition table from the old drive, given that we still have the EFI partition, a reserved partition for the recovery mode,and Windows system partition.
Disk: /dev/sda (the new SSD)
Size: 223.58 GiB, 240057409536 bytes, 468862128 sectors
Label: gpt, identifier: 4AFD6168-865F-4702-BD2F-ADF7B40C7458
Device Start End Sectors Size Type
/dev/sda1 2048 534527 532480 260M EFI System
/dev/sda2 534528 567295 32768 16M Microsoft reserved
/dev/sda3 567296 468862094 468294799 223.3G Microsoft basic data
Disk: /dev/sdb (the old HDD)
Size: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Label: gpt, identifier: 1C7B31D6-E6ED-4F17-B1A5-F3CA5D141DB0
Device Start End Sectors Size Type
/dev/sdb1 2048 534527 532480 260M EFI System
/dev/sdb2 534528 567295 32768 16M Microsoft reserved
/dev/sdb3 567296 974725119 974157824 464.5G Microsoft basic data
/dev/sdb4 974725120 976773119 2048000 1000M Windows recovery environment
mkfs.ntfs -f /dev/sda3
mount -t ntfs-3g /dev/sda3 /mnt/sda3
mount -t ntfs /dev/sdb3 /mnt/sdb3 (so as not to accidentally delete things)
rsync -rtvu /mnt/sdb3 /mnt/sda3
The business is then about reinitializing the loaders in the boot/system partition with bcdedit business. Then, profit!
CSS by Chama Digital. Template by Deluxe Templates. Support Dante Araujo. Best viewed on 1280px width display.