Learning to write Operating System - Low Level Language

I have been came across the material from time to time, but never really dive into it. But this may be a good resource:

https://news.ycombinator.com/item?id=40571500&utm_source=tldrwebdev

Here's the paste of their comments so far, in case it gets lost:


sshine
 1 day ago | next [–]
If you want to "go low" in the operating system, you could write a Linux kernel module:https://sysprog21.github.io/lkmpg/https://blog.sourcerer.io/writing-a-simple-linux-kernel-modu...If you want to "go low" in the way hardware works, you could try and write an interrupt handler on an embedded device.If you want to "go low" in how optimizations work in application development, you could try and implement microbenchmarks and look at flamegraphs.https://github.com/brendangregg/FlameGraphhttps://bheisler.github.io/criterion.rs/book/index.htmlreply
kjuulh 1 day ago | prev | next [–]
If you want something on the more application side, I.e. utilization of low-level techniques, I can highly recommend looking into game engine development, even if you aren't interested in games per say.I've recently enjoyed Game Engine Architecture, mostly because there is an interesting mix using low level techniques to solve problems a normal application wouldn't be required to fix.Game development in general is case for tuning yourself to when you should utilize high level programming techniques, and when required dropping into low level optimization to solve local problems.reply
mandliya 1 day ago | prev | next [–]
CUDA programming (writing CUDA kernels) might be a good direction too.GPU race is getting really hot and there is a lot of work being done to squeeze every ounce of performance especially for LLM training and inference.One resource I would recommend is “Programming massively parallel processors” [1]I am also learning it as my hobby project and uploading my notes here [2][1] https://shop.elsevier.com/books/programming-massively-parall...[2] https://github.com/mandliya/PMPP_notesreply
lelanthran 1 day ago | prev | next [–]
Low-level means different things to different people:1. The best source of low-level information on things like operating systems (writing your own) etc is https://wiki.osdev.org/Expanded_Main_Page2. Compiler related low-level should include a read through Crafting Interpreters (https://craftinginterpreters.com/), even if all you're going to do is create compiled languages.3. Hardware type low-level (where you build your own logic) is a long and ultimately non-rewarding path. I would suggest https://eater.net/8bit/All those links are only starting points; use them to find a direction in which to head.[EDIT: I also recommend writing a eBPF module for linux - easier than writing a kernel module, with just as much low-level hooks as you might need].reply
abnercoimbre 1 day ago | prev | next [–]
Join the Handmade Network [0]. Much can be learned by hanging out with the right kind of competent/enthusiastic crowd. And if you allow the plug, I run the conferences [1].[0] https://handmade.network[1] https://handmadecities.comreply
makz 11 hours ago | parent | next [–]
This is one of the coolest things ever.reply
visil 1 day ago | parent | prev | next [–]
It seems that I've been on a right track in some sense - I stumbled upon Handmade Network a few weeks ago!reply
mikewarot 1 day ago | prev | next [–]
It's nowhere near all the way down to the bottom of the stack*, but it is a lot closer... try out Nand2Tetris[1], where you start with a fairly low level construct... the NAND logic gate, and work your way up to a CPU, Memory, and make a virtual PC, then write an assembler and programs for it.[1] https://www.nand2tetris.org/* - Lower levels include transistor logic, analog electronics, electromagnetism, chemistry and the equilibrium equation (how transistors work), quantum mechanics (how atoms and chemistry works).reply
junon 1 day ago | prev | next [–]
Game engine development or going even lower and dabbling in embedded. Embedded in particular helped me to understand computers way more in depth than I would have just sticking even to application-side C.Also, learn Rust.reply
sph 1 day ago | prev | next [–]
Maybe side-step into the most fun hobby in low-level computing: OS development.https://wiki.osdev.org/Main_PageIt will give you a much more holistic view of computers-as-hardware and the low-level intricacies, that are in my opinion more useful and more foundational than just being good at optimising a hot-loop.I did it in my teenage years, and it's my first true and only love. Now almost 20 years later I'm back at it, this time with all the accumulated experience in software engineering. There is nothing quite like it. Any basic, trite design (i.e. the usual POSIX clone) will teach you a great deal about the entire stack.reply
koliber 1 day ago | prev | next [–]
Implement some none-trivial algorithm and then try to optimize the heck out of it. Focus on the concrete CPU, architecture, cache, and memory in the hardware you have in front of you. Forget portability for a moment.This comes to mind: https://www.morling.dev/blog/one-billion-row-challenge/Read how others have done it. Here's an example in Java that goes relatively low-level to squeeze out performance: https://questdb.io/blog/billion-row-challenge-step-by-step/reply
marckerbiquet 1 day ago | prev | next [–]
Agner Fog's optimization manuals https://agner.org/optimize/ are x64 oriented but are a very valuable resource for C++ and assembly programming.reply
cladopa 1 day ago | prev | next [–]
What do you want low programming for?I learned assembly so I could disassemble and understand programs.I learned C so I could use all the libraries that people had made and their frameworks than later because C++, Objective C, C#, java, python and other derivatives.I wanted to manipulate images, speech and video and using high level programming language was so inefficient so I continued using C.I learned FPFGAs again because I needed efficiency or the things I wanted to do like controlling robots did not work at all(they moved so sluggishly).I love learning things, but that was never enough for me to learn something deeply when problems appear.reply
slyfox125 1 day ago | parent | next [–]
While there are a ton of replies here with great ideas, you make the most important point: most of the best work (across disciplines) is done when you have an objective. Find an issue in need of a solution (or better solution) and use the tools available (or make better ones) to accomplish the task at hand.My suggestion would be to find something that can be improved on in daily life and then learn the skills necessary to make that improvement, to include the trades more physical in nature, such as woodworking, 3D printing, etc. Then, combine those skills with, say, programming embedded devices, etc. or whatever else is needed to accomplish the task.This ultimately provides a diverse skill-set, feeds the desire to learn, and provides legitimate improvements to quality of life - both tangible and intangible.reply
muzani 12 hours ago | prev | next [–]
I'm surprised nobody has mentioned mobile yet. While native mobile works through the Android/iOS API, it's often quite close to the minimum abstraction level.Here's a doc you can dig around with https://source.android.com/docs/coreYou get a high level overview, then it explains how everything connects right down to the hardware. It's open source too, so you can go in there and poke around.If you want something that can make money, I'd say look at camera and Bluetooth, because these are the things that need the most customization. Neural network API could see a lot of use in the future too.But there's plenty of fascinating stuff, like how it renders fonts, how it handles hearing aids, and so on.Edit: TIL Android has a category of 'rich haptics', where it gives tiny haptic feedback when you swipe your finger across a surface or to the beat of music. Very few app devs know this, so it's not integrates well into apps.reply
afr0ck 1 day ago | prev | next [–]
Git pull the Linux kernel source tree (with lxr or cscope for code navigation). Open the Linux kernel mailing list, get some patch you're interested in (e.g. memory management), apply it to your tree, study the patch and participate in solving subsequent/related problems.reply
zamalek 1 day ago | prev | next [–]
Arduino/embedded, but forego the "drivers" - interact with the registers directly. I recommend anything RP2040-based (the Pi Pico is the first-party option) because the datasheet stands completely alone in terms of quality.reply
pabs3 15 hours ago | prev | next [–]
Look at how to bootstrap a compiler, kernel etc from source when you don't have any binaries for compilers, kernels etc.https://bootstrappable.org/ https://github.com/fosslinux/live-bootstrap/ https://bootstrapping.miraheze.org/wiki/Stage0reply
aetimmes 1 day ago | prev | next [–]
Read through Understanding Software Dynamics by Richard Sites and work through the example problems in the book.He discusses exactly what you're describing (L1/2/3 cache hit rates, their performance implications, how compiler optimizations can fool us into thinking we have a good hit rate, etc).Also take a look into Intel VTune and Processor Tracing to understand how performance counters like Instructions per Cycle are calculated.reply
Brightwise 1 day ago | prev | next [–]
I would recommend either to build up some RTOS/OS knowledge or excercise your skills in Low-levelish game programming with maybe C and SDL. I found especially these two very rewarding and I'm also making a living on the former for 15 years.https://wiki.osdev.org/ is a good source for getting a hold in OS developmentreply
1ark 1 day ago | prev | next [–]
I love Kip Irvine's book on x86 assembly. Very practical for building small programs, with questions and exercises. It is in the Windows environment though, but I don't think it matters significantly much, instructions are the same after all.http://asmirvine.com/index.htmreply
rwmj 1 day ago | prev | next [–]
FPGA + a RISC-V core. There are loads around, the simplest is probably https://github.com/YosysHQ/picorv32Learn how it works, try adding a new instruction or implementing an extension.reply
dprophecyguy 1 day ago | prev | next [–]
Here is the chronologically laid out resources i'll recommend.Start with this - https://bottomupcs.com/Then do this - https://www.youtube.com/playlist?list=PLhy9gU5W1fvUND_5mdpbN...and finally this https://diveintosystems.org/book/introduction.htmlreply
pietmichal 1 day ago | prev | next [–]
Give Performance-Aware Programming series by Casey Muratori a try!https://www.computerenhance.com/p/table-of-contentsreply
4pkjai 1 day ago | prev | next [–]
If you like game progrmaming I recommend some of the low level C courses by Pikuma. I've done the 3D graphics from scratch course and will do the Playstation 1 Programming course next.reply
kfreds 22 hours ago | prev | next [–]
> I'm just interested in how it all works under the hood.Learn everything there is to learn about the Tillitis TKey. It's the most open-source software and hardware USB security token there is. It is FPGA-based, and contains a tiny RISC-V core.Full disclosure: I'm involved in the project.reply
camgunz 1 day ago | prev | next [–]
I'm a little behind where you are (bad assembly knowledge) and I've always thought my next steps were learning about SPI and I2C, if that helps.reply
visil 1 day ago | parent | next [–]
Not so sure about you being behind me - one minute ago I had little to no idea what I2C or SPI even mean 🙂reply
ydnaclementine 1 day ago | prev | next [–]
Thanks for asking this. I was thinking very similarly after reading comments in the post about the new AMD processors yesterday and not understanding most of them, and another about some networking stuffreply
ReleaseCandidat 1 day ago | prev | next [–]
> What should I read or learn next to be able to reason about things like cache usage of a C program or possible low-level microoptimizations?Learn how to use a profiler like Linux' perf, VTune or Apple's Instruments. Which means interpreting the results of it to optimise your code.reply
greytape 1 day ago | prev | next [–]
https://csprimer.com/reply
alexdowad 1 day ago | prev | next [–]
From your description of your current level, reading Patterson's "Computer Architecture: a Quantitative Approach" would be a next good step.reply
moeadham 1 day ago | prev | next [–]
Go all the way down, grab an FPGA dev board and learn Verilog/VHDL!reply
sakex 1 day ago | prev | next [–]
An emerging (not-so) low-level programming discipline is AI/ML. So you could try implementing decoder only transformers using CUDA.reply
hnaccountme 8 hours ago | prev | next [–]
Look into bfp toolsreply
shivc 1 day ago | prev | next [–]
Might not exactly be very low level but I really liked the learn c programming by dr. chuck youtube course on freecodecamp youtubereply
gauravkumar37 1 day ago | prev | next [–]
https://cpu.land/reply
keyle 1 day ago | prev | next [–]
RTOS, robotics, virtual machines, bare metal games. Or move on to the GPU and pick up CUDA?reply
DoingIsLearning 1 day ago | parent | next [–]
Unless you are working on firmware for the actual actuators I would argue that nowadays robotics is not that low level as OP is aiming for.reply
palata 1 day ago | root | parent | next [–]
Nowadays robotics is about throwing stuff (including ROS, necessarily) in docker containers and running them on an Ubuntu 24.04 onboard the robot, and then adding GPUs and say "so that we can do AI in the future", right?At least that's my experience :-).reply
zabzonk 1 day ago | prev | next [–]
to be honest, i think you have it all there - now write something useful using itreply
gravescale 1 day ago | parent | next [–]
This is really the key. Grinding something you don't actually enjoy or find useful is pretty deathly, even if you get actively paid for it. "Low level", as others have said, is a very, very broad field and if you have an general interest in lower-level stuff, home in on what specifically interests you by trying to achieve some actual goal of use or interest to you.It doesn't really matter what it is, it could be porting FeeeRTOS to your toaster, writing a kernel driver for something, reversing some device protocol, implementing something on an FPGA or building some embedded device or hacking another one into something else. Just get stuck into something and feel the gravity of your open interests.Nothing you learn along the way will be a waste.reply
boffinAudio 1 day ago | prev | next [–]
What you're basically after is some "Tooling and Methodology" studies for embedded. You've got the basics, but now you need to learn some more tools and the methods that make those tools really useful to the embedded/low-level context.Some simple things you can do:* Get yourself a suitable embedded development system - I would recommend anything ESP32'ish that suits your fancy such as a Liligo or Watchy ESP32-based watch, or PineTime if thats more up your alley - and then write some little apps for it.* Get to know Godbolt with a great deal of intimacy, just as a general approach to understanding what is going on:https://godbolt.org/* Invest a little workbench time in some of the various embedded frameworks out there - platformio, FreeRTOS, etc. and, very important: learn the Tooling And Methodology techniques that these frameworks manifest.* Invest some workbench time in the RETRO Computing Scene. Seriously, you can still learn extremely valuable principles of tooling and methodology from an 8-bit retro system from the 80's. Get your favourite platform, get all its tools onboard, engage with its community - you will learn a lot of things that are still entirely relevant, in spite of the changes over the decades.* Get into the F/OSS tooling/methdology flow - find software projects that are interesting to you, find their repositories, learn to clone and build and test locally, and so on. There are so many fantastic projects out there for which low-level skills can be developed/fostered. Get onboard with something that interests you.Good luck!reply
anonymoushn 1 day ago | prev | next [–]
Proceed to highload.fun. Read the resources in the highload.fun wiki.reply
082349872349872 22 hours ago | prev | next [–]
Have you tried -nostdlib yet?reply
blankx32 1 day ago | prev | next [–]
Read Petzolds book Code Read NAND 2 Tetris bookreply
latenightcoding 1 day ago | prev | next [–]
an optimizing Lua or Lisp compilerreply
boffinAudio 1 day ago | parent | next [–]
Yes: +1, this.Learning Lua is a great way to get introduced to a lot of low-level concepts, from bytecode to VM's to language design and beyond.reply
visil 1 day ago | root | parent | next [–]
Ironically, I've been avoiding learning Lua for quite some time for some reason. I guess it's finally time to give it a try!reply
boffinAudio 9 hours ago | root | parent | next [–]
Lua is one of the most amazing bits of programming tech you can use... I have done all sorts of crazy things with it, from applications-with-databases to realtime scientific analysis, games engines and games ahoy, simple automation tooling for devops, and more. I recently decided to sit down and organize a few hundred directories, each with more than 20,000+ files in them, and I've now built a system that my colleagues are asking about installing for themselves..Its just such a great tool, please don't deny yourself this wonderful experience. Get the VM, put it in something - or find a VM somewhere in something already, and have a lot of fun. And don't forget to make sure you know what a sparse array is, and why pairs() and why ipairs() .. you'll be glad you did!PS - don't fall for the hype, you can do someTable[0] = "first", someTable[1] = "second" all you like .. 🙂reply
jiggawatts 1 day ago | prev | next [–]
https://godbolt.org/Not only will it show you how C/C++/Rust, etc... language statements map to CPU instructions, but it can also show you how CPUs execute those instructions! There are advanced views that show the various pipeline stages, execution ports, etc...E.g.: https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...The right-most tab should show you the CPU execution pipelinereply
jeffrallen 1 day ago | prev | next [–]
Go to oswiki and find out how to use an off the shelf real-mode boot loader to get qemu-system-x86_64 to boot into some code you write that adds 1 and 1 and leaves it in the A register. Find out how to use qemu to single step and see your 2 in the register.Then write your own OS.reply
azubinski 1 day ago | prev | next [–]
Low level is mostly not about processing core even if you are using assembly language. Yes, you can reach guru level in assembly language of some target platform but to do something really useful at the lower level you need to know and be able to use the peripheral.And the hardest things are in peripheral.Any modern microcontroller it will give you the opportunity to learn a lot of useful things about peripheral devices. You can start with any really good modern 8-bits micro like Microchip's 2nd generation of ATTiny, so you'll have in your hands a lot of very powerful interesting smart peripherals: hardware event system, small programmable logic, different timers, good ADC etc.The only rational additional consideration here is that your target platform should be popular, well documented and supported by the manufacturer.Then will be time for some Cortex-M0 device with DMA.Then you'll decide where to go further 🙂reply
exe34 1 day ago | prev [–]
my approach is always to pick an idea for a project that I care about and go full autistic not-invented-here in implementing it. i never finish such things, nothing I'd show/publish, but by the time I'm sick of it, I've learnt a huge amount.
Posted in Computer Science | Leave a comment

