There is a website forvo.com which has a bunch of community-generated pronunciations of words in a ton of languages. I used to use it a lot when I was playing around w/ learning languages.
Forget privacy, imagine what someone like @elder_plinius could get up to if you invited them over to dinner. All of the "AI Safety" issues get a lot more real once the AI's have bodies.
Nah, I don't think so -- it really was a big deal to have a bug back then, and software quality used to be a lot higher. We could go back and run some VMs to try to objectively quantify this (and it would be interesting to do so), but I'm personally confident my memory isn't being tinted by nostalgia.
The main reason is the ability to do constant updates now -- it changes the competitive calculus. Ship fast and fix bugs constantly wins out vs. going slower and having fewer bugs (both in the market & w/in a company "who ships faster?").
When you were shipping software on physical media having a critical bug was a very big deal. Not so anymore.
Basic windowing barely works on it. On macOS is can click anywhere on a window to bring it into focus and make it active.
System Settings is 50/50 if it works. I might still be able to interact with a control as it’ll click through, but the top bar is still lightly greyed out indicating it is still not in focus.
It was the first big sign that trouble was brewing. macOS is being destroyed from within.
Duolingo is terrible†, but proper gamification combined w/ LLMs for real conversations could be an incredible learning tool. (I might build this if no one else does.)
†It can be useful for going from absolute 0 to epsilon, just to kind of get familiar with the language, but if you're using it more than like 2 weeks, you're seriously wasting your time (vs. reading material in the target language, watching TV in target language, trying to talk w/ people in target language). Anki, too, can be a trap that feels like learning but isn't, really, in my experience.
There's a newer app I use called Natulang, developed by a Ukranian software dev to solve this problem for themself, which is entirely speaking focused w/ AI support and aims to get a person to a B2 level over 360 lessons w/ about 15 minutes each. I'd round up to 30 minutes each for actual time commitment due to the extra SRS sessions tacked on.
I'm 50 lessons in Spanish now and I definitely believe the claim. Recently was on a date w/ someone who knew about as much English as I know Spanish and only grabbed Google translate about a half dozen times.
It doesn't have much in the way of gamification... to me the fact that it seems very evidently effective is enough motivation to do a daily lesson.
Actual LLM powered free-form conversationalist assistants are better once someone has a solid base understanding, probably at least a 2000 word vocab. What you'd really want is a LLM powered instructor that develops and adjusts a lesson plan based on progress.
Playing briefly, looks pretty good! -- though I wonder if there's a way to move away from using a source language (or maybe it does this in later lessons?). You really want to try to get your head 100% inside the target language as quickly as possible, and not be translating back and forth.
You can do this with the "free dialog" option from the beginning. The only issue with this is you do have to reference the actual lesson material to that point, so it's more of a review piece.
That said, my impression is getting to functional in a language quickly requires referencing a source language that is fully understandable by the user to build vocab and comprehension - ie. explaining a new concept in the target language using the target language for a B1 student is going to be inefficient and not expressive enough. Otherwise you're fortifying what you already know vs. actually building more knowledge. Things like comprehensible input are great but seemingly more indirect and less efficient.
If you have an option to get from zero to B2 fairly quickly, you are functional enough in the target language to use a myriad of options to fluency, including doing nothing other than conversing with others.
You can get quite far with consistent long term approach with stuff like Duolingo. The problem is, its just one or very few... vectors or dimensions in which you progress, specifically aligned with how the material is done. I have a friend, he is doing DL for French for maybe 2 years, every day. He can talk some stuff pretty well, freezes on some other situations. Passive understanding works quite well for him too.
Real use of language has many dimensions, changing also ie the ways you think in that language for example.
Nothing beats real use where you have to express yourself and not skip to other languages as a shortcut, no way around this.
I've tried learning apps with LLMs and part of the issue is that you can't have much of a conversation early on. A conversation of "how many cats do you have?" "I have two cats" "what color are your cats", etc., isn't much different than the non-AI lessons. At the point where it would be really useful, the other options you mentioned are much better choices.
I think having a world (3d maybe, or maybe just 2d) you could talk about in a really simple way might be useful here. Imagine something like "el gato quiere la pelota roja" and you have to carry the red ball to the cat to pass to the next lesson, and there's a cat, and a dog, and capibara and various shapes; something like that...
There's probably the opportunity to have simple stories and personalities come into play too, early on, to add interest. Think about e.g. the Frog and Toad books for children learning to read.
I teach languages and teaching people how to functionally craft things with a language works much better in the medium to long term. By the time you get some basics down, you can actually have a conversation beyond "comment ca va, comment t'appelle tu?" because you know how to use the language, not just parrot phrases.
> but proper gamification combined w/ LLMs for real conversations could be an incredible learning tool.
I don't necessarily disagree but I do believe it will require some really smart design ideas. I am pessimistic that a big name company will come up with them
YouTube is incredible, YouTube is poorly run. If I were making the laws, I'd do something similar to mandatory licensing of songs for radio: mandate that YouTube, as a sort de-facto content monopilist, provide third-party access to its database (upload, discovery, view counts, recommendations, etc). Devil is in the details, but well-done it would strictly improve the world.
Independent competitive companies are great, but things tend to devolve into de-facto mini-governments once things stabilize, and from there I think the (real) government using its power to force a little more competition could really improve things.
Setting aside safety for a moment, consider just hygiene: BART is shockingly dirty. Which suggests mismanagement, above and beyond just a lack of detterence of criminality.
As for safety -- firing squads are probably not in the cards, but would jailing the violent be too much to hope for?
US healthcare is such a pain -- very high premiums, high deductibles, tons of paperwork, no price transparency.
My wife is from mexico, so while her visiting familly there I've had some opportunity to interact with and observe their system.
It seems better!
There are public hospitals which are open to all. The quality and wait times are reasonble, not fantastic. There is very little paperwork. (You don't have to jump through hoops like signing up for Medicaid or something.)
Alongside that, you can buy private insurance and go to private hospitals, which, in my (admittedly limited) experience, are very good -- efficient and reasonably priced. I would _guess_ because of less regulation and because they have to provide value above and beyond the free healthcare that's available?
In the US we seem to have created sort of the opposite incentive structure -- public healthcare is only available to a limited set of people, and everyone else is more or less forced into the private healthcare system (or "private", since it seems heavily intertwined w/ govt -- e.g., standard govt websites to pick a povider, tax penalty (tho since lifted) if you aren't signed up).
Somehow there's always a mountain of paperwork and bills that dribble in over months, and you never know how much the final cost is going to be.
Another seemingly-insane feature of the US system is if I pay for a service w/o insurance, I'll be billed some crazy rate. With insurance, I'll copay some reasonable-ish rate, and the insurance company will also pay some reasonable rate, often at like a 90% discount to the "quoted" rate. It feels like I'm coerced into insurance because I can't out-of-pocket pay the actual real reasonable rates.
Another annoyance is it also doesn't seem possible to buy insurance that just covers accidents, which I would personally do if I could...
> In the US we seem to have created sort of the opposite incentive structure -- public healthcare is only available to a limited set of people, and everyone else is more or less forced into the private healthcare system (or "private", since it seems heavily intertwined w/ govt -- e.g., standard govt websites to pick a povider, tax penalty (tho since lifted) if you aren't signed up).
There is no “we”. The rich and influential people that run the US _designed_ the system this way on purpose. To extract as much money from citizens. We didn’t reach this point by accident. Is there a presidential party or candidate that’s running on “tear the whole stupid system down and rebuild it to be simple and affordable”? Little baby steps like obama care don’t count in my opinion. No reasonable person would design a healthcare system where a hospital charges $500 for dispensing ibuprofen for example. Or a system where it’s impossible to predict how much you’ll pay as a patient. And they call it a “marketplace” lol. That’s lunacy.
If you know someone running on that as their campaign, please let me know. I’d be happy to vote for them. I’ll even donate to their campaign!
> Another annoyance is it also doesn't seem possible to buy insurance that just covers accidents, which I would personally do if I could...
That sounds like an interesting concept. Travel insurance is sort of like that, but not the same thing obviously.
This whole "extraction of money" is so stupid though, it is just reducing labor output nothing else, so goddamn stupidly greedy. Insurance should be for left field diagnoses and stay the fuck out of everything else. Right now payers are being leaned on as guardians of the purse strings which is incomprehensibly dumb.
>> There are public hospitals which are open to all.
No way they are open for all. Maybe emergency room is, but not whole hospital. If you have an unknown disease which is not an emergency (like some STD) - I highly doubt you can go strait to the hospital and get proper treatment.
What I'm talking about is a citizen usually cannot come without months of waiting in a queue for a scheduled appointment with a reference from a family doctor unless into the emergency care.
This has already been explained many times, but it's so much fun I'll do it again. :-)
So: The way Go presents it is confusing, but this behavior makes sense, is correct, will never be changed, and is undoubtedly depended on by correct programs.
The confusing thing for people use to C++ or C# or Java or Python or most other languages is that in Go nil is a perfectly valid pointer receiver for a method to have. The method resolution lookup happens statically at compile time, and as long as the method doesn't try to deref the pointer, all good.
It still works if you assign to an interface.
package main
import "fmt"
type Dog struct {}
type Cat struct {}
type Animal interface {
MakeNoise()
}
func (*Dog) MakeNoise() { fmt.Println("bark") }
func (*Cat) MakeNoise() { fmt.Println("meow") }
func main() {
var d *Dog = nil
var c *Cat = nil
var i Animal = d
var j Animal = c
d.MakeNoise()
c.MakeNoise()
i.MakeNoise()
j.MakeNoise()
}
This will print
bark
meow
bark
meow
But the interface method lookup can't happen at compile time. So the interface value is actually a pair -- the pointer to the type, and the instance value. The type is not nil, hence the interface value is something like (&Cat,nil) and (&Dog,nil) in each case, which is not the interface zero value, which is (nil, nil).
But it's super confusing because Go type cooerces a nil struct value to a non-nil (&type, nil) interface value. There's probably some naming or syntax way to make this clearer.
The underlying reason, which you hint on, is that in Go (unlike Python, Java, C#… even C++) the “type” of an “object” is not stored alongside the object.
A struct{a, b int32} takes 8 bytes of memory. It doesn't use any extra bytes to “know” its type, to point to a vtable of “methods,” to store a lock, or any other object “header.”
Dynamic dispatch in Go uses interfaces which are fat pointers that store the both type and a pointer to an object.
With this design it's only natural that you can have nil pointers, nil interfaces (no type and no pointer), and typed interfaces to a nil pointer.
This may be a bad design decision, it may be confusing. It's the reason why data races can corrupt memory.
But saying, as the author, “The reason for the difference boils down to again, not thinking, just typing” is just lazy.
Just as lazy as it is arguing Go is bad for portability.
I've written Go code that uses syscalls extensively and runs in two dozen different platforms, and found it far more sensible than the C approach.
Yeah, I totally agree -- given Go's design, the behavior makes sense (and changing the behavior just to make it more familiar to users of languages that fundamentally work differently would be silly).
However, the non-intuitive punning of nil is unfortunate.
I'm not sure what the ideal design would be.
Perhaps just making an interface not comparable to nil, but instead something like `unset`.
type Cat struct {}
type Animal interface{}
func main() {
var c *Cat = nil
var a Animal = c
if a == nil { // compile error, can't compare interface to nil
;
}
if a == unset { // false, hopefully intuitively
}
}
Still, it's a sharp edge you hit once and then understand. I am surprised people get so bothered by it...it's not like something that impairs your use of the language once you're proficient.
(E.g. complaints about nil existing at all, or error handling, are much more relatable!)
(Side note, Go did fix scoping of captured variables in for,range loops, which was a back-incompat change, but they justified it by emperically showing it fixed more bugs than it caused (very reasonable). C# made the same change w/ the same justification earlier, which was inspiration for Go.)
Yeah, it blew my mind when I first learned Go had this problem -- like, people have already tripped over this many times! I was pleasantly surprised to see them fix it though.
I deeply, seriously, believe that you should have written the words "Its super confusing", meditated on that for a minute, then left it at that. It is super confusing. That's it. Nothing else matters. I understand why it is the way it is. I'm not stupid. As you said: Its super confusing, which is relevant when you're picking languages other people at your company (interns, juniors) have to write in.
> “The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.”
This is cool! Immediately upon playing with it I find I want more features :-)
- Ability to toggle ocean traversal off/on
- Ability to see route on a map
- AI generated summary of the trip if I took it -- what things did I see along the way? (Should reference real map data, then make up a story; matching local culture etc.)
There's also a paid API. I made a very basic command-line client which might still work: https://github.com/erinok/forvosay
reply