Disassembling my Thinkpad X61s. Lenovo could've sold this form factor forever. 4:3 screen, lightweight, all the ports, great battery life, docking station, easily disassembled and nothing glued down.
Would I buy a new one every year? No. But often enough.
It wasn't just the serpentine belt. The coolant Y junction to the water pump cracked and was leaking, which led to more work than expected. I replaced several other coolant fittings as well. Everything's in tip-top shape just in time for the Triduum and Easter morning.
Changed the oil after church. It feels good to finish a job, so I went for a drive. Windows down, ELO on the radio. I was almost home when the serpentine belt splintered. Waiting on a tow.
I guess tomorrow's job is replace the serpentine belt. ๐คทโโ๏ธ
https://t.co/CXF92bdYT2
@yutasuito Sincerely, this is one of the most Japanese things I can imagine:
"It stood for a thousand generations because we kept the space around it clean and tidy it."
๐ซก
Client/server was a mistake. Web browsers with JavaScript was a compounding mistake. DOS boxes and sneakernet* were the pinnacle of personal computing. Not Windows. DOS!
USB thumb drives count as sneakernet media.
I can turn on the CRT and then hit the power button on my computer and DOS is booted and at the command prompt by the time the display's lit.
That's how software should work.
@WallStreetApes What if we switch it up and I pay what I want based on what I know about the company?
- CEO earned $100M last year, I pay half the bill
- Laid off Americans and hired H1-Bs, I pay $0.00
- Off-shored jobs, they pay me
Seems fair. ๐คทโโ๏ธ
There will be no society based on self-sustaining AGI and UBI. At first, it will look as if we've achieved it, but at some point there will be a catastrophic failures that cascades throughout the world and there will be no one left who knows how to fix what broke or build anew.
@FightWithMemes In short, men's empathy and pleasures centers are highly correlated with truth and justice. At a guess, women's pleasure centers lit up when fair players were made to share their success with the cheaters.
@MikeyDiMercurio@Ford You should've bought a case of stock clutches and replaced it on the same schedule as the brakes. If they're good enough to ship with, they're good enough to replace with. ๐คทโโ๏ธ
Disassembling my Thinkpad X61s. Lenovo could've sold this form factor forever. 4:3 screen, lightweight, all the ports, great battery life, docking station, easily disassembled and nothing glued down.
Would I buy a new one every year? No. But often enough.
Has any hardware company changed processor arch more than Apple? A lot of software companies are well-adapted to this (more so in the 70s and 80s), but consumer hardware and the entire end-user ecosystem? I think not. Apple must be the leading experts in this space.
When Apple moved from Intel processors to its own ARM processors, we did not know how they would handle all the existing Intel software. Then Apple shocked me with its software solution (Rosetta) that could transparently translate x64 binaries to ARM binaries. You just picked your old program, compiled years ago for an old CPU, and it just ran at high speed on a totally different CPU.
It seemed to have inspired Intel.
One problem when deploying software binaries is that you do not know anything about the processors your clients are using. They could be old CPUs taken from a trash can or the very latest Intel CPU.
Thus, when you compile your code, you often target a generic CPU. The net result is that you are not using the fancy features of the newest CPUs. This is especially true under Windows where people have a wide range of systems.
Thatโs frustrating if you are Intel or AMD: you have these new CPUs with features that most software will not use.
This is an advantage for systems like game consoles: if you know from the get-go which processor to target, you can optimize better.
There are ways around this issue for developers: you can check at runtime for the processor type and then select optimal code. Compilers provide some of this functionality by default. For example, they may have different memory copy functions and switch at runtime depending on the detected system. But compilers can only do so much, and developers do not have a strong incentive to optimize their software for specific CPUs. Doing such runtime dispatching is a lot of work and it complicates testing, thus increasing costs.
To make matters worse, nobody will tune their software for processors that are not yet available. Thus, old software may not benefit from more advanced features on newer CPUs. Sure, the developer could recompile the code, but it takes time and money.
A secondary but important issue is that compilers are often not great at optimizing even when you tell them which processor to target specifically. It is a matter of incentives: why should Microsoft put a lot of effort into making a family of Intel processors shine?
So Intel created something called iBOT (Intel Binary Optimization Tool). It optimizes x64 binaries on the fly. For now, it only works on a few popular games and only for some specific processors.
@tomshardware has a great article on the topic where they report an 8% performance boost on average, which is quite impressive given that it comes for free if you are the user.
Of course, Intel picked the few games where their techniques worked. How this scales is unclear. Intel keeps making new processors and there is a lot of software around. It would have been more impressive had Intel boosted the performance of software generally. Still: the idea is intriguing.
Check out guitar George
He knows all the chords
Mind, it's strictly rhythm
He doesn't want to make it cry or sing
๐คทโโ๏ธ
https://t.co/1uhTr4SbNU
I dropped the cheap Ikea milk frother last night. It exploded into a half dozen pieces. I put it back together. It's almost certainly better than new in terms of structural integrity.
Changed the oil after church. It feels good to finish a job, so I went for a drive. Windows down, ELO on the radio. I was almost home when the serpentine belt splintered. Waiting on a tow.
I guess tomorrow's job is replace the serpentine belt. ๐คทโโ๏ธ
https://t.co/CXF92bdYT2
@FrankBr05713205 "The starter was inside the engine under the intake manifold!" ๐ญ
At least it wasn't a transverse mount ... Oh, dear Lord. ๐คฆโโ๏ธ
How I used Topological Sorting to Automate Our ETL Build Process
One of the things I'm most proud of at work is the SQL Server build routine I wrote. Our ETL process is built on 100+ stored procedures that denormalize a few hundred tables from SAP, apply analytics, and INSERT the results into related denorm tables (invoices, purchase order, etc.).
In the early days, folks would insert the name of the stored procedure in a build script, that would be loaded into a table at each run. SQL Server Agent would then run a procedure that would select the next script to run. The script maintainers were responsible for inserting their script in the right place to ensure any dependencies they had on other denorm tables were complete. As you can imagine, that fell apart fast.
I set out to fully automate the build-time ordering. Fortunately, this is easier in SQL Server than you might expect. How?
What makes SQL Server so awesome is that it uses the power of the RDBMS to manage itself. SQL Server tracks every table referenced by every view and stored procedure (as long as it's not dynamic SQL). Basically, it maintains a table of DAGs. If you have a DAG, you can write a topological sort for it, and that's what I did. I get a list of all the build scripts (stored procs), their dependencies, and then create a runtime order that ensure each script runs when all its dependencies are built (think Make(1) but with introspection).
Even better, a lot of the scripts are very small DAGs themselves that only depend on a few other tables. This means I can run parallel builds once I know what depends on what. The scheduler runs independent procs in parallel, but switches to serial execution when paths converge on shared dependencies.
What had become a nightmare to run and maintain now runs completely unattended.
Maximum distance from the sun, 94 million 537 thousand miles.
Minimum distance from the sun, 91 million 377 thousand miles.
Mean distance from the sun, 92 million 957 thousand and 200 miles.
Mean Orbital velocity, 66,000 miles per hour.
Orbital eccentricity, 0.017.
Obliquity of the ecliptic, 23 degrees 27 minutes 8.26 seconds.
Length of the tropical year, equinox to equinox, 365.24 days.
Length of the sidereal year, fixed star to fixed star, 365.26 days.
Length of the mean solar day, 24 hours 3 minutes and 56.5555 seconds in mean solar time.
Length of the mean sidereal day, 23 hours 56 minutes 4.091 seconds at mean sidereal time.
Mass, six-thousand, six-hundred milion milion milion tons.
Equatorial diameter, 7,927 miles.
Polar diameter, 7,900 miles.
Oblateness, one and 298th.
Density, 5.41.
Mean surface gravitational acceleration of the rotating earth, 32.174 feet per second per second.
Escape velocity, 7 miles per second.
Albedo, 0.39. Albedo, 0.39. Albedo, 0.39. Albedo....
https://t.co/h2rxXKKh8w