Journal of the Week

6/7/2024 Today Mr. You's video mentioned Hunter Biden having "affair" with his late brother's wife as a no no. So I looked up what I thought is a cultural shock and responded in his comment:

夫兄弟婚在基督教影響的國家是鼓勵的,所以不需以儒家思想看待。

汉族传统上不鼓励夫兄弟婚,特别是儒家兴起之后,社会舆论认为这是乱伦的一种,并立法禁止。明朝法律规定,娶父、伯、叔寡妇者判斩首,娶寡兄嫂或弟媳者判绞死[2]清朝也有类似的法律[3]。Source: Wikipedia on 夫兄弟婚.

6/5/2024 Stephen Tong on Gorgias' 3 propositions:

  1. Nothing exists.
  2. If anything exists, it cannot be known;
  3. If anything can be known, it cannot be communicated

I believe Tong elsewhere mentioned that these 3 propositions though have some truth in it, is full of side effect.

6/4/2024 Revisiting the facial reconstruction science. To satisfy my curiosity, I may have come across this before, but the best known proof of facial reconstruction is that of Gail Matthews. One that we can compare with the real photo.

I am thinking of a new theory: For people who talk a lot, love to talk, or just talk, if they cannot control their talk time when it needs to be, unaware of their time vs. other people's time, they are the shallow type, regardless of the vast knowledge they may have. My kind response to this should be in the ballpark of: "We'll talk later about it", rather than just cutting them off. That is, if it is still worth talking about.

