Fork me on GitHub
#off-topic
<
2018-11-14
>
borkdude12:11:27

Check out https://clojurians.zulipchat.com. So far it seems a good alternative to Clojurians Slack. With history. Free for OSS.

👍 4
emccue15:11:56

downside though

emccue15:11:21

my cheap laptop can barely manage slack as it is, and i need that for other communities

dominicm17:11:58

@emccue in a web browser it struggles?

emccue18:11:19

no, i have the desktop app

emccue18:11:26

which runs in a web browser

emccue18:11:47

zulip works fine if i keep it open in my already running chrome

emccue18:11:01

but i am skeptical about adding another desktop app

emccue18:11:31

(read: electron app, im in class now so ill check if it is electron or not later)

Mario C.18:11:35

> You can't change a single line of code in the product without breaking 1000s of existing tests.

andy.fingerhut19:11:55

I have seen other code bases outside of Oracle that resemble those remarks.

benzap19:11:23

I used to work for Oracle, and yes, it was pretty bad

andy.fingerhut19:11:32

Anything with great commercial success and wide deployment and development over years, takes extraordinary efforts not to turn into what is described there.

👍 4
andy.fingerhut19:11:02

And extraordinary efforts are not what the typical individual contributor is incentivized to undertake.

👍 4
benzap19:11:27

Well, it's more the enterprise culture as well. There's never a drive for code excellence. Things are marketed on the business side by business folks, and this trickles down to managers who just want to get shit done so they don't get yelled at by the uppers. So any refactoring efforts are usually driven off to the side, because the managers are constantly trying to appeal to the uppers

benzap19:11:55

And since they got to the managerial position by going through the same grueling process of bug fixing garbage, they feel like 'it's your turn now'

andy.fingerhut19:11:34

Some managers are more sympathetic, rather than sadistic, too, but they are also not rewarded for code rewrites, either.

eggsyntax19:11:48

Joel Spolsky makes some good points about this problem in an old interview that's always stuck with me: https://www.salon.com/2004/12/09/spolsky/ I'll paste the relevant section as a thread, so it doesn't take up space here.

eggsyntax19:11:18

I remember once, when my grandparents were alive but were old, they were trying to go out to a restaurant with me one night, and it took a half-hour from the time they were standing by the door to the time we got out the front door because my grandmother kept saying, "Do I have my keys?" Of course she did have her keys. "Did I turn on the burglar alarm?" She went and turned on the burglar alarm. And then she said, "Do I have my keys? Go check if the garden door's open; I think I was outside today." "Is the water running?" Basically, by the time she got to be 65, every mistake she'd ever made in her life she had corrected by creating a new procedure by which she made sure that she never made that mistake again. For example, before she left the house, she double-checked that she had her keys, the burglar alarm was on and so forth. So she had been acquiring these habits to prevent making mistakes she had made in the past. And by the time she got to be 65, it took a half-hour to run through the whole checklist! What has happened at Microsoft is that someone discovers, for example -- this is something I found on a blog at Microsoft, it's a real story -- that in Turkish there are two letter I's. There's I with a dot and I without a dot, and a capital I without a dot becomes a lowercase i without a dot, whereas in English a capital I without a dot becomes a lowercase i with a dot. So if you've got some code that's checking if something is an integer, and it's doing it by actually comparing the strings, and if your code just happens, in order to make it a case-insensitive test, to lowercase the thing first, that works fine -- until you're running on Turkish Windows. Then, the lowercase i actually wittily, and stupidly, becomes a lowercase Turkish i, which does not compare to an integer with a dot on the i, so that code doesn't work. So I found on a blog some guy that was going through thousands and thousands of lines of code trying to find these cases. And he's writing about it on his blog so that nobody else would ever make that mistake. And you can sort of see that at some point the guy would say, "Before we ship, let's just make sure there's a representative of the Turkish Windows team in the room signing off." You can imagine them making up some system to prevent this mistake. And now it's gotten to the point where, as Adam Bosworth says, it takes 16 months to get out any release of any Microsoft product. They really can't steer that ship very fast. They spent something like a year on SP2 [Windows XP Service Pack 2] -- it's a good thing they did that, but it's almost all cleanup, maintenance, catch-up, for security reasons. It's what the Army calls fatigue. Fatigue is everything in the Army that you do to keep your equipment in good working condition: polishing your shoes, brushing your teeth, making sure that you're ready and that all your bullets are clean and there's no sand in your gun. It's all called fatigue, and it takes about two hours a day for an infantry guy. And it's everything but the actual thing you're trying to do. Microsoft has now got to the point where it's like 80 percent, 90 percent fatigue.

