I would disagree with the “No ads, no bullshit” part though…
HN user
logimame
Also note that you can install the automatic tiling extension in other GNOME-based distros, you necessarily don't need PopOS to use it (though I had some weird bugs with it in Manjaro, it's probably going to be more unstable than PopOS's integration)
Position based dynamics is far more than just Verlet integration though. The meat of the algorithm has to do with dealing with various constraints (which is done by sequentially projecting positions related to each constraint while adhering to both the constraint and Newton’s laws (momentum conservation). PBD’s main strength is that it can incorporate various types of constraints at once with relatively simple code and good performance.
One of the gripes that I have with Julia is that if you write linear algebra code naively, you will have tons of unnecessary temporary allocations, while in Eigen (a C++ library) you can avoid most of these without sacrificing too much readability. (It even optimizes how to run matrix kernels on the fly!) Sure, you can rewrite your Julia code in C-style to remove those temporary allocations, but then the code becomes even less readable than what you can achieve in C++.
Here's an example: https://ronanarraes.com/tutorials/julia/my-julia-workflow-re...
The naive Julia version has unnecessary allocations and therefore is 23% slower than the optimized version:
@inbounds for k = 2:60000
Pp .= Fk_1 * Pu * Fk_1' .+ Q
K .= Pp * Hk' * pinv(R .+ Hk * Pp * Hk')
aux1 .= I18 .- K * Hk
Pu .= aux1 * Pp * aux1' .+ K * R * K'
result[k] = tr(Pu)
end
In order for this loop to match the C++ version you need to use C-style functions: for k = 2:60000
# Pp = Fk_1 * Pu * Fk_1' + Q
mul!(aux2, mul!(aux1, Fk_1, Pu), Fk_1')
@. Pp = aux2 + Q
# K = Pp * Hk' * pinv(R + Hk * Pp * Hk')
mul!(aux4, Hk, mul!(aux3, Pp, Hk'))
mul!(K, aux3, pinv(R + aux4))
# Pu = (I - K * Hk) * Pp * (I - K * Hk)' + K * R * K'
mul!(aux1, K, Hk)
@. aux2 = I18 - aux1
mul!(aux6, mul!(aux5, aux2, Pp), aux2')
mul!(aux5, mul!(aux3, K, R), K')
@. Pu = aux6 + aux5
result[k] = tr(Pu)
end
... which is quite dirty. But you can write the same thing in C++ like this (and even be a bit faster than Julia!): for(int k = 2; k <= 60000; k++) {
Pp = Fk_1*Pu*Fk_1.transpose() + Q;
aux1 = R + Hk*Pp*Hk.transpose();
pinv = aux1.completeOrthogonalDecomposition().pseudoInverse();
K = Pp*Hk.transpose()*pinv;
aux2 = I18 - K*Hk;
Pu = aux2*Pp*aux2.transpose() + K*R*K.transpose();
result[k-1] = Pu.trace();
}
which is much more readable than Julia's optimized version.If Julia had a linear-algebra-aware optimizing compiler (without the sheer madness of C++ template meta-programming that Eigen uses), then Julia's standing in HPC would be much, much better. I admit that it's a hard goal to achieve, since I haven't seen any language trying this (the closest I've seen is LLVM's matrix intrinsics (https://clang.llvm.org/docs/MatrixTypes.html), but it's only a proposal)
Energy prices aren't really distributed equally around the world:
The knowledge of making and maintaining these tools is still incredibly important and should be handed out through generations (while also inventing innovations to make more efficient and powerful tools).
But what many older generations in tech who constantly lament about the “new generation of tech-illiterates” ignore is that there are actually quite some people (both old and young) who understand this and are actually dedicating towards learning, teaching, and creating low-level mechanisms and systems (such as the people in the Handmade Hero Network, the young new Linux hackers contributing to the kernel, and hobbyists creating their own game engines). And it’s a grave disrespect against them to say that nobody actually cares about anything. If you really are worried about this, don’t just complain and cry about it, be the change you want to see in the world.
To be fair, I thought the dev’s response was adequate here. Just posting on the issue section that the “colors are wrong” while comparing with uxrvt, without any explanation or self-investigation as to why this could be a problem, has ample potential to be regarded as rude to the devs (I’m using this another terminal app and have better colors, why aren’t you fixing this?)
And please note that Mac OS is NOTORIOUS for having bad/buggy/outdated support for OpenGL (which alacritty extensively uses), and this is a legitimate frustration that many developers in the low-level graphics domain have. It’s already really maddening for the devs, the contributors shouldn’t nag too much about it (I understand people outside the domain might genuinely not know this - but it’s always good to read some of the previous Github issues before filing your own, to learn the general “vive” among the core contributors)
Was the point small business owners at establishments like Dales are facing troubles because they're fat-cat capitalist Trumpian Covid deniers whose problems aren't valid as such?
You still have to understand the workers are also the one who's getting fucked here. The owner of the grill in the article is deliberately worsening working conditions because of his beliefs on Covid, and it's perfectly reasonable that the workers will leave you to get a new job where your boss doesn't spread Covid on you by not wearing masks. I understand businesses are hard right now, but business owners should care a bit about hygiene, it's not something that would cost you a lot.
This city is amid a dire housing shortage, expedited by lack of new construction and a migration of buyers from more lucrative economies. The median home price increased by 57% in the last 10 years, 8.6% in the last year alone to $315k. In the meantime the median family income remains only $46k.
But I think you've correctly diagnosed the real issue here - skyrocketing housing costs. Everyone suffers from this, both the workers and the small businesses. And it's a shame that the Dems and Reps are making this an "us vs. them" issue. (There's a similar dynamic in my country too, where liberals try to raise the minimum wage a bit, and then the conservatives fiercely oppose it and latch onto small business owners for support. Of course both the establishment liberals and conservatives are totally incompetent at solving skyrocketing housing costs and general economic inequality, yada yada.)
I think the real issue here is not about workers or small businesses, but just plain-old economic inequality - in the sense that the minority rich at the top can invest on housing at their heart's content (numbers seem to always go UP!) but the majority can't afford those prices. So even though the majority at the bottom knows that the price is bullshit, the bubble will not burst unless the rich realizes that those prices are bullshit (And do they really have to realize? They can still afford those investments though! They can stay being delusional and still enjoy all the luxuries they have!) Market price is now not an objective measure of value, but instead becomes a power that real estate investors can collectively impose onto the poor. Ah, communism for the rich, capitalism for the poor...
The Sokal hoax (and the sequel linked by the commenter below) exposes the negligence of mostly America-centric journals centered in sexuality/race/identity. But that really doesn’t represent the entirety of continental philosophy, and that shouldn’t be an excuse to ditch your education on humanities as a whole.
There’s a lot of bullshit papers in every field (including computer science) now, due to the corporatization of universities and its chase for numerical metrics. It’s our job as independent thinkers to wade through the bullshit, find the hidden gems, and arrive at our own conclusions. My current take is that if you’re actually trying to find some serious philosophy, don’t look at journal papers but actual full books by philosophers (which is becoming rarer and rarer due to the incentives to pump out high-metric papers).
Yeah, it's still dissapointing how much system resources it takes to get a plot running (even with all the improvements in 1.6, benchmark taken from https://www.oxinabox.net/2021/02/13/Julia-1.6-what-has-chang...).
julia> @time (using Plots; display(plot(1:0.1:10, sin.(1:0.1:10))))
9.694037 seconds (18.29 M allocations: 1.164 GiB, 4.17% gc time, 0.40% compilation time)
To be honest, this isn't really something the devs should be proud about. 10 seconds, 18.29 M allocations and 1.164 GiB of memory just to render a simple static image is just unacceptable. In order for Julia to be a good-enough language for general scientific usage the current slow LLVM-based JIT compiler sadly isn't enough. I really want Julia to succeed, but this one problem is triumphing over every good language feature.In an ideal world Julia would have two backends:
- A fast, hand-made JIT backend (something like LuaJIT) which is mostly interpreted and only JIT-compiled in frequently run code paths.
- The current slow, almost-AOT-like LLVM backend which is only used for precompilation of packages
It's just like Debug/Release bulids in C++, except that the Debug builds are lightning fast to compile (but slower at runtime) and Release builds are slower to compile (but hyper-optimized for runtime speed). I guess there's going to be an immense engineering effort if something like this happens, given that Julia today is immensely coupled with the LLVM compiler/runtime. But that's just my pipe dream.
Mainly economics, although it has some relation to what the parent post is talking about. Unfortunately the sexual revolution happened in the US about the same time when labor unions got fucked, labor power got diminished due to globalization/deindustrialization/automation, and people started be compensated less dollars per productivity. In an ideal world where Keyne's prediction was right, we (both genders) would work only 15 hours a week due to technological advancement and spend the rest on taking care of famliy and community (including special considerations for women on pregnancy), but it seems that these lower-working-hour dreams haven't come true. But then there's an even more insidious cultural part of neoliberalism: for an increasing number of people you're not just supposed to just do your job, you have to indulge in it to prove your self-worth to the boss, you need to advance and maintain your "career", and have to race to the bottom to get a clutch on getting a chance of moving up the social ladder (or else you're going to work at a call center or increasingly precarious part-time gig jobs). Kids are just a liability in this hyper-competitive world; no wonder why women aren't going to have kids, when every aspect of society is telling you (in indirect ways) not to.
Agree that the artificial womb is an undererstimated milestone technology that will radically change the world. But such a technological solution isn't a perfect solution for low birth rates if you take care of the fact that you still need to take care of the kids born out of these artificial wombs (even though it could radically improve women's lives).
D, Nim, and Haxe had it for quite some time (Along with Jai, which is yet unreleased to the public), although you can argue that Zig’s implementation is conceptually the simplest (it has merged compile time semantics with generic types in a unified way).
Nick Land's probably the one of the most fascinating outliers among philosophers though. His philosophy career is very sharply divided in two parts: the first part involves leftist materialism + Deleuze-Guattarian schizoanalysis + cyberpunk + gothic/Lovecraftian horror + a whole lot of drugs. But his heavy amphetamine usage kinda "broke" him, and after that the second part involves dealing with drug withdrawal along with a heavy doze of right-wing libertarianism and hyperfascism. I really don't like the latter half for obvious reasons (but critiquing him more fundamentally, he seems to have an incredibly warped view on evolution which is making him fall back into outdated eugenics, and also he has a habit of viewing technological progress and capitalist progress as the same thing). I still read some of his earlier works though.
Yeah, I've got to know Nick Land from Mark Fisher, who was a student of his and jointly participated in the CCRU (Cybernetics Culture Research Unit). Mark Fisher was the one who later wrote his most well-known book "Capitalist Realism", which was my first thorough introduction to leftist politics. Fisher would later decry Land's neo-reactionary turn (perhaps most explicitly in his post "Terminator vs Avator: notes on accelerationism", https://markfisherreblog.tumblr.com/post/32522465887/termina...), but he still acknowledged Land's accelerationist influence on him in the earlier years.
Land's history is... very interesting. His earlier works (such as "Kant, Capital, and the Prohibition of Incest") shows his materialist roots, but over time he began to be influenced heavily by the CCRU (which cyberfeminist Sadie Plant created) and Deleuze and Guatarri's works on schizoanalysis, along with a heavy doze of amphetamines(!). In his most productive, drug-fueled form he wrote what he called "theory-fiction", Deleuzian theory combined with fiction (cyberpunk, horror), leading to writings such as "Circitries" and "Meltdown". Land might have been overappreciated in the creation of accelerationist philosophy, but I still think he was an incredible poet. Sadly, his overreliance on drugs literally "broke" him, and after some physical/mental health issues he moved to Shanghai and after that became the neo-reactionary we know today. I think it's a quite lame ending to his philosophy career, many of his collegues tried to persuade him to budge towards the left and failed, and Land himself says that he wants to leave behind his amphetamine-fueled past self.
Actually, slashes in filesystem::path is one of the operator overloading uses I really like in the C++ standard library (It’s time-saving, it’s useful, it’s easy to read). What I really don’t like is the IO operators << and >>, which I think is an incredibly horrid language design mistake. (It’s slow in performance, it’s hard to add formatting options, hard to read).
Oh no... so far the most terrifying title I've seen in HN this year. By the way, it's impressive how they even managed to multithread this.
I disagree, left-right isn't sufficient enough to capture the peculiarities of current US politics.
it's more along these three camps:
- Progressives / Left Populists (such as Bernie, AOC, etc...) - they aren't really "extreme left"; they are more moderate lib-left if you ask any Europeans. They don't really want to demolish capitalism as some actual Marxists suggest, they just want to fix/modulate capitalism to be reasonable to the ordinary people, at the expense of large corporations and free market policies. Although some of them are in the Democratic Party, they are still failing to exert any power in there, which is mostly comprised of neoliberals. However, they are gaining an noticeable amount of partisan support these days, up to the point that the neoliberals had to actually strategize a bit to make sure Bernie doesn't win in the DNC primaries.
- Neoliberals / Globalists (Obama, Biden, etc...) - this is where the majority of politicians are at, comprising the majority of the Democratic Party, as well as about half of the Republican Party (or even more). Although it seems on the surface that the Dems and Reps are fighting the shit out of each other, many of them are still bind by the common interest of supporting various austerity policies, free reign of large corporations and making sure the global free market economy continue without any problems. Note that the left tends to use the term "neoliberal" more, while the right tends to use the term "globalists" more. From the left and right populist's view they are the source of all evil, and from a neoliberal's view the populist left/right are respectively "communists" and "fascists".
- Right Populists / Nationalists (Trump, etc...) - Just like the progressives hate that the neoliberals are looting people with austerity measures and skyrocketing housing/healthcare/education costs, the right populists hate that the globalists are looting people by shutting down former industrial businesses, and imposing some weird liberal cultural hegemony upon them. Though I do not completely know the dynamics inside that camp, there seems to be a common agenda of being oppositional to immigration and being pro local business, as well as a deep hatred of liberal media. They have started to take over the GOP party, which is why there are no-Trump Republicans fighting against it.
Trump is kind of an outlier - he was a real-estate neoliberal but was kind of an outcast among them, and he forced his way into politics with many years of reality TV image-shaping. Many on the far-left criticize him being a neoliberal in right populist coating, and some on the far-right are disappointed by Trump about him having achieved nothing (which is a different phenomenon than no-Trump Republicans - I'm talking about actual fascists here!)
There are also some on the left (state communists, anarchists) as well as the far-right (fascists, neoreactionaries) which I've excluded, as they are still a bit fringe.
It also seems that the right often oversimplifies the left as well as the left oversimplifies the right, and that's partially because there are power struggles inside both of the respective camps that makes the whole situation a bit complicated. For example, if you picked a random BLM protester, chances are you'll get a neoliberal (if their protest was co-opted by the establishment Democrats), a progressive (if their protest wasn't co-opted but are still mainly peaceful and still believe in electorialism), or an anarchist (if they do not believe in electorialism and are more interested in looting and smashing the police). A naive right-populist will see protesters destroying police stations and say that the Democrats are letting this happen and the left are all "cultural Marxists", but in reality it's a situation where anarchists are on the rise and the neoliberals are failing to take control over the "peaceful/orderly protest" narrative. Actually, I don't really know if the protestors participating in the violence are simply "anarchists", maybe they are just uninterested in these labels and just want to wreck shit up as they are fed up by many decades of police suppression.
I'm currently reading Fisher's posthumous book, "Postcapitalist Desire: the Final Lectures" (lectures collected and edited by Matt Colquhoun). And it seems that many, including myself, had overlooked Fisher's whole academic project as being solely a negative endeavor, which is partially because his book "Capitalist Realism" was such a huge success and overshadowed his other writings. He was always actively trying to find strategies for a way out of capitalism, finding various kinds of desires in our current society that capitalism was not able to satisfy. I think the most important essay on this matter would be "Terminator vs Avatar: Notes on Accelerationism" (https://markfisherreblog.tumblr.com/post/32522465887/termina...), which I think solidified his position as a left-accelerationist from that point. It's kinda sad that the next well-known essay, "Exiting the Vampire's Castle", which decried the callout culture of the Left, marked the end of his activities on the Internet because of its backlash and perhaps hastened his spiral of depression. His unfinished project - "Acid Communism", might be critiqued as a nostalgic retreat to the 60s and the 70s - but I think he was doing something more subversive than that. My interpretation was that in order to imagine a society without neoliberalism, we need to reclaim the ability to remember that there was a past before neoliberalism. The tendency of postmodern culture (as critiqued by Frederic Jameson and further elaborated by Fisher) was to destroy the ability to articulate about history and time, leaving any sort of progressive change into a stagnated halt. I think his unfinished project was not about retreating to the past, but remembering the past to turn the wheels of history again. Although he may have taken his own life in 2017 (possibly after seeing a glimpse that something might come after neoliberalism, but that may be fascism instead of what he'd wanted) - I still think he died as an accelerationist and didn't succumb to the "no alternative" dogma of late capitalism.
This reminds me of the concept of hauntology [1] [2] - the return of elements of the past as symbolic ghosts, haunting our current world. It's strange since this concept was introduced in philosophy by Derrida in the 90s, and further studied by cultural theorists such as Simon Reynolds and Mark Fisher - but Gibson seems to nail this phenomenon in his short story a decade earlier.
And this phenomenon is perhaps most exacerbated today, as we are experiencing a gradual but terminal decline of former capitalist empires, but nobody can imagine a new revolutionary path out (as Mark Fisher would say, "the slow cancellation of the future") Ghostly ideologies from the past (communism, fascism) are quickly recycled on the Internet for their nostalgic sign value, but as it is quickly consumed and commoditized it fails to offer a solution for the problems of our current world. And more people are listening to music [3] that admittedly makes them feel "nostalgic for a past that does not exist".
[1] https://en.wikipedia.org/wiki/Hauntology [2] https://en.wikipedia.org/wiki/Hauntology_(music) [3] https://en.wikipedia.org/wiki/Vaporwave
Stretch Buffers in the stb header-only library:
https://github.com/nothings/stb/blob/master/stretchy_buffer....
This basically allows you to use std::vector<T> like vectors in C, but with an added benefit that you can subscript the vector like arr[3] rather than using unwieldly functions like vector_get(arr, 3) or vector_put(arr, 3, value).
Wow, the plugin feels way faster than Octotree. Thanks for the suggestion!
And from the latest comment on this issue (https://github.com/christianbundy/octotree/issues/1#issuecom...): It seems that the project switched from MIT to AGPL around 2016, so all the contributor commits before that doesn't matter. Excluding those, there's only 10 commits from people outside the team, which frankly isn't a big deal.
Anyways, it's frustrating that the author is kinda acting a bit scummy for something that might not have been even a problem. If he was a bit patient and had just got permission from those people beforehand... (I don't really think any of those 10 people would object to it since the commits aren't that big, unless one of them is a free software movement purist perhaps) And people generally agree on Mozilla's "95% author coverage" line so I think this controversy might have been a bit overblown.
When you're doing any sort of non-trivial gamedev, graphics, or physics simulation work, there are so many instances when you have to get a bunch of magic numbers by trial and error, and it's usually all over your code. If you try to "refactor" these cleanly into a separate JSON file (hint: it NEVER is that clean), it still takes time and effort away from you to by writing boilerplate code, which seriously kills your momentum for experimenting and iterating with your code. It's kind of a niche domain-specific thing which most gamedevs and graphics programmers would sympathize with.
Also there are also a shit-ton of minor logic-changing modifications when you're writing prototype gamedev code, (for example, moving an if statement here or there to tweak the physics of your platforming). These cannot be easily represented in config files, and this is why people attach lightweight scripting languages like Lua to their game engines (so that you don't have to wait for those atrocious C++ compile times when tweaking your gameplay code).
(Ironically, serde is known for its atrocious compile times, which really makes the situation even worse. Because of this some frustrated Rust gamedevs wrote their own serialization libraries such as nanoserde (https://github.com/not-fl3/nanoserde)... but you get the point.)
Basically yes. Godot’s main userbase (hobbyists/small indie developers) aligns more with Unity than Unreal. Although Unreal has also appealed to some indie devs recently, it is still a heavy, bulky, monstrous beast of an engine that appeals more to AAA gamedevs and high-profile indiedevs.
The Corona SDK always have a special place in my heart. I was in middle school when I've used it back then, and it tremendously helped in me learning programming at a young age.
Before, I would try to learn how to make games by dabbling with SDL/DirectX/Cocos2D/etc, but figured out that you can't really do much with these frameworks as a beginner than just copy-pasting code in the books and tutorials. I was really able to make "complete" apps once I've grabbed a no-nonsense batteries-included framework like Corona, and I would have wasted far more time on useless low-level stuff if I haven't stumbled upon it.
Oh, and about the unfortunate name they've decided with: who really knew that this coincidence would happen haha...
Actually the error messages are much nicer than you've thought. Here's an example:
$ circle taco4.cxx -I /home/sean/projects/opensource/taco/include -M /home/sean/projects/opensource/taco/Debug/lib/libtaco.so -filetype=ll
Creating compute_1 function
macro expansion: taco4.cxx:428:3
error in expansion of macro auto call_taco(const char*, const options_t&)
code injection: taco4.cxx:420:6
error thrown in @expression("c")
error: @expression:1:1
undeclared identifier 'c'
A well-defined meta language would probably have way better error messages than an accidentally-discovered language based on insane template hacks.It's just a bummer that Tribes: Ascend (the last installment of Tribes) went downhill quickly and became dead. No other FPS game can match the sheer joy of shooting other players with projectile weapons while skiing midair at 200km/h...
C++'s template metaprogramming was "found" as an accident, and is a very bad example of metaprogramming as a whole. (Techniques like SFINAE and CRTP seem more like a hack, and leaves a bad taste in your mouth when you use it.)
What we should talk about instead: hygienic macros in Scheme/Rust, AST-level modification in Nim, dependent types, etc. I think metaprogramming is an aspect of programming that should be explored more, and is definitely useful for reducing boilerplate.
No, postmodernism is not identity politics. This video explains this very well: https://youtu.be/26fIBA7O5Ag
Although postmodernism isn’t as strictly defined as other philosophical movements, one can still clearly say what it doesn’t represent. Postmodern philosophy is typically associated on the internet as feminism/multiculturalism/Cultural Marxism, although it is none of that at all. It may have some loose ties by influencing some feminists and critical theorists through some scholars such as Foucault and Deleuze, but you can’t really mash all of them into a same philosophical movement.
Here: https://github.com/wmchris/DellXPS15-9550-OSX
By the way, it doesn’t support discrete GPU, but Nvidia GPU performace in the XPS 15 is horrible due to heavy throttling anyway.