Posted in Technical | Leave a comment

Home Electricity

With the rise of utility costs post-COVID, I need to start monitoring power usage in our home.

I received the email from Jersey Central Power & Light, the company that bills us for our electricity, telling me that we are using 3 times more than the efficient cost. Charging us $93.50 for month of April 19-May 20, 2024. That's for 622KWH, at around $0.14 per KWH (basic generation $0.101897, Delivery $0.043199) as of 2024. So that's about 20.06KHW per day.

Here's what I can gather so far, in Watt/h, this is not a comprehensive list yet:

Aquarium RIO 2100 pump 29w
Samsung C27F390 monitors 20w x 3 = 60w (tested)
HP EliteDesk 800 G3 65w
AI prime 16HD 55w x 2 = 110w
1x Tower fan 21.6w (tested-office fan)
GE Fridge GSH25JSDBSS (578 kWh/yr): 1,584w ?? (not tested)
Basement Arctic Freezer: 38.9w/h (tested)
AC
Kitchen POE switch & Aruba wifi: 16w (tested)
Backyard power (shed powering squirrel repeller & 2 backyard cameras): 15w (tested)

Total: (311 x 24hr) = 7.46K vs. 20.06K (alleged total daily usage)

Posted in Projects, Technical | Leave a comment

Journal of the Week

