Skip to content

Blog

is there a paradox of tolerance

The solution to intolerant ideologies is to speak up, debate, make them look foolish, exhort people to stand up for what they believe is right.. This is done all the time, the far-right British National Party, which had built up some momentum througout the 2000s crashed and burned when their leader Nick Griffin was given a platform on the BBC's Question Time which he used to make a fool of himself. A healthy liberal society should be able to rebuff attacks without giving up on its own principles to do so, if a society is healthy there should be no shortage of enthusiastic, charismatic and intelligent supporters ready to be called to its defence.

The reality behind the paradox of intolerance is this: that if you are at the point where you think an open debate will lead to the loss of the liberal side to the openly intolerant, then your society is no longer a liberal one and nothing you can do, no law you can pass, is going to change that. The Nazis didn't take power because the liberals were too hesitant to clamp down on them, they took power because faith in liberalism had already collapsed. "

chinese debt trap

Theoretically but from a different perspective, I'd argue that the countries don't really have an incentive to push back. I'm going to just paraphrase from Prof. Brautigam's book The Dragon’s Gift: The Real Story of China in Africa (Oxford Press, 2010) here. Essentially, the 'debt trap' meme is drastically overplayed here and the lending program has been largely received positively by the governments that take on China's loans. Brautigam is rare among Western academics with her research as she has conducted a fair amount of field research, so a lot of what she cites comes from government documents and on-the-ground analysis. From that, Brautigam argues that China's lending diplomacy seems to in actuality be much more about sharing China's development experiences with countries that might not traditionally attract a lot of outside investment and countries that participate seem to be rather receptive of these lending tactics in part because they have no where else to turn to. One prime example here is the whole development cycle of an Indonesian port; she writes about it here.

Brautigam's research also highlighted some economic issues that Chinese lending seems to have alleviated somewhat, issues that governments might be keen on eliminating for future development. Contrary to popular belief, China is not using its lending programs to price out indigenous businesses and replace them with Chinese conglomerates/workers. Instead, Brautigam states that supply constraints might be a much larger limiting factor constraining how a lot of countries develop and having Chinese money/economic advisors can help open up economies (for example, providing capital when it might not otherwise be available). To a certain extent, China's experiences now are also shaped by their own development experiences in decades past when they received loans and infrastructure deals with Japan and the West. That too includes the methods by which loans are given and repaid. Brautigam has shown that China is largely rather lenient with loans, providing flexibility with restructuring and forgiveness. So basically, there isn't really much of an incentive for these countries to discard this additional investment opportunity especially since a lot of Chinese loans don't come with the various political and social strings attached to, for instance, IMF loans."

VN - English as a global language

Nguồn

Tiếng Anh với tư cách là ngôn ngữ toàn cầu

  • Tác giả: Dan Dascalescu
  • Đăng: 09/2008
  • Sửa lần cuối: 12/2019
  • Dịch bởi: TĐHV

Mục tiêu:

Không phải sẽ thật hay nếu tất cả mọi người trên thế giới hiểu nhau, bất kể ngôn ngữ?

Nếu bạn trả lời "Không" với câu hỏi trên, bài này không dành cho bạn, và thực ra sẽ khá vô nghĩa để thuyết phục được bạn là, mọi thứ sẽ rất hay, từ nhiều quan điểm khác nhau, nếu tất cả mọi người hiểu nhau, bất kể ngôn ngữ mự đẻ. Bạn cũng có khi nên tìm trợ giúp tâm lý chuyên nghiệp.

Thế nên tôi sẽ giả định là chúng ta đồng ý rằng,

"Sẽ thật hay nếu tất cả mọi người trên thế giới bằng cách nào đó hiểu nhau, bất kể ngôn ngữ mẹ đẻ"

Làm thế nào để việc này khả thi?

  1. Với sự trợ giúp của AI và phần mềm dịch, chúng hoạt động khá là tốt, ngay cả đối với các ngôn ngữ khó, so với từ khi tôi bắt đầu viết bài này năm 2008.

  2. Nếu tất cả mọi người học Tiếng Anh mức cơ bản và dùng nó để giao tiếp với những người khác mà tiếng mẹ đẻ của họ không phải tiếng Anh.

