I have become convinced.
There is no bottom.
There is no low that is too low. No ethical boundary that cannot be crossed. No crime that cannot be ignored. No profanity or taking the Lord's name in vain that cannot be hand waved away.
Trump really could parade naked in the streets, with hookers and drugs, shoot some or several random persons in the middle of the street in broad daylight . . .
and his band of FoxNews fed mouseketeers would just wave it away. Fake News! It didn't happen. We won't hear any witnesses. No evidence. Witch Hunt! Anyone who says it happened is a liar! I cannot recall! I would have to check my records. The trial judge is working closely with Trump's lawyers to fix this, so no worry.
The evangelicals cover their eyes or look the other direction. Justify and rationalize it by inches at a time.
Good is called evil and evil is called good.
We are all numbed to the bizarre and irrational. Reporters are afraid to report on the worst of Trump's behavior because it is so bad that they fear people will think they are biased against Trump merely for telling the simple facts. Because it sounds so bad that in normal times you would think the press is biased. Comedians make jokes about it, but it's not even funny any more. Just boring every day events.
Hear no evil, See no evil, Speak no evil.
The White House violated federal law in withholding security assistance to Ukraine, an action at the center of President Donald Trump’s impeachment, a federal watchdog agency said Thursday.
The Government Accountability Office said in a report that the Office of Management and Budget violated the law in holding up the aid, which Congress passed less than a year ago, saying “the President is not vested with the power to ignore or amend any such duly enacted law.”
The aid in question was held up last summer on orders from Trump but was released in September after Congress pushed for its release and a whistleblower’s complaint about Trump’s July call with the Ukrainian leader became public.
People who don't like Java shouldn't use it. Use something more to your liking.
Java is not perfect (shocker!)
Java has warts from being designed in the early 90's and released later in the 90's. Computers and their limitations were different back then.
The Java runtime is a big disk footprint. At least if you use other languages, and don't realize what all you're getting in this fat package.
Java likes lots of memory.
Java programs start up slowly.
Java is not ideal for all programming tasks. (shocker! I can't write my bootloader or micro controller code in Java!)
Java (rather the JVM) does not have tail call optimization.
Java has Garbage Collection (GC). (Some people see this as a problem. If GC is a problem, you probably don't want Java, nor the JVM runtime system.)
Terminology clarification
From here on I'll try to use Java to mean a programming language that you write source code in, and compile it to JVM bytecode. I'll use JVM bytecode to mean the object code from compiled source languages, including the Java language. I'll use JVM to mean the Java Virtual Machine, that is the runtime system which executes JVM bytecode -- no matter what source language it was compiled from.
Virtues of Java / JVM -- Garbage Collection
Java and the JVM have Garbage Collection (GC) ! Free clue: all modern languages now have GC. Visual Basic. Visual FoxPro. JavaScript. Python. Arguably: Perl. C#. Erlang. Go. Lisp like languages. Prolog, Haskell and other higher order languages. And many others.
If GC is so horrible, why do so many languages have it? Some will say because programmers do not know how to manage memory. But that is not true. Speaking for myself, I wrote untold amounts of Pascal in the 80's, with complex data structures and understand quite well how to manage memory, avoid, detect and deal with memory leaks.
I would point out: Greenspun's tenth rule
Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.
(and that includes garbage collection along with other higher order programming idioms)
JVM GC is not comparable to other systems like Python or Node.js. Modern JVMs can run with Terabytes of memory and hundreds of cpu cores and have only 1 ms GC pause times. (Please call me when your Python or Node.js or Go can do that!)
Java offers multiple GCs to choose from. Each one has various tunable knobs and dials. Instrumentation (like VisualVM) can give you insight into the GC behavior of your large program that has many third party libraries so you can tune accordintly. (again, call me when your system can do that)
Red Hat's Shenandoah, and Oracle's ZGC are the current new state of the art GCs on Java. Both of these are open source in the latest Open JDK builds.
Multiple languages
Multiple languages compile to JVM bytecode. Not just Java. Kotlin. Scala. Clojure. And other languages run on the JVM (Groovy, Jython, even C).
Cross Platform
Java object code (JVM bytecode) is cross platform. I can take a desktop GUI program written in Java using Swing in 2004 on Windows, and run that object program on a Raspberry Pi (different OS) which did not even exist when the program was written. It runs perfectly.
Java programs, especially servers, which have no GUI are extremely cross platform.
The only pain points I can think of is (1) serial port communication, (2) doing extremely platform specific things (uh, say, accessing /proc or /sys). There are some nice cross platform solutions for serial communication; I had to use one a few years ago. I had to deal with whether to use names like /dev/ttyS1 or COM3:.
Compiled JVM bytecode runs on amazingly diverse platforms. From Blu Ray players to giant IBM Mainframes with seemingly strange architectures. Smart cards, car infotainment, single board Linux (eg, "Pi" type boards), and who knows what else.
Speed, yet dynamic access
The JVM runtime interprets JVM bytecode. It dynamically profiles every function to see how much CPU time it is getting. (How "hot" it is) Hot functions are immediately compiled (C1 compiler). C1 rapidly compiles the JVM bytecode into unoptimized native code. The function is added to a list to be compiled later by the C2 compiler.
Later, when the C2 compiler comes along, it spends significant time and effort recompiling that function into highly optimized native code.
C2 is one of, if not the most sophisticated compiler on the planet. The product of a couple decades of much research. It has only one source language to compile: JVM bytecode. It has multiple target instruction sets to compile to.
C2 compiles to the instruction set of the actual hardware it is running on. Something that an ahead of time C compiler, for example, cannot know in advance. C2 knows which instruction set extensions your actual processor has. Does your processor have SSE, MMX, ISSE instructions?
C2 also has global knowledge of the entire linked runtime program. Also something that a C compiler does not have advance knowledge about. C2 could know that a certain function could be called efficiently in two different ways from two other parts of the program, and compile two separate versions accordingly.
All method references in Java (JVM) are "virtual" (to use C++ terminology). But in practice many or most methods do not actually need to be virtual. C2 can (and does) prove that a method is never called in a way that it needs a vtable entry, and can compile efficiently accordingly. The programmer never needs to make decisions about whether functions should be virtual or not.
Research has shown that in many cases even when a virtual polymorphic function is called, from a specific call site, it often always calls the same concrete function at that call site. The new GraalVM takes advantage of this and cache which virtual function to call for next time. If at this particular call site (where function is called from) this time a different virtual method will be invoked, then a runtime error occurrs, is handled, the right virtual function computed and it is now cached.
C2 aggressively inlines code for performance. It is after speed not small code size. Memory is cheap. You can never get back time.
Now suppose that YOUR function A calls MY function B. When C2 compiles your function A, it may inline my function B inside the native code of your function to avoid function call overhead. Now suppose that the class which has my function B is dynamically reloaded. Oh no! Your function A now has a stale version of my function B inside of it! Not to worry, the JVM de-optimizes your function A back to being bytecode interpreted. If your function is still "hot" it will very soon get recompiled by C1 and then later by C2.
This "hotspot" and C1/C2 behavior is one reason why Java programs seem to "warm up". They start up slowly and then within a few minutes become very fast. If you have a program which needs to be restarted very infrequently, runs for a very long time between restarts, then this is for you! (example: long running servers) If you have a program that is rapidly and frequently started from the command line and needs to do something very quickly and exit, then this is definintely NOT for you!
When running a 64bit JVM with less than 32 GB of memory, JVM can do a pointer optimization trick. It can use 32-bit pointers instead of 64-bit pointers. All objects start on 8 byte boundaries (on x86/x64). So the low three bits of a 32-bit pointer are always zero. So why have them. Thus a 32-bit poiner can reference objects in 32 GB of memory. Next time you start the program with more than 32 GB of memory, it will have to use normal 64-bit pointers everywhere.
GC is the lubricant between different code libraries
In C or C++ there may be different memory management disciplines. Different calling conventions. Different ideas of responsibility about who "owns" something and is responsible to dispose of it. Even different allocators. Are there instances where glue code is needed to adapt the conventions of one code base with another that are both used in the same program?
An overlooked and maybe little known benefit of GC is that these problems go away. Everything uses one memory management discipline. Same calling conventions. A library written two decades ago can be passed data structures from another library that was only recently written.
GraalVM
This is so new I am not very familiar with it.
The JVM runtime is written in C++. Such a complex runtime, with GC, hotspot, C2/C2, native code interfaces, dynamic code reloading, etc is getting hard to maintain. Especially with multiple GCs to choose from. One of the things GraalVM does is let much more of the JVM be written in Java. Graal VM can also run code from LLVM, and other languages like R, Python, etc. So your C, Python and Java code could call functions within each other in the same runtime, and pass parameters transparently.
Concluding remarks
I know it is fashionable to hate Java. Yet Java is consistently year after year the number one language on various job sites and programming language surveys. Java is used by many major corporations. Red Hat, Oracle, SAP, IBM, Azul Systems and others see enough major players needing commercial support that they all seem to have a very tidy business with Java. Amazon and Microsoft Azure both bend over backwards to provide optimized Java runtime systems for these major customers with bucketloads of money. Microsoft recently partnered with Azul to provide their optimized runtine for free to Azure Java users. They did't do that for no reason.
Java must be doing something right. It is the best at what it does. There is nothing else that comes close to doing what I have described above.
Even if it is not right for you.
It's here to stay for a long time. Even if you hate it. But why hate it? Just don't use it.
If there were one perfect programming system for every use, we would all be using it already.
Black Shark 3 could be the first phone with 16GB of RAM
The most RAM you can get in a smartphone right now is 12GB, but that could soon change, as the Black Shark 3 gaming phone from Xiaomi is rumored to boost that spec to 16GB.
That’s according to Sudhanshu (a leaker on Twitter with a reasonable track record). Of course, whether the Black Shark 3 will be the first phone to arrive with that much RAM depends on when it launches, but with the phone having been rumored for a while – and given that the Black Shark 2 launched in March 2019 – it’s likely that it will arrive soon, possibly at MWC 2020.
Whether or not the Black Shark 3 is first to 16GB, it should make good use of it, as gaming phones need all the power they can get – and with that much RAM, coupled with a top-end chipset (the Snapdragon 865 is likely), it could take us another step closer to console-type power on a phone.
All Galaxy S20 Models Rumored to Feature 12GB LPDDR5 RAM as Part of Their Base Configuration
The tip comes from Ice Universe who claims that the base Galaxy S20 memory configuration will start from 12GB RAM, and it’s not just any other RAM; it’s likely the 12GB LPDDR5 DRAM Samsung announced in July last year. Thanks to a higher data rate, the new mobile memory is 1.5 times faster than LPDDR4x which was featured in previous phones. A new circuit design also makes the new chip more power-efficient as it needs 30 percent less power than its predecessor. With these features, 12GB LPDDR5 RAM will be able to make the best use of the speeds offered by 5G.
Samsung had already announced that the production of 16GB LPDDR5 RAM will begin in 2020, and thus it’s entirely possible that Galaxy S20 memory configuration will go as high as the aforementioned capacity.
This is DOA. I need 1,280 GB of RAM in my next smartphone.
Previously: Samsung Begins Mass Producing 12 GB DRAM Packages for Smartphones
Samsung Mass Producing LPDDR5 DRAM (12 Gb x 8 for 12 GB Packages)
Get Ready for Smartphones with 16 GB of RAM
Trump Campaign Adviser Pleads Guilty to Child Porn, Sex Trafficking
Nader was first charged in June 2019 with transporting and possessing pornographic images of children including some featuring toddler-age boys, baby goats and other farm animals. A month later in July, prosecutors added a sex-trafficking charge, saying Nader had arranged the transport to his Washington home of a 14-year-old boy from the Czech Republic in February 2000.
Nader allegedly held onto the child’s passport after flying him through Dulles International Airport. Once at his residence, he assaulted him nightly and kept the child silent by threatening him and his mother with imprisonment should they ever attempt to report him, according to the indictment.
The projection is powerful! When Trumpers accuse anybody of anything we should just assume they're already guilty of it.
Albert Einstein, no doubts about it in me, is the most disruptive person of the all twentieth century. No statesmen, no industrialists, no military nor religious leaders of any particular faction had so much effective impact on humanity than this genius with disordered personal life had.
Einstein's theories brought us the new understanding of nature, the atomic age, a historical effect at planetary scale.
Most important of all, his work in physics of electron is conceptually fundamental to the advanced technology built upon that, everything what we have today: electronics and computers, appliances, toys, weapons. Nuclear energy sources and strategic weapons being only in second of that. And his Theory of Relativity brough us slightly better understanding of the Universe.
I got an idea it may be interesting to understand what a genius like him thought about organization of human society. Because, this is a structural problem, like those others he had solved. So I duckducked about it a bit and... was surprised greatly.
Einstein's article Why Socialism? was published in the first number of a Monthly Review magazine, in May 1949 edition, at the verge of the Cold War starting between former war Allies.
It is a well worthy reading, no matter if one accepts or rejects the concepts mentioned, partly or completely. Because, we are not out of this structural problem yet. Actually, we bogged down into it recently even more deeply than before.
https://monthlyreview.org/2009/05/01/why-socialism/
Let me qoute just some of the most protruding observations:
The economic anarchy of capitalist society as it exists today is, in my opinion, the real source of the evil.
Private capital tends to become concentrated in few hands, partly because of competition among the capitalists, and partly because technological development and the increasing division of labor encourage the formation of larger units of production at the expense of smaller ones. The result of these developments is an oligarchy of private capital the enormous power of which cannot be effectively checked even by a democratically organized political society.
Unlimited competition leads to a huge waste of labor, and to that crippling of the social consciousness of individuals which I mentioned before.
This crippling of individuals I consider the worst evil of capitalism. Our whole educational system suffers from this evil. An exaggerated competitive attitude is inculcated into the student, who is trained to worship acquisitive success as a preparation for his future career.
Clarity about the aims and problems of socialism is of greatest significance in our age of transition. Since, under present circumstances, free and unhindered discussion of these problems has come under a powerful taboo, I consider the foundation of this magazine to be an important public service.
I appreciate the Monthly Review survived to the Internet Age, to bring this gem to us.
It’s Bernie’s moment. But it’s Bloomberg’s race. (archive)
If it can be summed up, then, the Democratic “mood” is basically this: “We like Bernie. He’s a warrior. But we’re afraid if we nominate him, he’ll lose in the fall. We need someone to get the job done.”
If the two men who might be that someone — former vice president Joe Biden and former South Bend, Ind., mayor Pete Buttigieg — lose to Sanders in Iowa and New Hampshire, that would make their “electability” somewhat less convincing. Defeat can be contagious. There are not many voters who say: “I like him — he loses a lot.”
So it’s Bernie’s moment, which has sent a wave of panic through the Democratic ecosystem. It’s like waking up from a nightmare, only to realize that you’re waking up in a nightmare.
Which helps explain why Democrats across the country will soon find themselves with a newfound appreciation for the virtues of one Mike Bloomberg, former Republican mayor of New York and billionaire founder of a financial data services empire. He might not have been exactly what they had in mind, but by Super Tuesday he’ll look like Brad Pitt.
Two b(m)illionaires competing for the Presidency is the kaiju battle we need right now. So let's repeat the mistake success of 2016 and finally send Bernie to a retirement home.
I have to ration my screen time because I´m going to be trying to create software and libraries that will allow the visually disabled to actually write code in popular programming languages.
Sorry, that does not include python or Javascript. Not interested. Not my circus, not my problem.
Targets are c, Java, and a subset of c++.
This will involve preprocessors and libraries that allow for the use of ONLY ALL_CAPS in source, converting only language keywords into their lowercase equivalents in the processed output, and shim libraries to use interaction between UPPERCASE and standard style functions, methods, and classes.
Sometime around the turn of the century, before my eyes went, I wrote a similar preprocessor just for the heck of it. Now I´ll recreate it, and the necessary libraries.
Obviously for languages like Java this is a multi-year effort. Hopefully what vision I have left will last long enough. If not, so sad, too bad, screw it, © ç´est la vie.
So, while I will check in once in a while, enjoy some peace and quiet :-)