I think sometimes I should call these entries Journal of the Month instead of Week, seeing that the weekly entries are often more than a week.

6/1/2024 Modernism vs. True Christianity (Hebrews 2:3):

To the Post-Modernists: Christianity = ethics. Salvation = social reform. Rebirth = new hope.

5/29/2024 Stephen Tong on: Why OT first, NT second? (Why the law first, then grace?) So that the grace of God is not trampled upon. What's interesting in this video (which I find valuable enough to save it in my Library drive > Stephen Tong > STEMI > STEMI TAIWAN) is that Tong asked for audience input. He rebuked some of the audience's inputs have attitude issues: trying to teach others instead of humbly learning.

5/28/2024 It's quite fascinating to see my design (Word Add-on using Microsoft Office-js), though as simple as it is, for the company's letterhead wizard being displayed in the company intranet training page.

5/27/2024 I updated the entry on getting "Graduate/Bachelor's Degrees Online" to get an idea of pricing.

Some overview of how HTTP & HTTPS work.

A look into someone's project to make a Unix Clone - Bunnix.

Say farewell to ICQ (I seek you). This short article gave a brief overview of its history. Began in 1996 by Mirabilis (Israeli company), sold to AOL in 1998, which merged with Time Warner in 2000, then sold to Russian company Mail.Ru known now as VK under Digital Sky Technologies. VK's announced to shut it down on June 26th, 2024. I was also one of the heavy user, though I don't remember much of its usage. There was something called Trillian that I used which combine various chat programs including ICQ. Whatsapp is what many of us use now.