Tại sao dùng Tiếng Anh? Sao không phải Tiếng Trung Quốc hay một thứ tiếng nhân tạo như Quốc tế ngữ Esperanto? Mọi người có nên dừng học thứ tiếng của đất nước họ?

Hãy đọc tiếp.

Giới thiệu:

Tôi là người bản địa nói tiếng Romania, và Tiếng Anh là thứ tiếng thứ hai của tôi.

thank you old coworker

I had a coworker who left, sad. But the good news is that means his now defunct account (on Teams) can be used so I can transfer links/reading I did on the work computer to outside.

I think these are all tech stuff.

Will write these up later on their owns posts. So thanks Taesan!

  1. https://rachelbythebay.com/w/2011/06/01/megaraid/

  2. https://ravimohan.blogspot.com/2007/04/learning-from-sudoku-solvers.html

  3. http://norvig.com/21-days.html

  4. https://www.biteinteractive.com/picturing-git-conceptions-and-misconceptions/

  5. https://mangadex.dev/mangadex-v5-infrastructure-overview/

  6. https://news.ycombinator.com/item?id=28440742

  7. https://news.ycombinator.com/item?id=28443625

  8. https://news.ycombinator.com/item?id=28446761

redundant data

A clever extension of this idea was introduced in C-Store and adopted in the commercial data warehouse Vertica. Different queries benefit from different sort orders, so why not store the same data sorted in several different ways? Data needs to be replicated to multiple machines anyway, so that you don’t lose data if one machine fails. You might as well store that redundant data sorted in different ways so that when you’re processing a query, you can use the version that best fits the query pattern. - Martin Klepmann, Design Data-Intensive Applications

PS: also TiKV has a very good summary of B-Tree vs LSM-Tree

are we the baddies

We are always the good guys in our own story. The trick is to look at the situation from someone else's point of view and ask "Are we the baddies?"

If yes, annihilate them.

international developer after 1 year

The path for a foreign worker that came to the US through university is very straightforward if they want to live a life here afterwards. My assumption here is that you're not rich, that you don't have family that is already a permanent citizen (green card) that can pull you over, you're not marrying a US citizen, and you're not eligible for like asylum/diversity visa. Oh and you're not super-talented and wins awards, and got papers, or save the pope's life etc. etc.

First, it's imperative that you get a STEM degree. Why? well you'll find out later. But do well in university because you'll need to get a job right after you graduate. In fact, you have a time limit of 60 days from when you graduate or else after that you're "illegal". The fee to get this post-graduation student-worker status is $400 for 1 year. Oh, you want to improve your chances with internships? make sure it doesn't add up to 12-months of full-time, or else it counts against your 1 year limit.

Second, lol at getting a job as an international fresh grad. All the jobs that need clearance, well that's not for you. Companies without clearance don't want to hire internationals because it's more paperwork for them, if they know the paperwork at all. Or maybe they don't have a HR department. Or maybe they don't want to keep someone that won't be able to stay with the company for more than a year.

This is where STEM comes in. You got a STEM major? You can get an extension for 2 years. If you're unlucky, you'll have to handhold your company's HR to get the correct paperwork on time (thankfully my company's was great). BTW, did I mention that you can't work without this one card sent to you by DHS after they take 3 months to approve your application, tough luck if your start date is earlier than that.

What if I want to stay for more than 3 years? Well, you can switch over to the worker visa, if your company sponsors you. In fact, they have to submit the paperwork, and pay the fee (imagine dangling that over your head at quarterly reviews). The best part though, it's a once-a-year lottery! An entirely luck-based regime. Even if you have STEM, and your employer plays the lottery 3 times for you, you still have a 34% chance overall of not getting a worker visa (70% of not winning ^ 3 years).

