she’s definitely super white trash and has the good ol racist confederate flag in her room, but she still pretty country girl hot. I won’t link her cuz it has her doxx all public.
I strongly believe that this should be the standard everywhere. Unfortunately most governments won’t tell you this, because a few of them are busy building golden temples for their authoritarian leaders, and blowing half of it on cocaine while pretending it’s the immigrants’ faults
Not only this, I think this should be selectable by taxpayers before they pay taxes so they can customize the amount that goes to each category. This would be the true democratic way of doing it. So, for example, based on your salary you need to pay 20k in taxes. You’d then select how much you want to go into Transportation, Healthcare, defense, education, etc.
This wouldn’t be truely democratic. It would rather be just like donations. Government spending works, because it’s all out into the same basket. If it weren’t, then rich taxpayers would move the movey to projects they want - and as would have very little old-age welfare, because they don’t pay much taxes anymk6and every group in society would put the money into their projects.
This is a poor take, a few to vote is not the easy to go about this. Even owing taxes shouldn’t bar someone from voting as voting is about being represented and everyone deserves representation. Even hardened criminals.
This is but one of many sites which show a breakdown of where our money in the US goes. Having one that breaks down each person’s personal contribution would be especially interesting, but a percent is a percent so if 20% of our money collectively goes to X, then 20% of what your paid as an individual will also go to X.
sometimes accessibility and user experience is more important than "its available if you look for it.: 99% of people don’t really have time, they have families, jobs, some leisure, cooking, paying bills, visiting family. etc. etc. So it should be easy and the FACT that it isn’t easy is purposeful whereas the Australian system is purposefully easy.
I don’t disagree with your sentiment, but again, it IS easy. It took me less than 10 seconds to find the link I provided. Sure, make it even easier still by including it with every tax return, but let’s not kid ourselves - this shit is incredibly easy but average taxpayers just don’t want to bother.
I would argue average taxpayers don’t know it exists and a ton of them, particularly older ones have a very hard time with technology. I’ve had to show my mother in law how to get a url from her phone to her desk top, I’ve explained what the read mode means in Firefox, and numerous other things. Easy for you doesn’t mean easy for everyone.
I hate this format of content so much. An automatically reloading, never ending stream of snippets that are hardly informative even if they try. Fucking looks like they are trying to hypnotize us.
Oh wait, they absolutely are. Stop thinking about not being able to afford a living even though you bust your ass of everyday. Stop worrying about the climate. Get a new iphone and obediently watch citizen.
This is not a defense of TikTok style short form content. It’s just that from time to time, I do enjoy the shorter style videos. Like when I have 5 minutes to kill, watch a few short videos and be on my way.
What I really don’t like is that if you choose the app and the last thing you watched was a short, it opens right back up to to Shorts. Very annoying.
Yeah I occasionally use Instagram and look at reels. Sometimes it’s fun to catch the one snippet from a comedy sketch instead of watching the whole thing.
That said, I wouldn’t miss anything if I deleted it tomorrow.
Plus they commit the biggest sin possible in video…VERTICAL VIDEO. I hate this garbage trend of everything being designed for phones. Vertical videos suck. They are terrible to watch on desktop. You can rotate your phone sideways, you can’t rotate your TV, laptop, monitor, projector, etc. vertical (at least not most of the time).
Yeah, there’s a crazy amount of tricks they employed to bring the sprites to life in a way that just isn’t possible on modern displays. The sharp pixel look is actually an unfortunate byproduct of the transition to newer tech.
Abusing and exploiting slotmasks and such were what made games designed for CRTs look so much better on them. Unfortunately, it doesn’t work backwards, because newer games designed for LCDs and LEDs don’t look any better or worse on CRTs, outside of overscan and resolution issues.
For real though many modern pixel art titles use these same color techniques, and while they do not depend on crt blending them at all, they can often see slight visual benefits from the pixel blending that is possible with a modern shader adding that effect.
Fight n’ Rage has a built in set of shaders that do just this and it is beautiful. It is on by default, but still optional.
Running shredders revenge with a very mild crt effect also looks really good on a lot of the blended colors.
Sonic Mania has a very good built-in CRT shader. It’s not a perfect recreation, but it think it looks excellent! And I also think it looks really great on a CRT using a downscaler.
I suspect they had to jump on it when Elon shat the bed over the weekend. Suckerberg probably saw that disasterpiece and was like “quick, spit-shine the dev build and go live!”
For confused folks, no this is not how Canadians package their peanut butter, although yes the milk bags are real, IIRC this is actually a thing that happens in the Carribbean for locally packaged peanut butter because it’s cheaper than the jars are in the US and Canada.
Honestly, it’s still ridiculous to me how slow Python, Java, JS, Ruby etc. continue to feel, even after decades of hardware optimizations. You’d think their slowness would stop being relevant at some point, because processors and whatnot have become magnitudes faster, but you can still feel it quite well, when something was implemented in one of those.
Many of these have C-bindings for their libraries, which means that slowness is caused by bad code (such as making a for loop with a C-call for each iteration instead of once for the whole loop).
I am no coder, but it is my experience that bad code can be slow regardless of language used.
Bad code can certainly be part of it. The average skill level of those coding C/C++/Rust tends to be higher. And modern programs typically use hundreds of libraries, so even if your own code is immaculate, not all of your dependencies will be.
But there’s other reasons, too:
Python, Java etc. execute their compiler/interpreter while the program is running.
CLIs are magnitudes slower, because these languages require a runtime to be launched before executing the CLI logic.
GUIs and simulations stutter around, because these languages use garbage collection for memory management.
And then just death by a thousand paper cuts. For example, when iterating over text, you can’t tell it to just give you a view/pointer into the existing memory of the text. Instead, it copies each snippet of text you want to process into new memory.
And when working with multiple threads in Java, it is considered best practice to always clone memory of basically anything you touch. Like, that’s good code and its performance will be mediocre. Also, you better don’t think about using multiple threads in Python+JS. For those two, even parallelism was an afterthought.
Well, and then all of the above feeds back into all the libraries not being performant. There’s no chance to use the languages for performance-critical stuff, so no one bothers optimizing the libraries.
For example, when iterating over text, you can't tell it to just give you a view/pointer into the existing memory of the text. Instead, it copies each snippet of text you want to process into new memory.
As someone used to embedded programming, this sounds horrific.
Yep. I used to code a lot in JVM languages, then started learning Rust. My initial reaction was “Why the hell does Rust have two string types?”.
Then I learned that it’s for representing actual memory vs. view and what that meant. Since then I’m thinking “Why the hell do JVM languages not have two string types?”.
I’m not a java programmer, but I think the equivalent to str would be char[]. However the ergonomics of rust for str isn’t there for char[], so java devs probably use String everywhere.
Nope, crucial difference between Java’s char[] and Rust’s &str is that the latter is always a pointer to an existing section of memory. When you create a char[], it allocates a new section of memory (and then you get a pointer to that).
One thing that they might be able to do, is to optimize it in the JVM, akin to Rust’s https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html.
Basically, you could share the same section of memory between multiple String instances and only if someone writes to their instance of that String, then you copy it into new memory and do the modification there.
Java doesn’t have mutability semantics, which Rust uses for this, but I guess, with object encapsulation, they could manually implement it whenever a potentially modifying method is called…?
But yeah I’d like it if the features given by Lombok were standard in the language though it’s not a big deal these days since adding Lombok support is very trivial.
You shouldn’t use Lombok, as it uses non-public internal Java APIs, which is why it breaks every release. At one point we had a bug with Lombok that only resolved if you restarted the application. Switching off of Lombok resolved the issue.
Just switch to kotlin. You can even just use Kotlin as a library if you really want (just for POJOs), but at this point Kotlin is just better than Java in almost every way.
Energy use? That’s a pointless metric. If that is the goal then whole idea of desktop should be scraped. Waste of memory and hard drive space. Just imagine the amount of energy wasted on booting GUI.
If you want to talk about climate change then electronics is the wrong place to point the finger at. For start look at cement manufacturing. It requires huge amounts of energy to produce even though we have eco-friendly variants ready to go. And cement production amounts to 8% of all greenhouse gasses released annually.
Hell, just ban private jets and you’ve offset all of the bad things datacenters ever made. Elon had 10 minute flight to avoid traffic which consumed around 300l of fuel. Royal family makes so many flights a year that you could go into the wild and eat bark until the rest of your life and you wouldn’t be able to offset their footprint in thousands of lives.
Bill Gates himself talks a lot about reducing carbon footprint we make and yet he refuses to sell his collection of airplanes. He has A COLLECTION of them.
Using higher level language that requires more operations than assembler is not a thing to worry about when talking about climate change. Especially without taking into account how much pollution have those managed to reduce by smartly controlling irrigation and other processes.
Idk numpy go brrrrrrrrrr. I think it’s more just the right tool for the right job. Most languages have areas they excel at, and areas where they’re weaker, siloing yourself into one and thinking it’s faster for every implementation seems short sighted.
At it’s heart, numpy is C tho. That’s exactly what I’m talking about. Python is amazing glue code. It makes this fast code more useful by wrapping it in simple® scripts and classes.
That’s because it’s not relevant. Speed can be compensated for either by caching or outsourcing your load, if there’s such a huge need to process large amount of data quickly. In day to day work I can’t say I have ever ran into issues because code was executing slow. Normal operation Python is more than capable of keeping up.
On the other side of the coin you have memory management, buff and stack overflows and general issues almost exclusive to C, which is something you don’t have to worry about as much with higher level languages. Development with Python is simply faster and safer. We as developers have different tools, and we should use them for their appropriate purpose. You can drive nails with a rock as well, but you generally don’t see carpenters doing this all day.
You can sometimes deal with performance issues by caching, if you want to trade one hard problem for another (cache invalidation). There’s plenty of cases where that’s not a solution though. I recently had a 1ns time budget on a change. That kind of optimization is fun/impossible to do in Python and straightforward to accomplish Rust or C/C++ once you’ve set up your measurements.
You can find plenty of people complaining online about the startup time of the windows and gnome (snap) calculators. The problem in those cases isn’t solved by compiled languages, but it illustrates that it’s important to consider performance even for things like calculator apps.
Which is exactly what I said. Most of the times you can work around it. Sure cache invalidation can be hard, but doesn’t have to be. If you need performance use more performant language. Right tool for the job.
Especially since languages such as Python and JavaScript are really good a event programing where you have an event that runs a function. Most of the CPU time is idling anyway.
They do have optimizations however they are interpreted at runtime so they can only be so fast
Frankly you won’t notice much unless the program is doing something computation heavy which shouldn’t be done in languages such as JavaScript and Python
They aren’t as fast as a native language but they aren’t all that slow if you aren’t trying to use them for performance sensitive applications. Modern machines run all those very quickly as CPUs are crazy fast.
Also it seems weird to put Java/OpenJDK in the list as it is in its own category from my experience
Java is certainly the fastest of the bunch, but I still find it rather noticeable how long the startup of applications takes and how it always feels a bit laggy when used for graphical stuff.
Certainly possible to ignore that on a rational level, but that’s why I’m talking about how it feels.
I’m guessing, this has to do with just the basic UX principle of giving the user feedback. If I click a button, I want feedback that my click was accepted and when the triggered action completed. The sooner those happen, the more confident I feel about my input and the better everything feels.
Yep, I also don’t fully agree on that one. I’m typing this on a degoogled Android phone with quite a bit stronger hardware than the iPhone SE that my workplace provides, e.g. octacore rather than hexacore, 8GB vs. 3GB RAM.
And yet, you guessed it, my Android phone feels quite a bit laggier. Scrolling on the screen has a noticeable delay. Typing on the touchscreen doesn’t feel great on the iPhone either, because the screen is tiny, but at least it doesn’t feel like I’m typing via SSH.
I have experienced the delayed scrolling, mostly on cheaper phones.
But that’s mostly because i’m used to phones having 120+hz screens now, going back to a 60hz screen does feel a bit sluggish, which is especially noticeable on a phone where you’re physically touching the thing. I think it might also have something to do with the cheaper touch matrixes, which may have a lower polling rate as well.
Why? I certainly expect that to be a factor, but I’ve gone through several generations of Android devices and I have never seen it without the GC-typical micro-stutters.
It is always a question of chosing the right tool for the right task. My core code is in C (but probably better structured than most C++ programs), and it needs to be this way. But I also do a lot of stuff in PERL. When I have to generate a source code or smart-edit a file, it is faster and easier to do this in PERL, especially if the execution time is so short that one would not notice a difference anyway.
Or the code that generates files for the production: Yes, a single run may take a minute (in the background), but it produces the files necessary for the production of goods of over 100k worth. And the run is still faster than the surrounding processes like getting the request from production, calculating the necessary parameters, then wrapping all the necessary files with the results of the run into a reply to the production department.
True, plus the bloated websites I see are using hundreds of thousands of lines of JavaScript. Why would you possibly need that much code? My full fledged web games use under 10,000.
I both love and hate this so much. The performance and recording is incredible but any super tech nerdy parody just causes me immense internal cringe. I couldn’t make it more than a third of the way through that and I love working with K8S.
Clearly they are Jewish and their ancestors were part of The Madagascar Plan, where Nazi Germany was forced resettling Jewish people in Madagascar.
They have largely been isolated and weren’t able to keep apprised of what happened after their family was resettled. Germany had been really pushing to establish a military base in Antarctica for decades, so the penguins had the understanding that Germany must be well established there by the time they got there.
So that is why Penguins from Madagascar would believe that people in Antarctica would be speaking German.
They are originally from Antarctica and only end up in the zoo in the USA, however this only occurs in the Pinguins of Madagascar, which came out after the original Madagascar, so their origin story could have been thought up differently by the writers of the Madagascar movie than how it happened in the Pinguins of Madagascar movie
I think I would do okay, but that’s because I had a watch fascination when I was in school. Big thing that revolutionized navigation was stable clocks that could work on a boat. Depends on how far back you go really.
All consumer and enterprise equipment made in the last 10+ years natively support IPv6.
I object to this statement. You can buy name brand routers today that don’t implement it properly. Sure, they route packets, but they have broken stateless auto configuration or don’t respect DHCPv6 options correctly, and the situation is made worse because you don’t know how your ISP implements IPv6 until you try it.
God help you if you need a firewall where you can open ports on v6. Three years ago I bought one that doesn’t even properly firewall IPv6.
I tested a top-of-the-line Netgear router to find that it doesn’t support opening ports and once again doesn’t correctly support forwarded IP DHCPv6, which even if that works correctly, your Android clients can’t use it 🫠 Decades later there’s no consensus on how it should function on every device. This is a severe problem when you are a standard.
The state of IPv6 on consumer hardware is absolute garbage. You have to guess how your ISP implements it if at all, and even then you’re at the mercy of your limited implementation. If you’re lucky it just works with your ISP router. If you’re not, it’s a PITA.
The problem is mainly that IPv4 port forwarding is network address translation, but on IPv6 it’s instead IP forwarding with a firewall rule.
The latter is conceptually simpler, but it’s a different mechanism and one that most home routers don’t bother to implement. This is quite ironic because IPv6 was intended to restore end to end connectivity principles.
Don’t get me wrong; I’m quite happy with the standard. They are very few good implementations of that standard, and given the momentum of its predecessor, implementers just don’t care.
I absolutely hate how dependent we’ve gotten to IPv4. To the point that Amazon is charging almost $4 a month per IP. It used to be free. These assholes are buying IPv4 addresses so fast that they are literally driving up the price.
Is there a resource that you can recommend on learning IPv6 based on my knowledge on IPv4? A lot of resources I’ve seen are way over engineered for my feeble brain.
Like I know what IP addresses are and what port numbers are. I don’t understand the difference between how IPv6 addresses are assigned (both locally and generally speaking) and what makes it different from IPv4.
It absolutely can be DHCP. There’s two main ways to do it: stateless auto configuration, and DHCP. Super briefly, you can assign IP addresses the same way you used to if you want, or you can let devices pick their own.
I’m afraid I can’t recommend a great resource, but I really like the Wikipedia article because it’s very precise in its terminology. I appreciate that with learning a new subject. I’m not even that precise here. For example, I use the term IP forwarding more liberally than what it actually means.
This is why I use PFSense and Hurricane Electric as a v6 tunnelbroker. I have working functional IPv6 with SLAAC and DHCPv6 and full Routing Advertisements on my LAN running side-by-side so that no matter which the device implements how poorly; it gets an IPv6 address and it works and is protected by the firewall.
I really like stateless, but it bugs me that the router has to snoop on traffic if you want a list of devices. The good ones will actually do this, but most are blind to how your network is being used with IPv6.
And it really bothers me that Android just refuses to support DHCPv6 in any capacity. Seems like a weird hill to die on. There are too many legitimate use cases.
I run both because of this; and because SLAAC enables features in Desktop OSes that offer some level of additional privacy.
For example; Windows can do “Temporary IPv6 Addressing” that it will hand out to various applications and browsers. That IPv6 address rotates on a periodic basis; once every 24 hours by default; and can be configured to behave differently depending on your needs via registry keys.
This could for example, allow you to quickly spin up a small application server for something; like a gaming session; and let you use/bind that IPv6 address for it. Once the application stops using it and the time period has elapsed; Windows drops the IP address and statelessly configures itself a new one.
I also like the privacy extensions, but how often does your prefix even change? Most places I’ve seen you get a /64 announced and it basically never changes – so somewhat elementary to “break through” that regardless.
A /64 is more than enough though to prevent most casual attempts at entry; and does force more work / enumeration to be done to break into a network and do damage with. I’m not saying the privacy extensions are the greatest; but they do work to slightly increase the difficulty of tracking and exploitation.
With a /48 or even a /56; I can subdivide things and hand out several /64s to each device too; which would shake up things if tracking expects a /64 explicitly.
I actually use /55s to cordon off blocks inside the /48 that aren’t used too. So dialing a random prefix won’t help. You’d be surprised how often I get intrusive portsweeps trying to enumerate my /64s this way…and it doesn’t work because I’m not subnetting on any standard behavior.
You shouldn’t be forwarding anything - lan devices are directly accessible from the internet with ipv6. The router’s job now is to firewall inbound ipv6 packets. You should be able to simply open the inbound port for that device in particular.
Right, that’s how it should work. Unfortunately that’s not how it actually works most of the time in consumer.
Many devices don’t provide an option in the UI to open an inbound port on IPv6. For example, the latest and most expensive Linksys gaming router blocks all inbound connections and there are no options for different behavior. It doesn’t support opening any ports for v6.
The most recent TP link device I tested for my dad doesn’t even have a firewall. If you know the global IP, you can connect to any port you want.
And that’s why I abandoned cheap consumer routers many years ago… closest devices to implement ipv6 port management firewalling even half good was/is the ASUS devices. I got fed up and went pfsense and/or unifi one day and never looked back.
UDM handles ipv6 real good, and pfsense can even get /64 subs from an ATT router for all its lan interfaces.
Comcast has finally gotten around to giving hosts inside the firewall publicly routable IPv6 addresses, but port forwarding (which, by the way, can only be done through Xfinity’s website or mobile app which then connect to and configure the router through the ISP interface – if you go to the port forward configuration in the router’s webui, all you’ll see is a message that it’s now “easier than ever” to configure port forwards) can only happen on IPv4. Want to open a hole in the IPv6 firewall? Well that’s just too fucken bad.
Funny, I have an ancient DOCSIS modem from a company that went bankrupt ages ago which supports all these features flawlessly. Only thing it’s missing is DNS options, it’s hardcoded to use the ISPs DNS. Oh well.
lemmy.world
Top