u/adr86
adr86
adr86
OpenD is about common-sense, incremental improvements to the language, driven by real world use and library needs, while limiting breakage. Tries to avoid stagnation and regression without being especially revolutionary. I've had significant success with D and want to preserve and build upon those wins.
adr86
wsl is linux so download the linux version (third on the list here):
https://github.com/opendlang/opend/releases/tag/CI
```
# download
curl -OL https://github.com/opendlang/opend/releases/download/CI/opend-latest-linux-x86_64.tar.xz
# unzip
tar Jxf opend-latest-linux-x86_64.tar.xz
# optionally, make available in the system path
sudo ln -s `pwd`/opend-latest-linux-x86_64/bin/opend /usr/local/bin
```
Then you can make a yourfile.d and opend yourfile.d to compile it with default flags.
adr86
opengl works the same in d as pretty much any other language
i still prefer old style lol
https://opendlang.org/library/arsd.simpledisplay.html#topic-3d-drawing
adr86
because the big players are too busy (re)inventing their own specific wheels. I have aspirations of my own to help improve things, but it requires a lot of effort and time.
adr86
If someone were to reorder a and b by mistake,
Same if someone were to swap the names. You can just .... not do that. (or if you do, provide a deprecated constructor to inform users of the change)
adr86
I've never met anyone with 10x my capability either.
Plenty of people with 1/10th though. So I guess maybe the 1/10th programmer is just super common and the 10x programmer is a myth.
adr86
I'm so late to the game compared to some of y'all, my first linux was in 2004, downloading zipslack to my computer (at the time, pentium 1 with 96 MB of ram and 1 GB hard drive) so i could try it without messing up my Windows 98.
After deciding to proceed, I went to do a full install. People on the internet were all like "mandrake is the best linux" but it wouldn't run remotely well on that computer, so I stuck with Slackware. By the end of 2005, I realized I never used that Windows 98 anymore and let linux take over my computer.
I'm still on Slackware, though over the years, I've written so many custom programs and little hacks to the stock software I run it is almost more of a custom distro at this point lol.
adr86
I don't really like reddit. I've never found a more wretched hive of scum and villainy; it is even worse than slacker news.
Besides, I still have this one on my subscription list and it is almost dead so they could use the extra traffic of me popping by now and then lol
edit: btw if you curious what going on with opend i try to post in my blog at least once a month (tho it is still named weekly lolol) https://dpldocs.info/this-week-in-d/Blog.html
adr86
I've also been on the D train for about 17+ years, using it for basically everything across several domains. Been a part of my day job since 2009. I use D because it is, by far, the best option available to me.
I'm also now the maintainer of OpenD, which has enabled me to further enhance my productivity gains and cement the future of the language. Success is what you make of it.
adr86
I'm curious now how many people - organisations? - use D for backend, because that seems to be where I fit in the world professionally.
I've used D for dozens of web clients over the years.... 9 of them are still live today if my count is right. They're all (except for one) pretty small though, little organizations, local businesses, etc., but there's some nice variations in what they've needed. Scheduling, sales tracking, learning management systems, just basic websites, etc.
adr86
im pretty sure wine runs on mac, probably worth a try.
adr86
ooooooooooooooooooh golly it'll be until like march that i realize the year has changed lol
well yeah that's upstream D for you. still a ping on the thread might be helpful.
adr86
I tried to help with docs but my help was kind of ignored.
then links to a 5 day old PR that got positive comments day of and after.... like I got frustrated enough with the D maintainers that I outright forked the language, but I wouldn't call what you got there being ignored - it has been just a couple days, they probably just forgot over the weekend, a simple reminder ping would probably get something happening there.
adr86
sorry brother for misreading you 😊
adr86
Yeah, if the example was like:
"Your code has horrible performance for large inputs. Why did you not use binary search?"
vs
"This implementation performed very poorly on these tests with this data. Why did you not use binary search?"
I'd probably not have commented, since "horrible performance" vs "performed poorly" is saying the same thing just slightly differently, and adding specific test results is always a positive, so that would be uncontroversial to me.
I'm not against politeness per se, I'm just saying this author's examples are not, in fact, an improvement, and caution anyone against following this in real life. You're much better off assuming good faith, mutual respect, and seeking to understand before passing judgement than posting smileys.
adr86
Making a suggestion or even a criticism doesn't imply that the other party is "stupid" or "lazy".
The first example that said "Why not use binary search?" is suggestion and criticism too, but it isn't insulting. It respects the author enough to assume there might be a legitimate reason they made the choice they did. This is how equals communicate.
The second example comes from a place of arrogance, thinking the reviewer is better than the author - as if the person who wrote the original patch has never heard of a binary search or is clueless about the size of datasets, and is only now thinking about it for the first time. This is not how equals communicate.
Respect goes both ways.
If you let your ego get all defensive you might as well not bother.
Ego is when you conflate the code with the person. If you say "your code has horrible performance", only defensive ego would take that as impolite, since that's about the code, not about you.
The author would most likely say "I know, but there's other factors that are more important here" and then you can have a discussion about those factors.
If the author was like "omg you criticized my code im going to go crying about it" then do them a big favor and release them from this job so they have the time to go back to kindergarten. Maybe there they can spend more time with the second reviewer!
adr86
Reddit is a great example of what not to do:
Constructive criticism of the post gets score of -10 (and counting)
Blatant personal insult with no technical content whatsoever, score +6 (and counting)
adr86
Contrast two forms for the same code review suggestion:
The first one respects me, the second one doesn't. If anyone came at me with the second one, I'd find it extremely offensive and likely respond accordingly.
Seriously, let's write some responses.
Your code has horrible performance for large inputs. Why did you not use binary search?
Reply: large inputs never happen since they were filtered out on a higher level. See, line 64,992 of the diff shows the branch.
I think binary search would have better performance here, since our datasets can be quite large. What do you think? 😊
If I thought the binary search was better, I would have written a binary search. You seem to be implying that I'm stupid and/or lazy. Why do think this is appropriate behavior for the workplace? And why are you using that infantile smiley? An insult with a smile is still an insult.
This incident will be reported to all levels of management. I recommend that you be terminated immediately, with extreme prejudice. Have a nice day 😊
adr86
yeah i was gonna come here and say i don't especially like my job
but i dislike it less than i disliked most other jobs i had so i guess im winning.
tho the article said anecdotally plumbers and farmers hate their jobs less. id believe it, they prolly at least feel more useful doing jobs that actually have to be done by somebody
im skeptical of the "amount of technical debt" reason tho, that sounds like just an excuse.
adr86
There's a webp lib commonly installed on linux computers (idk about windows) that is quite easy to use:
https://developers.google.com/speed/webp/docs/api
mp4 is more involved though probably do want to use ffmpeg for that.
adr86
I thought that only a pointer to a class would need to be explicitly initialized/created with new.
All class objects in D are implicitly pointers (similar to Java). So they all must be initialized.
But with a custom object.d, plain auto k = new Klass(); shouldn't even build... make sure you have the right binary then run it in a debugger and see where it segfaults. The difference between bare metal and running on the OS shouldn't matter here so you can run it on your normal debugger probably.
adr86
Klass k; k.test();
This is why you segfault - you never instantiated the class so it is a null k. Do scope Klass k = new Klass; or similar to make it work.
But I did bare metal classes + exceptions + stuff in D back in 2013. Things are fairly different now but the same basic approach still works - start with empty object.d and copy/paste stuff from upstream as you need it. Same ideas for webassembly, bare metal, etc., been done a few times.
adr86
How is it a bug for invalid code to give a compile error message?
adr86
Nah, programming is mostly trying to find cargo cult nonsense to copy/paste.
Come on, if this were true, there wouldn't be so much opend work being backported to upstream.