AboutBitter system and library developer. I like language.
SkillsC#, F#, VisualBasic, Seed7, C, C++, BASH, FISH, Actually fucking thinking and demanding evidence not jumping on the fucking bandwagon
LocationSurrounded by idiots
Joined devRant on 7/21/2017
Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Guy regularly comes off as woke in his shows. Been getting worse over time and it started really rubbing me the wrong way.
And in typical woke fashion, still has ass backwards stereotypes on women.3
I tagged the wrong person and sent an angry message to someone who didn't deserve it.
That's enough internet for a while.
Why the fuck do we set time based deadlines on projects/goals/sprints?
The only way to know accurately how long it would take is if you've done it before. And if you've done it before why are you coding it again?
And of course when these deadlines aren't met it's rarely the manager that gets shit; it's the devs who failed to meet a guess.47
Generally speaking Microsoft's documentation has gotten extremely good.
I have projects that, at this point, would get considerable benefit from being able to write parts directly in IL. Sometimes this is for performance, sometimes this to be able to express things that are valid IL, but not expressable in C# or VB or F#. If you work a lot with language you probably know what I'm talking about.
Microsoft hasn't just not documented anything for doing serious IL development, they straight up haven't provided anything to make it easy. No IL projects. No IL syntax/intellisence in VS. Nada.
There is ILSupport, a third party extension which does offer this, even mixed language/IL projects which would be perfect for what I need.
Except Microsoft made a change in the newer SDK's which broke the extension. Where ildasm and ilasm use to be, isn't where it now is.
I'm working with the extension author to come up with a new solution but the lack of documentation and easy/reliable access to those tools is irritating.
Your entire time with the company, be polite and cordial, don't say risky things, basically be a good boy. But importantly, stay social. Just politely social.
After several months of this, enough time that your fellow employees and management are well aware of your personality, go to the PM in private. Threaten them that if they don't leave you alone you're going to break into their house at night, sedate them, dislocate their jaw and take a shit down their throat.
The beauty of this is that they can't reasonably go to anyone over this, as it's totally unbelievable and out of character. And will be so horrified of what they just heard that they will leave you alone.2
Recently (about two weeks ago, iirc), I posted a question about peoples interest in a "more moderate" CoC.
Based a bit on my own thoughts, and various things posted by others around here, not just in response to my question, I've created the first draft of such a CoC.
I'd appreciate peoples thoughts about it. I have everything set up in GitHub for review/submissions.
Man they're coming today. I got another one.
An issue filed over an issue tags color being "too bright" and "draws more attention than other tags"
It's the "good first issue" tag you think maybe I did that by design?
"I see you're computing the same result multiple times, you shouldn't do that, here's how you optimize that out"
Okay listen you fuck, that's a null guard which goes directly into throwing an exception. The most optimal path is getting past the null guard as quickly as possible, which is what I do. Once you've failed the null guard, throwing an exception faster doesn't do you any good.
I swear plenty of FOSS programmers don't even really look at the project, they just find "errors" that make them feel smart.5
I have a BlackBerry KeyONE, because quite frankly I type more than I watch video or other shit on my phone.
For a few years now the keyboards have also acted as a track pad of sorts. It's nice for scrolling apps without smudging up the screen. Not to mention my fingers are already there most of the time anyways.
The StackExchange app for whatever reason scrolls the wrong direction. It's the only app from dozens that do this. It's so isolated it seems like this is a design issue with SE, not the phone.
You'd think of all the apps, the one for developers wouldn't be the one I have problems with.
I spent four days doing a rewrite for a possible performance boost that yielded nothing.
I spent an hour this morning implementing something that boosted parsing of massive files by 22% and eliminated memory allocations during parsing.
Work effort does not translate into gains.17
The four day rewrite of my codebase did... nothing...
No improvement. No detriment.
Failed my Triplebyte interview because even though they claim they are testing for "general programming knowledge" basically everything had to do with web front-end and back-end.
It's sort of two separate projects although they are very tightly related.
The first is a pattern combination library and parsing engine. It takes a superficially similar approach to Regex or parser combinators, but with some important underlying differences.
The second is a specialized (not turing complete) language for rapidly defining full language grammars and parsers/lexers for those languages.
I hope I'm not spending several days worth of work rewriting a code base for it not to have any performance benefits at all.7
SonarQube is obnoxious in it's moronic ideas that demonstrate lack of understanding of the languages it's analyzing.
In C# there exists a special kind of switch-case statement where the switch is on an object instance and the cases are types the instance could polymorphically be, along with a name to refer to that cast instance throughout the case. Pattern matching, basically.
SonarQube will bitch about short switch-case statements done in this way, saying if-else statements should be used instead. Which would absolutely be right if this was the basic switch-case statement.
This is a language with excellent OOP features. Why are your tests not aware of this?
I can't realistically ignore the pattern because that would also ignore actually cases where it's right. And ignoring the issue doesn't sit right with me. How does it look when a project ignores tons of issues instead of fixing them?
I keep spreading myself too thin. I pick up too many projects and find myself not working as much as I want on my main projects. I've been getting better about realizing this, and I caught myself after less than a month. But shit. I need to stop it.
How interested would people be in a CoC that was defined in a much more moderate way, providing the documented clarity that one provides, but without the SJW excentricities?13
And to think I've been cooking for barely over minimum wage because I don't have/can't get a degree. Cool22
It gets really irritating when I get turned down for jobs because, despite provable experience, I don't have a degree in computer science.
I can't go back to college because one of the colleges I was at lost my transcripts. And here, by law, the college you are applying to must have your entire transcript history before admitting you.
So I'm fucked and just hoping to find a company focused more on provable knowledge than a piece of paper. Yay.19
So I figure since I straight up don't care about the Ada community anymore, and my programming focus is languages and language tooling, I'd rant a bit about some stupid things the language did. Necessary disclaimer though, I still really like the language, I just take issue with defense of things that are straight up bad. Just admit at the time it was good, but in hindsight it wasn't. That's okay.
For the many of you unfamiliar, Ada is a high security / mission critical focused language designed in the 80's. So you'd expect it to be pretty damn resilient.
Inheritance is implemented through "tagged records" rather than contained in classes, but dispatching basically works as you'd expect. Only problem is, there's no sealing of these types. So you, always, have to design everything with the assumption that someone can inherit from your type and manipulate it. There's also limited accessibility modifiers and it's not granular, so if you inherit from the type you have access to _everything_ as if they were all protected/friend.
Switch/case statements are only checked that all valid values are handled. Read that carefully. All _valid_ values are handled. You don't need a "default" (what Ada calls "when others" ). Unchecked conversions, view overlays, deserialization, and more can introduce invalid values. The default case is meant to handle this, but Ada just goes "nah you're good bro, you handled everything you said would be passed to me".
Like I alluded to earlier, there's limited accessibility modifiers. It uses sections, which is fine, but not my preference. But it also only has three options and it's bizarre. One is publicly in the specification, just like "public" normally. One is in the "private" part of the specification, but this is actually just "protected/friend". And one is in the implementation, which is the actual" private". Now Ada doesn't use classes, so the accessibility blocks are in the package (namespace). So guess what? Everything in your type has exactly the same visibility! Better hope people don't modify things you wanted to keep hidden.
That brings me to another bad decision. There is no "read-only" protection. Granted this is only a compiler check and can be bypassed, but it still helps prevent a lot of errors. There is const and it works well, better than in most languages I feel. But if you want a field within a record to not be changeable? Yeah too bad.
And if you think properties could fix this? Yeah no. Transparent functions that do validation on superficial fields? Nah.
The community loves to praise the language for being highly resilient and "for serious engineers", but oh my god. These are awful decisions.
Now again there's a lot of reasons why I still like the language, but holy shit does it scare me when I see things like an auto maker switching over to it.
The leading Ada compiler is literally the buggiest compiler I've ever used in my life. The leading Ada IDE is literally the buggiest IDE I've ever used in my life. And they are written in Ada.
Side note: good resilient systems are a byproduct of knowledge, diligence, and discipline, not the tool you used.
Something I've noticed over my many jobs. "Professional" means entirely different things at different jobs, and doesn't follow fields either. That is, "Professional" in one field is understandably different from another, but businesses inside the same field also have different definitions of it.
It's almost as if "Professional" is just a euphemism for saying "we expect you to act a certain way, but are being passive aggressive about it so we can't be called out for it".5
This is meant as a follow-up on my story about how I'm no longer and Ada developer and everything leading up to that. The tldr is that despite over a decade of FOSS work, code that could regularly outperform a leading Ada vendor, and much needed educational media, I was rejected from a job at that vendor, as well as a testing company centered around Ada, as well as regularly met with hostility from the community.
The past few months I have been working on a "pattern combinator" engine for text parsing, that works in C#, VB, and F#. I won't explain it here, but the performance is wonderful and there's substantial advantages.
From there, I've started a small project to write a domain specific language for easily defining grammars and parsing it using this engine.
Microsoft's VisualStudio team has reached out and offered help and advice for implementing the extensions and other integrations I want.
That Ada vendor regularly copied things I had worked on, "introducing" seven things after I had originally been working on them.
In the almost as long experience with .NET I've rarely encountered hostility, and the closest thing to a problem I've had has been a few, resolved, misunderstandings.
Microsoft is a pretty damn good company. And it's great to actually be welcomed/included.2
I was one of the original developers behind the AuroraUX project. I left fairly early on as it was clear it would be a mismanaged disaster (we changed SCM three times before I had even finished initial planning).
About a decade later and, despite my initial work, no one did ever get GNAT and GIGI yanked off GCC, let alone put onto LLVM.
For the record, I think this is a bad idea now. GNAT and GIGI are awful and need to be replaced. GCC does a good job at executable code generation, and is generally competitive with LLVM. LLVM seems to have some better stuff for front-end designers that cause me to still favor it, but that's a different matter.
I met my girlfriend cooking. She has no programming experience whatsoever and is quite computer illiterate. But that's fine as that's not something I need in a partner.
She regularly asks me what I'm working on. I'll try to explain it, and sometimes she definitely gets it, but sometimes she's clearly lost as fuck. She'll enthusiastically say things like "that's awesome honey!" To things that are just explanations. Sometimes it makes me laugh. Most of the time it leaves me in this weird confused state, like she's just pandering.
But I know she means well and wishes me the best. She's an amazing woman, and even if she doesn't get a single thing I try to explain, I'd much rather be with that than the "Why the fuck are you always playing on the computer?" Types of people I meet far more often.16