5/26/2024 Hiking after church/lunch. First time at Sourland Mountain Preserve, Hillsborough Township. 83 F, 70% humidity. Near the Kings' residence, where we had some quick lunch which each brought their own (Nadia, Joy and I went to QuickChek for 2/$5 empanadas) but Maria had prepared snacks and drinks for before and after (ice-cream, watermelon, etc) the hike, at their back porch. We did the Yellow Trail, 1.8 Mile, suggested for 1 Hour 9 mins, but we ended up roughly 2 hours. I can't say I regret it, but it's probably a better idea to pick a shorter trail. Perhaps one with more sceneries. Expect rocky trails in Sourland, especially for the seniors. The views are large boulders suitable for rock climbing for kids, and a couple of small streams. The rest is all green leaves. In spite of that, I think everyone enjoyed it. R. fell a couple of times, and C. had back tension. I enjoyed the after church talk at the Kings with ice-cream, as we had chance to talk a little about church in general. I was once again troubled by how to deal with kids growing up in church but left after. Possibly due to wrong motivations (i.e. music, friends, etc.). Everyone would know the true motive would be God and His Word, but what kind of fellowship should it really be towards the true purpose is a challenge for many. The next hike would have to be in the Fall, as it's getting too hot now.

Posted in Computer Science, Theologization | Leave a comment

Vocabulary:朱门酒肉臭 路有冻死骨

Rich doors have rotten wine and steak; while the streets are filled with frozen corpses.

The rich vs. poor.

出自唐代杜甫的《自京赴奉先县咏怀五百字

Posted in Vocabularies | Leave a comment

On Pressing Charges