Of course, throughout all this, companies can apply for a green card for you. Will they though? They don't have to, cause they know they got you tied to them with your student-worker status, or your worker visa status.

International workers are always hyper-aware of their status. It's like living with a knife over your head, it's a strong rope, but all it takes is a gush of particularly bad wind.

So that's my experience as an international worker after 1 year. Thankfully there wasn't many cases of racism, my workplace is good, I like my boss and my team. But I understand deep in my bones that every day I get to stay in this country is pure luck, and I should be grateful.

What an anxiety-inducing dream.

compiler magic

Magic is here, it is at your fingertips.

Recently, I've come across a not so efficient implementation of a isEven function ```c++ bool isEven(int number) { int numberCompare = 0; bool even = true;

while (number != numberCompare)
{
    even = !even;
    numberCompare++;
}
return even;

} ``` ... Surprisingly, Clang/LLVM is able to optimize the iterative algorithm down to the constant time algorithm (GCC fails on this one). In Clang 10 with full optimizations, this code compiles down to:

llvm ; Function Attrs: norecurse nounwind readnone ssp uwtable define zeroext i1 @_Z6isEveni(i32 %0) local_unnamed_addr #0 { %2 = and i32 %0, 1 %3 = icmp eq i32 %2, 0 ret i1 %3 }

^ That, is magic

This is the list of optimization passes (the order matters) that LLVM applies with flag -O2. Note that some of them are run multiple times : -targetlibinfo -tti -targetpassconfig -tbaa -scoped-noalias -assumption-cache-tracker -profile-summary-info -forceattrs -inferattrs -ipsccp -called-value-propagation -attributor -globalopt -domtree -mem2reg -deadargelim -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -basiccg -globals-aa -prune-eh -inline -functionattrs -domtree -sroa -basicaa -aa -memoryssa -early-cse-memssa -speculative-execution -aa -lazy-value-info -jump-threading -correlated-propagation -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -libcalls-shrinkwrap -loops -branch-prob -block-freq -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -pgo-memop-opt -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -tailcallelim -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -memoryssa -licm -loop-unswitch -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -indvars -loop-idiom -loop-deletion -loop-unroll -mldst-motion -phi-values -aa -memdep -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -gvn -phi-values -basicaa -aa -memdep -memcpyopt -sccp -demanded-bits -bdce -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -lazy-value-info -jump-threading -correlated-propagation -basicaa -aa -phi-values -memdep -dse -aa -memoryssa -loops -loop-simplify -lcssa-verification -lcssa -scalar-evolution -licm -postdomtree -adce -simplifycfg -domtree -basicaa -aa -loops -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -barrier -elim-avail-extern -basiccg -rpo-functionattrs -globalopt -globaldce -basiccg -globals-aa -domtree -float2int -lower-constant-intrinsics -domtree -loops -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -loop-rotate -loop-accesses -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-distribute -branch-prob -block-freq -scalar-evolution -basicaa -aa -loop-accesses -demanded-bits -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -loop-vectorize -loop-simplify -scalar-evolution -aa -loop-accesses -lazy-branch-prob -lazy-block-freq -loop-load-elim -basicaa -aa -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -simplifycfg -domtree -loops -scalar-evolution -basicaa -aa -demanded-bits -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -slp-vectorizer -opt-remark-emitter -instcombine -loop-simplify -lcssa-verification -lcssa -scalar-evolution -loop-unroll -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instcombine -memoryssa -loop-simplify -lcssa-verification -lcssa -scalar-evolution -licm -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -transform-warning -alignment-from-assumptions -strip-dead-prototypes -globaldce -constmerge -domtree -loops -branch-prob -block-freq -loop-simplify -lcssa-verification -lcssa -basicaa -aa -scalar-evolution -block-freq -loop-sink -lazy-branch-prob -lazy-block-freq -opt-remark-emitter -instsimplify -div-rem-pairs -simplifycfg -domtree -basicaa -aa -memoryssa -loops -loop-simplify -lcssa-verification -lcssa -scalar-evolution -licm -verify -print-module ↩