Off-Topic: Most stories about politics, or crime, or sports, or celebrities, unless they're evidence of some interesting new phenomenon. Videos of pratfalls or disasters, or cute animal pictures. *If they'd cover it on TV news, it's probably off-topic.*
It is news because several newspapers credit the achievement to Trump and his envoy Witkoff. Ha'aretz has more on this, but it's paywalled so here is another one:
I hate Trump as much as the next guy, but multiple sources are agreeing on the fact that Trump’s team had a role to play in this. But I guess this upsets the “vote blue no matter who” crowd.
Walter, I'll take any chance I can get to say: thank you for creating D! One thing I was wondering about is the limits of compile time execution.
How does the D compiler ensure correctness if the machine the compiler runs on is different from the machine the program will execute on?
For example, how does the compiler know that "int s = sum(100000, 1000000)" is the same value on every x86 machine?
I'm thinking there could be subtle differences between generations of CPU, how can a compiler guarantee that a computation on the host machine will result in the same value on the target machine in practice, or is it assuming that host and target are sufficiently similar, as long as the architecture matches? (which is fine, I'm wondering as to what approaches exist)
It's the same value on all machines, because integer types are fixed size (not implementation dependent) and 2's complement arithmetic is mandated.
Floating point results can vary, however, due to different orders in which constants are evaluated. The x87, for example, evaluates to a higher precision and then rounds it only when writing to memory.
I'll second thanking you for making D. I still haven't found a language with more compile time capabilities that I can/would actually use. So I'm still using D.
Any thoughts on adding something like Zig's setFloatMode(strict)? I have a project idea or 2 where for some of the computation I need determinism then performance. But very much still need the performance floating point can provide.
Your best bet for floating point determinism is to stick with doubles. Then, in 64 bit code, the double math will be done with the XMM registers and instructions, which will stick with 64 bit arithmetic.
(Android dev at Meta here, though not involved with the Kotlin migration. Opinion below, completely my own)
We have: public and internal apps, tests for those, tons of wrappers around Android APIs, autogenerated infra code, did I mention the API wrappers?, custom layout engines, duplicate code that people wrote because they couldn't be bothered to search the monorepo, code that was copied without much thought because people searched the monorepo and found something, app architecture tools like dependency injectors, annotation processors, custom build tooling, etc
If you can think it, someone has probably committed Java/Kotlin or native code for it already.
> duplicate code that people wrote because they couldn't be bothered to search the monorepo, code that was copied without much thought because people searched the monorepo and found something
This is also a very common way in Object-Oriented code bases to ensure you're not messing anything up by re-using classes. Concatenating yet another class to the code base is the safest and laziest way to ensure you're not possibly changing the behavior of anything else when you inevitably need to add/change something in the class.
Why is this a OOP problem and not a problem in large code-bases in general? I can easily see it happening in functional or imperative languages where one creates an almost identical copy of a function instead of reusing and modifying an existing one.
While the reason people would be scared of modifying a class and a function could be the same, the way this defensive copy-paste of code would pan out is not the same; in one case we get an entirely new class, with all its nonsense in it (in many cases), in the other we get a new function operating on the same data types.
The former is not how OO is supposed to really work, but it is a direct result of adopting OO (non-obvious results of inheritance and other features) and in the latter we get exactly what we already were doing: Lots of functions operating on data, it's just more of the same.
It seems to me that one of these highlights the failure of its respective paradigm much more than the other.
I should note that I don't think functional programming as a paradigm is a particularly fruitful one. What I'm arguing for in the large, if anything, is bog standard procedural/imperative code with procedures/functions + data. Sprinkle in the few useful ideas functional programming does offer and you have something that has a fighting chance.
I don’t agree. What do you mean by all the additional nonsense if a class.
This sees to give an unreasonable leeway to copy pasted code to imperative functional languages. What if the copied function also has side effects, mutates a global variable etc. All these problems still exists.
Wouldn't it make more sense to do a massive refactoring given the situation is as you described? And, if needed, rewrite to Kotlin later. This would just cause the same problems to be reproduced in a different language.
A rewrite, too, would take less than years, would have a better end result. Honestly the FB application is not exactly rocket science, and the massive amount of code they have points more on the direction of broken internal process and a total lack of simplicity in the design and choices.
* To serve content that can be accessed on networks using captive portals
* To serve content on localhost while developing
* To serve content on devices where setting up letsencrypt or other SSL is either too much of a hassle or not important
* To stand up a quick HTTP server on hacked servers
> * To serve content on devices where setting up letsencrypt or other SSL is either too much of a hassle or not important
This is my use case, serving homeserver stuff from a ".internal" domain, only accessible through WireGuard. I ain't gonna mess with a custom CA just for this.
If one of my devices gets compromised enough to be able to sniff network packets that pass through the WireGuard interface, I have bigger problems to worry about.
I learnt Sapling while at Meta. I was skeptical when someone said "it's better than git" but then I used it and I will in turn now say that it's indeed better than git. At the very least it doesn't yell at you for not being on a branch and losing code, but it has easy commands for working with a source tree and working with diff stacks. I haven't used it outside Meta's infrastructure though.
Is there any data to back up your claim that immigrant kids are worse at math in US schools?
It doesn't match my personal experience. It is _well known_ in Europe that the American K-12 education system is weak.
Anecdata: All the exchange students from my middle- and high-school (in a third world country in Europe) came back saying they already knew the math that was being taught in the US school.
Well known and incorrect. If you control PISA scores for demographics, the American education system is fine to great. You can see American Whites outperform most other countries. American Black's outperform parts of Europe, including Greece.
Why would we not? If I didn't control for demographics, I probably wouldn't have my kids in our local public schools (in the wealthiest county <? - Santa Clara> in the country) because the Great Schools ratings show only mid-pack achievement. If I do control for demographics, though, I see the white & Asian kids are doing fine and it's the rest who are struggling, primarily for a combination of socioeconomic & immigration reasons. Given this, I'm comfortable sending my kids to our neighborhood schools because I'm in the fortunate demographic where kids will do well no matter where you put them.
It's the same for any educational achievement measures, including PISA. Kids from households with two parents who are working professionals and college educated will do fine most of the time, and kids without those privileges will struggle most of the time.
It kinda makes sense when looking at local schools to send your children to. It makes no sense when comparing countries in a major international study, that's just massaging data to make yourself look good
Every country has immigrants though, you can't just selectively remove them in one country and not the others, that is not an apples to apples comparison.
Because it's a random axis to split the data on and you only do it for the US, which makes zero sense to do when comparing entire countries.
What about Tunisian immigrants in France? Maybe they'd be at the very top? What about Whites in all countries? Maybe White kids across the globe are better than White kids in the US, which would put the US at the bottom?
We cannot conclude that "US education is amongst the top in the world" from the chart you presented.
> The education system is the same for all the kids
This is incorrect, certainly an ideal we'd all like but far from reality. The educational experiences and outcomes of 1st and 2nd generation immigrants can and often does differ significantly from native-born students. Seeing the difference in the data/scores should clue you into this and helps us understand the socioeconomic impact on student achievement that immigration has. Language is often a large factor where 1st and 2nd generation students may be speaking a different language at home than they are in school. The US has significantly more immigrants than other countries in the world which is why not controlling for it skews the data disproportionately.
If that table is to believed, the US is kind of middle of the pack if you sort by percentages, at 15%. It might even be middle of the pack for developed countries, too
I've counted OECD countries[1] (roughly 40 developed countries), and the US is in 15th place, on par with Spain. Hardly worth writing home about :-)
[1] This is the fairest comparison because people immigrate to rich countries in general. The only poor countries with lots of immigrants are generally safe poor countries right next to war-torn countries, which get lots of refugees.
Its especially pertinent here that a lot of the countries that outperform the US have significantly higher percentages of immigrants, yet they don't seem to be failing them in the manner that the US education system is:
Switzerland: 30%
Sweden: 20%
Canada: 21%
Germany, Austria etc.
Given how the US does schooling where zipcode matters as much as it does, something tells me you can get from A to B a lot quicker just by controlling for school district wealth or something
Conjecture, but it may be to focus on the native born population as a better metric for education quality since they have (presumably) been a product of that system for their entire life. Contrast that to a 1st gen immigrant who a major amount of time in a different country's system; testing them after a short stint in the US tells us much less about the US educational system. It's harder for me to think of a reason why 2nd gen should be removed, unless the assumption is the educational attainment/integration of 1st gen parents heavily biases the results of their kids. I don't know if all that holds up under scrutiny, though.
Also, because demographics aren't distributed evenly geographically, I think there is probably a case that the education system is different for different races (to the extent that racial geographic distribution is different).
2nd gen are removed so that there are fewer poor people with uneducated parents who can't help them at home because the school system is bad in the sample.
That's what I was alluding to, but it's unclear how sound of a methodology that is. It seems like a better approach would be to control for parent educational attainment directly, rather than use some imperfectly correlated metric like immigration status.
How you select immigrants would dramatically affect these results, so it makes sense to exclude them. A lot of East and South Asian 2nd gen achievement is due to them being the children of highly skilled immigrants - they’d thrive in almost any setup. If USA imported only PhDs from Latin America, their kids would be, on average, stellar achievers. For this reason, it makes sense to eliminate them as a group, in the interest of simplicity.
Thanks for the article and for including so many specific numbers in it for our benefit (details that I imagine many others might have decided to omit).
Now that you've been through this process, how would you go about finding a buyer yourself?
Also, are there any resources you found valuable for starting your business? How did you go about hiring your first employee and setting everything up for them as employees?
Again, thanks for the writeup and congrats on the sale!
>Now that you've been through this process, how would you go about finding a buyer yourself?
It would have been tough to find a buyer. Before I met Quiet Light, I was worried a broker wouldn't take me, and I'd have to find a buyer myself. So my plan was to (in order) start more loudly telling other founders that I'm looking for a buyer, reach out to more adjacent companies pitching them on a strategic acquisition, discuss on my blog that I'm looking for a buyer, and if all else fails, put up a banner on the store website saying the company is for sale. The problem was that the more loudly I advertise the company is for sale, the more obvious it is to buyers that I'm desperate to sell. It also risks spooking customers who might not want to buy hardware from a company whose ownership is about to change.
>Also, are there any resources you found valuable for starting your business?
Minute for minute, the best resource I've found is Jason Cohen's talk, "Designing the Ideal Bootstrapped Business."[0, 1] The key insight for me is that bootstrapped businesses have very different strengths and weaknesses than a VC-backed startup, so you should pick a business that plays to those strengths.
I also enjoyed Start Small, Stay Small by Rob Walling [2] and The Mom Test by Rob Fitzpatrick[3]. The tl; dr from those is that you need to avoid the trap of building something for months and then looking around for customers once it's done. You instead should flip it and talk to customers before you even start and find out what they need.
It's not a book or resource, but one of the most valuable things I did and wish I did it earlier was create a course. It's a very condensed version of the experience of bootstrapping a business because you need to identify a need, create a product that fills the need, then market it to customers. And you don't have to be the world expert on anything, you just need to know enough to get someone who's at level N to level N + 1 and who likes the way you explain things. And you can pick a small topic and create a course with 30-100 hours of work.
I spent 60 hours on my first course, and it made $10k, so it's not like a smash hit, but it's the highest ROI thing financially I've done since quitting Google.
>How did you go about hiring your first employee and setting everything up for them as employees?
In the first few months, I was assembling all the devices, packing boxes, and printing out instruction sheets myself. It wasn't sustainable because I was also trying to write code and do customer support. It was during COVID and my wife and I were quarantining strictly, but she also was looking for a job since she was in grad school, so she was employee #1.
We started with just Google Docs. I'd write things and share them with her, and she'd ask questions or make updates.
My next hires were developers, which was a pretty dumb decision because it's the most expensive role, and it's the job I like doing most myself. I was finding that I didn't have time to advance the product because customer support was taking too much time, so I should have hired a customer support person. But I hired devs because I'd hired devs before and worked with a lot of devs, so it was a role I felt comfortable hiring. For that, I tried to add lots of automated checks on Github and document things there. I also wrote guidelines on my blog that became official guidelines for devs within the company.[4]
We moved into an office in early 2021, and at that point, I had to hire real W-2 employees rather than contractors. For that I used JustWorks, which I hated. I switched to Gusto, and they were poor but not terrible. In the future, I'm going to avoid creating a business that needs W-2 employees because in the US, it's just set up so badly for small businesses to manage the paperwork around it.
As we were moving into the office, we also switched from Google Docs to Notion, and I had a good experience with Notion. It's set up well for internal documentation, and it's user friendly, so it's easy for everyone to do basic searching and editing.
I could go on and on about hiring, but those are the biggest things that come to mind.
Off-Topic: Most stories about politics, or crime, or sports, or celebrities, unless they're evidence of some interesting new phenomenon. Videos of pratfalls or disasters, or cute animal pictures. *If they'd cover it on TV news, it's probably off-topic.*