This news I came across where a professor (Dr. William Burke - funny that there's another William Burke, who passed away, accused of child sexual abuse, who later died in a house fire in 1995) was assaulted by a man (Rodrigo Herzog) who claimed that his wife was sexually harassed by the professor 7 years before. Herzog can be seen in the viral video, grabbing and slapping and making death threats against Burke. When someone shouted "call security", Herzog walked away acting as if he's above the law. Many comments were on Herzog's side. I for one do not agree with Herzog's action. But I write this not because of this news itself, but because a few weeks ago, our church's Thursday Bible study touched on forgiveness and when I questioned about cops asking victims if they wanted to "press charges". Frank, the prosecutor immediately responded that there's no such thing as victim pressing charges, because that's the DA's job to press charges. Frank then gave the example of the murder of a family member, that the surviving family do not get choose to press charges. I think this is a lame example because it's a murder case. There is no question that murder is not the kind of damage that is inflicted only in the victim's family, but the tax paying society as well. A better example to show would have been small crimes like theft, or simple physical assault.

TV shows weren't the only time I've witness a victim given the right to press charges. Pak Tong was faced similar situation when he was victimized in theft and such and he often refused to press charges in order to give the young perpetrators a chance to turn a life around.

One can easily googled discussions about the topic of pressing charges. To my disappointment, most people seemed to be on Frank's side. That the victim do not press charges, the government does that through District Attorneys, and the victims could only opt for "not pressing charges" by not being cooperative in court.

After trying to understand the culture of this, what I gather is that it seems that "pressing charges" and "suing" are interchangeable. "I don't want to press charges" = "I don't want to sue". I didn't read into the words in the phrase "press charges", because that would otherwise be more appropriately used by law officials, who have license to press charges. So those who read into the words too much: press charges, who probably not think that it is interchangeable with "sue". But I think the TV culture treats them interchangeably and that it's more colorful or dramatic to say "press charges" rather than "sue".

Here's the proof from this news that "pressing charges" is a legit term used by victim and not just the government officials:

Although Burke initially rejected charges, a Baltimore police spokesman told DailyMail.com on Monday that the doctor has up to a year to change his mind. If he wishes to proceed, he would have to file a new statement of charges detailing what happened to the city's Court Commissioner's Office. Police, with evidence that would include the video, would then execute an arrest and likely charge the perpetrator with common assault, a misdemeanor punishable by up to a year in jail.
~ If this language doesn't mean pressing charges, I don't know what is.

Further searches landed me on this page with a good distinction of the two terms:

Legally, it refers to a formal accusation made by a prosecutor or the government against a defendant in a criminal case [criminal court]. However, in everyday conversations, “pressing charges” is often used to describe the act of reporting a crime and seeking legal action [civil court].

Posted in News | Leave a comment

Sunday Services (Past few weeks reflections)

5/19/2024 I think there are more non-reformed claiming to be reformed in America. They follow narrow-minded fundamentalists ideology of "reformed = simply biblical". I speak this from my experience in my current church. I ought to watch myself, for dealing with them is as dealing with the charismatics: narrow mindedness, bad hermeneutics, plagiarising reformed materials without attributing to the source but themselves, disingenuous in reasoning. There's already two, and I don't doubt more, who believe the conspiracy of NASA's moon landing, that it's possible man never set foot on the Moon, it was just some Hollywood tricks to them. Even ANSWER IN GENESIS answers this better than them, accusing these small minded folks of directly or indirectly slandering two Christian Astronauts (Charlie Duke, Jim Irwin) for lying about the moon landing. I believe the chief problem is their epistemology. They wish to separate human knowledge into rational thinking and some mystical "pattern, as some calls it" recognition. This dichotomy is where they fail, because in order to react to that which is revealed (general or special) to us, we must first understand it rationally. The moment we think, speak, discuss, we are applying rational thoughts. To say otherwise, that there is an non-rational approach, is disingenuous, and is equivalent to being drunk or being high or even the desire for witchcraft.

I paraphrase the below diagram that is well-known from Stephen Tong:

And they love to use the term "math" by conflating logic, rational reasoning with arithmetics math. So they love to say things like you cannot solve love with math or you cannot read literature this way as it's not a math problem, because math is just about 1 + 1 = 2 or 10 x 10 = 100. They would say this is different than science. That this is outside of the kind of triangle diagram I drew for Man's knowledge above. Thus, in their pride to justify their lack of IQ, instead of humbly study or be taught by people who know better, they created a new fantasy of knowledge, by conflating supra-rational (God's things that's beyond human understanding) with human capability, hence it is no difference than the pursuit of witchcraft.

5/12/2024 We did missions prayer meeting instead of Sunday school today. Nadia and I were asked to speak of our respective countries in terms of Christian persecutions as both countries were listed as "restricted" (hostile to evangelism) by VOM (Voice of the Martyrs). I don't agree with VOM's categorization for Malaysia. I believe Christian complacency is more problematic than Christian persecution in Malaysia: The West love to conflate human rights persecution with Christian martyrdom. But I'm ok with it, I did not raise this issue, especially when time is short as well, we could barely finish sharing and praying for the hour. Tom did a good job as the group leader for Malaysia, Indonesia and Cuba. The other group being for China and Nigeria. Phil was wrong in trying (in lack of time management) to tell Tom to open another day for such sharing seeing Tom was rushing things, which is something you bring to Rob, not Tom and not during the prayer meeting.

Phil also mentioned a case which I think was where famous Trump lawyer Jay Sekulow led American judicial team (ACLJ) appealing to the United Nation to call Malaysia to answer for the disappearance of Pastor Raymond Koh about 7 years ago. I remember seeing that CCTV video clip of the abduction by what seems to be secret police/military force in Malaysia, if not by fake police, years ago. Apparently this is still an ongoing court case. However, Phil, like the ACLJ, was off topic for using this case in our prayer meeting. There's no loophole in Malaysian judicial system against proselyting Muslims. If you do, you do so at your own risk as a legit criminal in Malaysian law, as Christian as you can be. It is wrong and unethical to spread propaganda using an abduction case of a pastor with ambiguous cause to accuse the Malaysian government of intolerance against Christianity. I had to comment on Sekulow's FB. ACLJ's claim for freedom of religion against Malaysian law is therefore moot, in which case, I would not have any problem to stand with the Malaysians calling out against Americans' own inconsistency in use of freedom - that is, in feminism, in gender identity confusion, and many more, between their own left and right parties. It is also a bad Christian testimony to knowingly break the human law in order to serve the King of kings, and then act like backing out or complaining about it when caught by enemies of God, this goes against Peter's first Epistle on theology of suffering (1 Peter 4:13). The reason I say Phil and ACLJ were off topic, because the Raymond Koh's case has nothing to do with evangelizing to Muslims even though it's allegedly so. The true content of this case about how the Malaysian police force handles a missing person case.

By end of service, Eleni pointed out how blessed we are to be in a country with freedom of religion. Then she related how diverse our church is which Phil added "E pluribus unum" in praise of this country. I kept quiet because these opens up bigger, longer discussions otherwise, and we don't have that kind of time. Especially we have the master of off topics and misinformation/lack of time management sense Phil involved, as knowledgeable he can be at times. Also, I need time to figure out who's talking what in the midst of off topics and misinformations. Now, after having time to gather my thoughts, my sound bite answers would be:
E pluribus unum was originally about the 13 colonies, but sure, you can apply it to the melting pot of diverse global cultures.
•Eleni, I don't think I see it the same as you when I thank God for freedom of religion in this country, but I also thank God for persecution of Christians in other countries. I do not pray for their escape from such persecution, I pray for their testimonies that glorify God's name in this persecution. Those who truly serves God in persecution, they know full well what they're getting themselves into, we can pray for God's strength in them, they do not need the hand of Uzzahs to hold them up. That said, I would also add that, we do not truly have freedom of religion in America either.

Like most Westerners, they do not understand how the East works, they do not get Socrates' quote: An unexamined life is not worth living.

5/5/2024 At Fellowship Meal, first chatted with Miriam and Per who owns an antique book store called https://www.rosenlundbooks.com/. I could use some help for rare books.

Posted in Theologization | Leave a comment

偷工减料, 技术债务 =(Technical debt)

偷工减料, 技术债务 =(Technical debt), material debt? => Technical and material debt.

some tries to distinguish this from Cruft (badly designed), so that technical debt can be view in a positive manner while the negative one is called cruft.

Posted in Questions, Vocabularies | Leave a comment

Journal of the Week

5/23/2024 Every time I hear news about attacks by the homeless in liberal states such as CA, incompetence in catch and release of criminals, victimizations of landlords, uncontrolled immigration, etc. I thought, these are major fails that Trump could have used against Biden in their upcoming interesting debates. So for more concern than fun, I posted this on FB:

I would advice consideration for Biden by both parties, even though both Trump and Biden are good at being in denial. Biden's health may not be able to withstand the pressure in the coming debates, especially the kind of arsenal Trump has against Biden's last few years of handling the country.

5/21/2024 Fundamentals by Mark Seemann. With all the frameworks and technological widgets, sometimes it may seem overwhelming to keep it, for tech folks. But the way around this is to master the foundations, or as Seemann called it, the Fundamentals. I think his article is worth a read because he has the same view as mine, even though it's not comprehensive enough for me. Also, since he's worked in the IT field in the 90s. I think the new comers post 2000 in the software developing industry are taking shortcuts that they don't really know what programming is. But they've gotten hired and paid wages higher than mine. I'm not jealous or envying their "success", because I see that as a problem, in the long run for companies that hired them (the reason we see lots of lay-offs these days: Microsoft, Amazon, Google, Elon Musk's, etc.), and a broken personality - a very Epicurean one.