😊 4
benzap19:11:28

Definitely

andy.fingerhut19:11:23

And I don't think there is anything unique to the programming language C in the following comment, but default mutability and deep call trees and data structures with lots of pointers/references between them make for a nightmare to understand the consequences of code changes, even small ones. Even in a single-threaded program

☝️ 8
genekim03:11:48

@andy.fingerhut Wow. So poetic!!! Beautifully put!!! :) In all seriousness, I wonder how the Java team does their testing. If I remember correctly, with over a billion lines of code of code out there that they've committed never to break, I wonder what sort of testing is required to preserve that contract/intent? But maybe it's easier because it's a compiler? Although, in the latest Aho / Ullman / et al edition, someone wrote about how difficult and miserable changing GCC is these days. In contrast: There was a great talk by a senior manager for Microsoft Windows this year that was jaw dropping. Incredible technical investment to enable 12K engineers to work productively and safely. Big challenge: keeping build and test times down, and keeping master green. Required 3 years to rewrite git to speed up clone/status operations.

genekim03:11:20

From a tweet: Holy cow. Watching amazing #does18 talk on the amazing journey of Windows team, starting from dark days of Vista & its unexpectedly poor 1% uptake! Last release: 11K engrs, 4MM commits, 500K PRs, 3B tests! https://youtu.be/SIKX8eEuGAs Wow. Catherine Kamerling & @SamGuckenheimer. https://twitter.com/RealGeneKim/status/1059517233624309760/photo/1

andy.fingerhut19:11:40

It almost seems like it is valuable to keep such code bases around, and maybe even invite people to fix bugs in them for a month or three of their early career, so they understand deeply why Clojure and its rationale is so awesome. If you never see the ugly, how will you know the beautiful?

🤯 4
todo23:11:08

Is there a 1-1 mapping between ascii/unicode-chars and strings (that provides a "name" for the char)

andy.fingerhut23:11:27

You mean in some big data file somewhere you can download or look at on a web page? There should be from http://unicode.org. Note that this mapping grows with new releases of the Unicode standard.

todo23:11:55

I was hoping a machine readable format that lets me do u32 -> string and string -> u32

andy.fingerhut23:11:01

There is probably more tha none such mapping, with the ones I am aware of on http://unicode.org giving the "name" or "description" in English.

andy.fingerhut23:11:48

I downloaded something several years ago from http://unicode.org that should still be there, and should enable you to get what you want, but it might take a little bit of data file massaging to get exactly what you want.

andy.fingerhut23:11:03

Maybe something linked from this page might contain what you want: https://www.unicode.org/reports/tr44/ If you want something already massaged for you, some existing programming language library probably has something even closer to what you want, maybe in http://site.icu-project.org/home/why-use-icu4j

andy.fingerhut23:11:35

Sorry if I'm giving you something that takes 5 steps to get what you want, when something that takes only 1 step might very well exist and I just haven't seen it yet.

jaide23:11:49

Anyone at the NYC clojure meetup right now? I’m afraid I couldn’t make it work tonight but I’m hoping it will be recorded.

timgilbert22:11:38

Hey, I was there. I think the talks aren't going to be released, but they will both be given at the Conj as well, so there will be another chance to see them.

todo23:11:12

@andy.fingerhut: going from 5 steps to 1 step is only an 80% improvement, going from "not possible" to 5 steps is an infinite-percent improvement 🙂

genekim03:11:48

@andy.fingerhut Wow. So poetic!!! Beautifully put!!! :) In all seriousness, I wonder how the Java team does their testing. If I remember correctly, with over a billion lines of code of code out there that they've committed never to break, I wonder what sort of testing is required to preserve that contract/intent? But maybe it's easier because it's a compiler? Although, in the latest Aho / Ullman / et al edition, someone wrote about how difficult and miserable changing GCC is these days. In contrast: There was a great talk by a senior manager for Microsoft Windows this year that was jaw dropping. Incredible technical investment to enable 12K engineers to work productively and safely. Big challenge: keeping build and test times down, and keeping master green. Required 3 years to rewrite git to speed up clone/status operations.