5/20/2024 Finally met the new neighbor (brothers: Yunnis and Yannis (Annis?)) who came after Joe left. I think there was maybe another family rented Joe's house between Joe and Yannis. The new landlord was probably some Chinese lady whom we never met. These two brothers kicked their soccer ball into our backyard today so they politely reached out in our Ring doorbell. They're probably around 15-25 years of age. I think there's probably a mother with them. Gave them the ball, we introduced each other. Apparently Willy was the first one who made contact with them. Nice brothers. Note from 12/23/2024: I found out that the young couple that moved into the blue house in front of us, that used to be owned by Adam, the young fella's name is Vinny.

Interesting article on going for interviews once a year even if you already are comfortable and satisfied with your current job. I think if I'm more disciplined and diligent, I would have come up with something like this. This certainly is a good idea, to keep oneself aware of surrounding opportunities. I don't think this is disingenuous because many companies do their own testing on their side via interviews as well.

This exercise seems to be a good way to learn the RUST programming language.

5/17/2024 TLDR's way to learn D3.js

5/14/2024 Mona Lisa Background recognized by geologist Ann Pizzorusso as in town of Lecco by the shore of Lake Como. The bridge on the right of the painting's background is thought to be the Visconti Bridge.

5/13/2024 Open Flagstar Bank Ready Checking account with initial deposit of $50+, maintain daily average $500+ for first 90 days, direct deposits $500+. $250 cash bonus will appear between days 91 and 104. I need to ask Tracy of NYGC about frequently changing direct deposits.

100,000 Stars. Cool Milky Way Virtual Model for Chrome users. It plays a movie zooming from our Sun to the galaxy.

5/10/2024 Online hardware store with best catalog website I've seen: MCMaster.com

Messing with world maps in webpages, github offers some cool toy.

MoonRay review: DreamWorks Animations' superb rendering software is free for all. The article also suggested best laptops to do rendering with.

Some insights into EV Cars experience in China. By Kevin Williams: I Went To China And Drove A Dozen Electric Cars. Western Automakers Are Cooked. I can see in the comments of the article that there are some jealous Westerners trying for some propagandas against this article.

5/7/2024 William Lane Craig's (WLC) May 6 2024 Podcast: Questions on Personal Causation, Time, and Christology, in an interesting one where someone asked a question against the Kalam cosmological argument (WLC's favorite apologetics method), that it does not proof a personal first cause, but opens for an impersonal first cause as well. WLC's response was by using Al-Ghazali's (or was he referring to Al-Ash’ari?) argument that FREE WILL is the only uncaused cause, and this for any to have a beginning, there must ultimately be a personal free will and not impersonal "cause" which would be in infinite regress in seeking for a prime mover. This reminded me just last week I told Steve at church that RC Sproul failed in his answer to the problem and origin of evil but assuming that free will is caused. Sproul was wrong in making causality as non-negotiable logical assumption. Nevertheless, WLC failed, perhaps as Al-Ghazali would too, in assuming that he could simply do away the other problem to his argument: "That it opens the possibility to an eternal universe", by just saying that an eternal universe would require a personal cause, without any explanation. So here the creator-creation distinction is required to properly answer the question. Towards the end of the podcast, WLC alluded that he's now researching on the dual natures of Christ in Christology, that he's trying to rationalize it. So I think he's more of a rationalist. We should be rational, but not rationalists.

5/6/2024 World's 1st 'tooth regrowth medicine' to be tested in Japan from Sept. 2024. This is of interest to me since I chipped a tooth last year, and having a harder than usual surgery on my right wisdom tooth (removal/cut of crown instead of extract).

Posted in Astronomy, Biology, Computer Science, Geography, Theologization | Leave a comment

Sproul on the Problem of Evil - The Origin of Evil - he doesn't know

Last Thursday, Steve from church asked me to watch this talk by Sproul on what is Evil, after some discussion on the pre-fall perfection of Man.So I finished it (1 hour video) in 20 mins - 3x speed on average, video and my comments below:

Nothing new, but one thing, either it is new to me or I have forgotten was Leibniz's take on evil: Physical evil (natural disasters, diseases), Metaphysical evil (anything by God - i.e. finiteness, creation, etc.), Moral evil. So, because creation is metaphysical evil, thus, moral evil is inevitable. The moment Sproul defined metaphysical evil, I already call it out as a logical fallacy: You do not put God even in terms of metaphysical, because of creator creation distinction. Sproul's critique of Leibniz on this is simply: well you can't blame it on God, all evil would be excusable.

Sproul brought up Rome's view of concupiscence. That in order to make an evil choice, one must have an evil inclination to that choice, allegedly quoting Jonathan Edwards' work on The Freedom of the Will. @31:00. Sproul then rejects it rightly on the ground that such inclination must be evil in itself. He then went on the consider the "alternative", which is making a the evil choice without any evil inclination. He wrongly concluded that it results in a choice that is not a moral action at all. A sort of an arbitrary choice. This shows that Sproul was still stuck at Rome's "inclination to sin". That inclination is a requirement in this argument. I posit that according to John 8:44, SELF, is not, nor does it need an inclination to make an ethical choice. The concept of inclination can be sound, but it fails by falling into irresponsibility, when applied universally, a want of SELF, which in man, should be united only to God's SELF/Will to be not wanting. To insist the need of some moral inclination, as Sproul does, is to insist on CAUSALITY, which is one of Sproul's 4 non-negotiable assumptions (I have another comment on this, calling it Sproul's presupposition, under the Entry of Ligonier Class: Apologetics I). However, Cornelius Van Til rightly states:

God cannot reveal himself in the realm of causality because this realm of causality is the compound of the idea of pure contingency and the impression of our own categories upon it ~ Cornelius Van Til and Eric H. Sigward, The Pamphlets, Tracts, and Offprints of Cornelius Van Til, Electronic ed. (Labels Army Company: New York, 1997). IS GOD DEAD -> What Do They Mean? -> The Help of Science And Philosophy.

I shall posit that WILL, human will that is, also cannot be revealed in the realm of causality. So WILL, is just as it is, WILL. Inclination is not a necessary condition of the WILL. Human will is only contingent upon or against God's will, outside of such contingency, there is no causality to human will, so it is neither inclined arbitrarily nor wickedly and not even goodly, it is only perfect or corrupted. Christ's will was and is a different kind: perfect perfection. A will that can choose good or evil (pre-fall will), is perfect nonetheless, just like the perfection in an infant (10 fingers, two eyes, etc.). A will that cannot choose good but evil (post-fall unregenerated will), is not perfect. A will that can only choose good and not evil (consummation), is the perfected perfection. Therefore, true impeccability is only found in union with God. Which is something all saints shall one day enjoy. Because of that, the will of a creature is itself a moral agency, you don't need inclination for that. How one explains this may also display the direction of one's own Christian culture - towards a choice of action that is either passive (the reliance of act - out of Role Model) or active (the will to act - out of Regenerated Self).

Sproul wants to conclude this: Evil is not good, but it is good that there is evil. Otherwise, it wouldn't be in a universe ruled by a perfect God.

The above quote is not surprising. It's wrong, but at this point, I'm not surprised by someone like Sproul or maybe even his mentor John Gerstner speaks it. As that's a classical approach, Thomist way of seeing a pantheistic world. It's also a play of word. "It is good that there is evil", depends. From our perspective, it is good. Not from God's perspective, for God is not tempted. We now can see that this "God is not tempted" is actually deeper than what most thinks. This is not just about you cannot get God into doing this, but the fact that whatever God does, "does', which is a word in an anthropomorphic sense for God, is inculpable, for that is the very meaning of "God". So, if the quote is seen in the right sense, that is fine, just a bit shallow because it's trapped in a pantheistic sense of God.

Sproul ended with he doesn't know the origin of evil, as Gerstner, according to Frank Turek, concluded the same by saying "mystery".

But I must be fair, it was a good speech delivered by Sproul overall.

Because of this, so, in a way, thanks to Steve, I once again tried to look up Stephen Tong's reference to Melanchthon's rebuttal against Rome when Rome accuses the Reformation of attributing God as the author of sin. In John 8:44, Melanchthon solved the accusation by saying that the cause of sin is the will of the devil and men turning away from God. I've tried to source this for a while, and now the search is finished: Apology of the Augsburg Confession by Philip Melanchthon...Article XIII. (VII): Of the Number and Use of the Sacraments. #77: ...God is not the cause of sin...Article XX: Of Good Works.

Stephen Tong would call the failure in understanding that WILL does not require moral inclination/causality, the lack of Theology of Time, which according to him, is not taught in seminaries, unfortunately:

Posted in Theologization | Leave a comment