Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Search - "matching"
-
When you have a super annoying problem that Google has been unable to help with... But you stumble upon a link with the exact title matching your issue... And clicking on it gives you a 404.
15 -
As a developer, sometimes you hammer away on some useless solo side project for a few weeks. Maybe a small game, a web interface for your home-built storage server, or an app to turn your living room lights on an off.
I often see these posts and graphs here about motivation, about a desire to conceive perfection. You want to create a self-hosted Spotify clone "but better", or you set out to make the best todo app for iOS ever written.
These rants and memes often highlight how you start with this incredible drive, how your code is perfectly clean when you begin. Then it all oscillates between states of panic and surprise, sweat, tears and euphoria, an end in a disillusioned stare at the tangled mess you created, to gather dust forever in some private repository.
Writing a physics engine from scratch was harder than you expected. You needed a lot of ugly code to get your admin panel working in Safari. Some other shiny idea came along, and you decided to bite, even though you feel a burning guilt about the ever growing pile of unfinished failures.
All I want to say is:
No time was lost.
This is how senior developers are born. You strengthen your brain, the calluses on your mind provide you with perseverance to solve problems. Even if (no, *especially* if) you gave up on your project.
Eventually, giving up is good, it's a sign of wisdom an flexibility to focus on the broader domain again.
One of the things I love about failures is how varied they tend to be, how they force you to start seeing overarching patterns.
You don't notice the things you take back from your failures, they slip back sticking to you, undetected.
You get intuitions for strengths and weaknesses in patterns. Whenever you're matching two sparse ordered indexed lists, there's this corner of your brain lighting up on how to do it efficiently. You realize it's not the ORMs which suck, it's the fundamental object-relational impedance mismatch existing in all languages which causes problems, and you feel your fingers tingling whenever you encounter its effects in the future, ready to dive in ever so slightly deeper.
You notice you can suddenly solve completely abstract data problems using the pathfinding logic from your failed game. You realize you can use vector calculations from your physics engine to compare similarities in psychological behavior. You never understood trigonometry in high school, but while building a a deficient robotic Arduino abomination it suddenly started making sense.
You're building intuitions, continuously. These intuitions are grooves which become deeper each time you encounter fundamental patterns. The more variation in environments and topics you expose yourself to, the more permanent these associations become.
Failure is inconsequential, failure even deserves respect, failure builds intuition about patterns. Every single epiphany about similarity in patterns is an incredible victory.
Please, for the love of code...
Start and fail as many projects as you can.30 -
!rant
This was over a year ago now, but my first PR at my current job was +6,249/-1,545,334 loc. Here is how that happened... When I joined the company and saw the code I was supposed to work on I kind of freaked out. The project was set up in the most ass-backward way with some sort of bootstrap boilerplate sample app thing with its own build process inside a subfolder of the main angular project. The angular app used all the CSS, fonts, icons, etc. from the boilerplate app and referenced the assets directly. If you needed to make changes to the CSS, fonts, icons, etc you would need to cd into the boilerplate app directory, make the changes, run a Gulp build that compiled things there, then cd back to the main directory and run Grunt build (thats right, both grunt and gulp) that then built the angular app and referenced the compiled assets inside the boilerplate directory. One simple CSS change would take 2 minutes to test at minimum.
I told them I needed at least a week to overhaul the app before I felt like I could do any real work. Here were the horrors I found along the way.
- All compiled (unminified) assets (both CSS and JS) were committed to git, including vendor code such as jQuery and Bootstrap.
- All bower components were committed to git (ALL their source code, documentation, etc, not just the one dist/minified JS file we referenced).
- The Grunt build was set up by someone who had no idea what they were doing. Every SINGLE file or dependency that needed to be copied to the build folder was listed one by one in a HUGE config.json file instead of using pattern matching like `assets/images/*`.
- All the example code from the boilerplate and multiple jQuery spaghetti sample apps from the boilerplate were committed to git, as well as ALL the documentation too. There was literally a `git clone` of the boilerplate repo inside a folder in the app.
- There were two separate copies of Bootstrap 3 being compiled from source. One inside the boilerplate folder and one at the angular app level. They were both included on the page, so literally every single CSS rule was overridden by the second copy of bootstrap. Oh, and because bootstrap source was included and commited and built from source, the actual bootstrap source files had been edited by developers to change styles (instead of overriding them) so there was no replacing it with an OOTB minified version.
- It is an angular app but there were multiple jQuery libraries included and relied upon and used for actual in-app functionality behavior. And, beyond that, even though angular includes many native ways to do XHR requests (using $resource or $http), there were numerous places in the app where there were `XMLHttpRequest`s intermixed with angular code.
- There was no live reloading for local development, meaning if I wanted to make one CSS change I had to stop my server, run a build, start again (about 2 minutes total). They seemed to think this was fine.
- All this monstrosity was handled by a single massive Gruntfile that was over 2000loc. When all my hacking and slashing was done, I reduced this to ~140loc.
- There were developer's (I use that term loosely) *PERSONAL AWS ACCESS KEYS* hardcoded into the source code (remember, this is a web end app, so this was in every user's browser) in order to do file uploads. Of course when I checked in AWS, those keys had full admin access to absolutely everything in AWS.
- The entire unminified AWS Javascript SDK was included on the page and not used or referenced (~1.5mb)
- There was no error handling or reporting. An API error would just result in nothing happening on the front end, so the user would usually just click and click again, re-triggering the same error. There was also no error reporting software installed (NewRelic, Rollbar, etc) so we had no idea when our users encountered errors on the front end. The previous developers would literally guide users who were experiencing issues through opening their console in dev tools and have them screenshot the error and send it to them.
- I could go on and on...
This is why you hire a real front-end engineer to build your web app instead of the cheapest contractors you can find from Ukraine.
19 -
My linkedin profile = ~7 years as an iOS developer. All of my job titles are "iOS Developer", "iOS Engineer" or "Mobile lead".
Recruiter: Hi, your profile looks great, I have a number of open roles matching your skills. Would you be free for a call to discuss your salary expectations, skills, what you are looking for etc.
Me: Hi, sorry I don't have time for a call right now, here are answers to your questions. Can you send me on any iOS job specs you have and i'll review. <answers>
Recruiter: Sorry I have no open iOS roles at this time.
Bitch ... ima find you and make you understand5 -
Fuck you, devs who quote Knuth:
"Premature optimization is the root of all evil"
I agree with the spirit of the quote. I agree that long-winded arguments comparing microsecond differences in performance between looping or matching constructs in a language syntax is almost always nonsense. Slightly slower code can even be preferable if it's significantly clearer, safer and easier to maintain.
But, two fucking points need to be made to you lazy quickfix hipsters trying to sell your undercooked spaghetti code as "al dente", just fucking admit that you had no clue what you were doing.
So here we go:
1. If you write neat correct code in one go, you don't need to spend time to optimize it. Takes time to learn the right patterns, but will save you time during the rest of your career.
2. If you quote Knuth, at least provide the context: "We should forget about small efficiencies, say about 97% of the time [...] Yet we should not pass up our opportunities in that critical 3%"
YES THAT CRITICAL 3% IS WHERE YOU MESSED UP.
I'll forgive you for disgorging your codevomit into this silly PR.
BUT YOU'RE QUOTING KNUTH IN YOUR DEFENSE?
Premature optimization is the root of all evil... 6300 SQL queries to show a little aggregate graph on the dashboard... HE WOULD FUCKING SLAP YOUR KEYBOARD IN HALF IN YOUR FACE.3 -
sudo apt-get random-tool
Traceback (most recent call last):
Aborting because there's a fork in the spoon compartment on line 43 in main
Error this script only works on Python 2.7 and maybe 4.1 on line 59 in main
Missing symbols when trying to decipher Sumerian recipe for steamed vegetables on line 67 in main
Cannot open shared object: Your OS is a bully and is hiding my files on line 98 in main
Are you sure all directories matching ^(/)?([^/\0]+(/)?)+$ are in your $PATH on line 268 in main
Your computer is kind of vibrating in an annoying way on line 332 in main
Failing because I'm feeling insecure please hold me on line 587 in main
I'm feeling confused about my sentience when running TensorFlow models on line 682 in main
FUCK
HAS ANYONE EVER MANAGED TO JUST FUCKING INSTALL A PYTHON BASED APPLICATION WITHOUT DEBUGGING RANDOM COMPUTER STATE SHIT AND DEPENDENCIES FOR THREE HOURS?15 -
I’m surrounded by idiots.
I’m continually reminded of that fact, but today I found something that really drives that point home.
Gather ‘round, everybody, it’s story time!
While working on a slow query ticket, I perused the code, finding several causes, and decided to run git blame on the files to see what dummy authored the mental diarrhea currently befouling my screen. As it turns out, the entire feature was written by mister legendary Apple golden boy “Finder’s Keeper” dev himself.
To give you the full scope of this mess, let me start at the frontend and work my way backward.
He wrote a javascript method that tracks whatever row was/is under the mouse in a table and dynamically removes/adds a “.row_selected” class on it. At least the js uses events (jQuery…) instead of a `setTimeout()` so it could be worse. But still, has he never heard of :hover? The function literally does nothing else, and the `selectedRow` var he stores the element reference in isn’t used elsewhere.
This function allows the user to better see the rows in the API Calls table, for which there is a also search feature — the very thing I’m tasked with fixing.
It’s worth noting that above the search feature are two inputs for a date range, with some helpful links like “last week” and “last month” … and “All”. It’s also worth noting that this table is for displaying search results of all the API requests and their responses for a given merchant… this table is enormous.
This search field for this table queries the backend on every character the user types. There’s no debouncing, no submit event, etc., so it triggers on every keystroke. The actual request runs through a layer of abstraction to parse out and log the user-entered date range, figure out where the request came from, and to map out some column names or add additional ones. It also does some hard to follow (and amazingly not injectable) orm condition building. It’s a mess of functional ugly.
The important columns in the table this query ultimately searches are not indexed, despite it only looking for “create_order” records — the largest of twenty-some types in the table. It also uses partial text matching (again: on. every. single. keystroke.) across two varchar(255)s that only ever hold <16 chars — and of which users only ever care about one at a time. After all of this, it filters the results based on some uncommented regexes, and worst of all: instead of fetching only one page’s worth of results like you’d expect, it fetches all of them at once and then discards what isn’t included by the paginator. So not only is this a guaranteed full table scan with partial text matching for every query (over millions to hundreds of millions of records), it’s that same full table scan for every single keystroke while the user types, and all but 25 records (user-selectable) get discarded — and then requeried when the user looks at the next page of results.
What the bloody fucking hell? I’d swear this idiot is an intern, but his code does (amazingly) actually work.
No wonder this search field nearly crashed one of the servers when someone actually tried using it.
Asdfajsdfk.rant fucking moron even when taking down the server hey bob pass me all the paperclips mysql murder terrible code slow query idiot can do no wrong but he’s the golden boy idiots repeatedly murdered mysql in the face21 -
So, there was this person I met on the internet who was preaching about how the success of games depends primarily on luck.
His argument was that even though he made a great game(his opinion) and uploaded it to the appstore his game failed to gain popularity.
He stated that there are about 500 games uploaded daily and it is only the matter of luck whether or not a game gets noticed and that he ran out of luck.
Now, his game was a pretty ripped off copy of the overused tile matching games. I pointed out to him that the reason his game didn't do well was probably because he made a ripoff(I actually used 'a copy's but 'ripoff' sounds more rant like) and that he priced it fairly high, while there were free games with more features and better graphics and mechanics(based on the description of the game and screenshots).
He then began to rage(all caps obviously) about how I am talking out of my ass and that I probably haven't even made a game yet.
I politely(the only reason I was polite was because the account was known to my Twitter followers. Sometimes one has to protect one's name) told him that I am an indie game developer and that I have made a decent amount of games.
He then proceeded to mock me and dared me to name a few.
So I posted four links to my 48 hour competition games and one to an official game.
He then began to call me an imposter, so I did a shout-out to him through my Twitter account.
Instead of continuing on Twitter, he ran back to the forum, and began to shit talk about how anyone can do it if they have a team with them.
I corrected him on that, stating how I was alone at the time and these particular games were the results of me working hard and striving to improve myself.
Then the guy finally starts spamming on different threads about how I am an arrogant bastard and other explicit forms of abuses before finally getting banned.
Sometimes I don't even know why I bother.
When I was starting out, there was this developer who would point out the faults in my games so that I could work on them. That was a great help and probably accelerated my growth. He was a great mentor and is now a good friend and is now in my team.
I guess some people are so hung up on their pride that they will refuse to accept their mistakes and make any efforts to improve.9 -
(c) Creative Tim. Worth to read pips!
How to land a programming job
1. ABC (Always Be Coding) - The more you code, the better you'll get.
2. Master at least one multi-paradigm language - Some good candidates are C#, C++, Java, PHP, Python, and Ruby.
3. Re-invent the wheel - You should implement the most common data structures in your language choice.
4. Solve word problems - Pick those that test your ability to implement recursive, pattern-matching, greedy, dynamic programming, and graph problems
5. Make coding easy - At least, make it look easy.
6. Be passionate - If you don't care, then nobody else will.
7. Don't make assumptions - Ask questions if you're not sure.11 -
Let me preface this by saying I'm not a designer.
While I can make individual bits of a site look good, and I'm actually pretty skilled with CSS/Sass, overall design completely escapes me. I can't come up with good designs, nor do I really understand *why* good designs are good. It's just not something I can do, which feels really weird to say. but it's true.
So, when I made the Surfboard site (that's the project's internal name), I hacked everything together and focused on the functionality, and later did a branding and responsive pass. I managed to make the site look quite nice, and made it scale well across sizes/devices despite being completely new to responsiveness. (I'm proud, okay? deal.)
After lots of me asking (in response to people loudly complaining that the UI doesn't have X feature, scale properly on Y device, and doesn't look as good as Z site), the company finally reached out to its UI contractor who does their design work. After a week or two, he sent a few mockups.
The mockups consisted of my existing design with a darker background, much better buttons, several different header bars (a different color) with different logo/text placements, and several restyled steppers. He also removed a couple of drop shadows and made some very minor styling changes (bold text, some copy edits). Oh, he also changed the branding colors. Nothing else changed. It's basically the same exact site but a few things look a little better. and the branding is different.
My intermediary with the designer asked for "any feedback before finalizing the designs" -- which I thought odd because he sent mocks for two out of the ten pages (nine plus a 404 page). (Nevermind most of the mocks showed controls from the wrong page...).
So, I typed up a full page of feedback. Much of it was asking for specifics such as responsive sizing on the new header layout, how the new button layout would work for different button counts, asking for the multitude of missing pages/components, asking why the new colors don't match the rest of our branding, etc. I also added a personal nitpick about flat-looking controls because I fucking hate them. Everything I wrote was very friendly and professional.
... His response was full of gems. Let me share a few.
1. "Everything about the current onboarding site looks like a complete after-thought." (After submitting a design basically identical to mine! gg!)
2. "Yes [the colors match our current branding]." (No. They don't. I checked. The dark grey is different, the medium grey is different, the silver is different, the light blue is different. He even changed the goddamn color of the goddamn LOGO for fuck's sake! How the fuck is that "matching"?!)
3. "Appreciate the feedback [re: overlapping colored boxes, aka 'flat'], design is certainly subjective. However, this is the direction we are going." (yet it differs from the rest of our already-redesigned sites you're basing this off. and it's ugly as shit. gg again :/)
4. "Just looked at the 404 page. It looks pretty bad, and reflects very poorly on the [brand name] brand. Definitely will make a change here!" (Hey! I love that thing. It's a tilted, dotted outline of a missing [brand product] entirely drawn with CSS. It has a light gray "???" underlay and some 404 text inside. Everyone I showed it to, coworkers and otherwise, loved it. "Looks pretty bad". fuck you.)
I know I shouldn't judge someone so quickly, but what the fuck. This guy reminds me of one of those pompous artists/actors who's better than everyone and who can never be wrong, even while they're contradicting themselves.
just.
asfjasfk;ajsg;klsadfhas;kldfjsdl.undefined surfboard another rant about the same project long rant pompous designer apples and asteroids design8 -
Microsoft announced Visual Studio 2017. Yeah, Party.
I am so hyped, because with it comes C#7.0. I am speaking of tuples, pattern matching and local functions. This will be great. Soon ☺️🎉6 -
I told my boss I'd been offered a job somewhere else with a better position and pay and he presented a reasonable counter-offer in under two hours which included an on-paper promotion and matching payrise.
I stayed. 🙃12 -
> Root struggles with her ticket
> Boss struggles too
> Also: random thoughts about this job
I've been sick lately, and it's the kind of sick where I'm exhausted all day, every day (infuriatingly, except at night). While tired, I can't think, so I can't really work, but I'm during my probationary period at work, so I've still been doing my best -- which, honestly, is pretty shit right now.
My current project involves legal agreements, and changing agent authorization methods (written, telephone recording, or letting the user click a link). Each of these, and depending on the type of transaction, requires a different legal agreement. And the logic and structure surrounding these is intricate and confusing to follow. I've been struggling through this and the project's ever-expanding scope for weeks, and specifically the agreements logic for the past few days. I've felt embarrassed and guilty for making so little progress, and that (and a bunch of other things) are making me depressed.
Today, I finally gave up and asked my boss for help. We had an hour and a half call where we worked through it together (at 6pm...). Despite having written quite a bit of the code and tests, he was often saying things like "How is this not working? This doesn't make any sense." So I don't feel quite so bad now.
I knew the code was complex and sprawling and unintuitive, but seeing one of its authors struggling too was really cathartic.
On an unrelated note, I asked the most senior dev (a Macintosh Lisa dev) why everything was using strings instead of symbols (in Rails) since symbols are much faster. That got him looking into the benchmarks, and he found that symbols are about twice as fast (for his minimal test, anyway), and he suggested we switch to those. His word is gold; mine is ignorable. kind of annoying. but anyway, he further went into optimizing the lookup of a giant array of strings, and discovered bsearch. (it's a divide-and-conquer lookup). and here I am wondering why they didn't implement it that way to begin with. 🙄
I don't think I'm learning much here, except how to work with a "mature" codebase. To take a page from @Rutee07, I think "mature" here means the same as in porn: not something you ever want ot see or think about.
I mean, I'm learning other things, too, like how to delegate methods from one model to another, but I have yet to see why you would want to. Every use of it I've explored thus far has just complicated things, like delegating methods on a child of a 1:n relation to the parent. Which child? How does that work? No bloody clue! but it does, somehow, after I copy/pasted a bunch of esoteric legacy bs and fussed with it enough.
I feel like once I get a good grasp of the various payment wrappers, verification/anti-fraud integration, and per-business fraud rules I'll have learned most of what they can offer. Specifically those because I had written a baby version of them at a previous job (Hell), and was trying to architect exactly what this company already has built.
I like a few things about this company. I like my boss. I like the remote work. I like the code reviews. I like the pay. I like the office and some socializing twice a year.
But I don't like the codebase. at all. and I don't have any friends here. My boss is friendly, but he's not a friend. I feel like my last boss (both bosses) were, or could have been if I was more social. But here? I feel alone. I'm assigned work, and my boss is friendly when talking about work, but that's all he's there for. Out of the two female devs I work with, one basically just ignores me, and the other only ever talks about work in ways I can barely understand, and she's a little pushy, and just... really irritating. The "senior" devs (in quotes because they're honestly not amazing) just don't have time, which i understand. but at the same time... i don't have *anyone* to talk to. It really sucks.
I'm not happy here.
I miss my last job.
But the reason I left that one is because this job allows me to move and work remotely. I got a counter-offer from them exactly matching my current job, sans the code reviews. but we haven't moved yet. and if I leave and go back there without having moved, it'll look like i just abandoned them. and that's the last thing I want them to think.
So, I'm stuck here for awhile.
not that it's a bad thing, but i'm feeling overwhelmed and stressed. and it's just not a good fit. but maybe I'll actually start learning things. and I suppose that's also why I took the job.
So, ever onward, I guess.
It would just be nice if I could take some of the happy along with me.7 -
Interest matching system...
Just like slack but openly recommending a group to people who have similar thought
Aka, Grouping people by similar thought12 -
Moved in to new house, finally have myself a room for an office. Started to deck it out and the wife asks if we can find matching chairs, one for her, one for me...
It's more than an office, its supposed to be my man/dev cave!
11 -
Once I got zero in an exam just because I chose to make a function for a piece of code I had to use repeatedly. I went to my lab teacher and asked her what was wrong about my code to which she replied "This code is wrong because there should not be this function in this class". She was our lab instructor and turned out she marked us by matching our code with code given to her by our lecturer. I quietly returned to my seat and started thinking about how did she get this job.8
-
Gf: "Why are you such a typist"
Me: "I promise not to buy more keyboards with blue switches..."
Gf: "No, I mean like being racist or sexist, but you discriminate types"
Me: "Uhhh"
Gf: "You are always bitching about how awful date/time types are, with timezones, leap seconds and daylight savings"
Me: Face turns pale, thousand yard stare, vietnam-flashback to when I was writing a calendar scheduling/meeting/matching tool which used 3 databases, with timestamps in different formats, and web frontends for people in offices around the world.
Me, with a soft broken voice: "So?"
Gf: "You've been working on that palette tool this week, and you keep talking about how interesting all these colorspaces, white balances and conversion formulas are"
Me: 🤔4 -
This is in one of the big 5 (not specifying which for some anonymity)
I apply for an internship.
I get an interview.
I pass the interview and get the internship.
I do great in the internship. Get an exceeds expectations.
I apply for conversion.
I ace the two interviews.
I am told that the hiring committee gave me a yes.
I enter host matching (ie to find a team to join).
...
And that's it. I never get matched (I only met 1 team that had UI focus and I had previously asked to not be put on a UI team so the TL rejected me). 1 year later I'm told sorry the offer is no longer valid.
The annoying bit is that I decided not to apply to grad school and refused all other offers under the assumption that it was a guaranteed spot.1 -
Boss insisted that verification link needs to be clicked from same IP address as account registration. Many arguments later, decision is final, we will ignore the numerous ways that this will be a burden to our users.
*Code code, test test, deploy*
We're getting a lot of traffic, we need this bitch to scale! *auto-scale and load balance all the things*
Account creation begins breaking at random, some people receiving the "Your IP address doesn't match" error. Look at login history table, what the shit... All recent logins coming from internal IP addressohfuckmylife need to look at X-Forwarded-For header for actual IP behind load balancer.
IP address matching feature stays. I am sad, drink away sadness.4 -
So for everyone looking for a job, that keeps getting rejection or crickets I'll give you the following tip.
Most of the first level screen of resumes are done by automated machines that are basically just doing keyword matching. So if you want your resume to get through more of these automated scanners, what you do is create a second page on your resume and cram it with every keyword, and buzzword you can thinking of, like "10 years react experience." "20 years java architect", "AR/VR 5 years", "15 years mobile", etc ,etc.
Then select the text and change it to white. No human being will see it, but the automated scanners will and rocket you to the top of the list.
Your welcome. Now help me get my penguin!6 -
Client: I need a Website, You have "complete freedom" to choose an apt design, it should be professional and creative.
Designer: Ok.
~ Makes a top-notch Demo inspired from Apple Website ~
Client: It is not professional at all, you should use yellow color for header background. Matching the yellow in the logo, text should be in red. Use blue borders. "Make it more professional!"
Designer: Ok.
~ Client is King. Does exactly as client said ~
Client: Change the font of the website, use something like this (shows Monotype Corsiva). Reduce the image sizes to stamp size. Give a zoom effect to the headings. Increase the text font size to 16px.
Designer: Ok.
~ Client is King. Does exactly as client said ~
Client: Now it looks more professional!! You should hire me to your design department! And now, as I did the major design part you are only eligible for half the payment......
Designer: <<< what will you say? comment it below.. >>>10 -
Java:
Primitive streams. Their need to exist is a monument to legacy failure.
VB.net
OrElse and AndAlso short-circuiting operators. The language designers were too fucking lazy to process logic, so they give specific keywords for those cases.
PHP
Random Hebrew error messages
JS
Eval. It can be used responsibly, but most of the times you see it it's because someone fucked up.
C#
Lack of Tuple destructuring in argument specification. Tuples were added, and pattern matching was added, and it's been getting better. The gear grinding starts with how Tuple identity assignment in arguments is handled. Rather than destructuring into the current scope, it coalesces the identity specification into a dot property of whatever the argument name is. This seems like an afterthought given they have ootb support for ignore characters.
Typescript
This will probably be remedied in the next version or two, but Tuple identity forwarding between anonymous scopes normalizes to arrays of union types, because tuples compile to typeless arrays. It's irritating because you end up having to restate the type metadata in functional series even when there is no possibility for any other code branch to have occurred.12 -
just ended up googling "how to fucking install bullshit ms sql 2014 local db on fucking win 7 workstation" - was quite surprised about the amount of (more or less) matching results1
-
Apple you drove of delusional suckers! When will your retarded fashion devices finally support WEBP?!
A gallery page with images, and thanks to WEBP, it's 408 kB. Because Google made WEBP and handed out a well documented CLI FOSS compression tool that even can convert the source PNGs to lossy WEBP with bloody transparency. Well done, Google!
Except that Apple's shitty management can't take it that Google actually made something nice, so no WEBP. Instead, JPEG-2000 that enjoys nearly no fucking tool support. The free tools that even can deal with that mostly don't support transparency, and the encoder sucks donkeys so that JPEG still fucks JPEG-2000 big time.
So it's JPEG with matching background for iOS. Fine, but since JPEG's blocky artifacts are much more visible, the compression can't be that high, and it's 769 kB. That's 88% more image data for Shittari than for non-retarded browsers and even Edge! EDGE!!
Oh and if the user changes light/dark system mode according to surrounding light conditions, guess what happens? Yep, since JPEG doesn't support transparency, now it's different JPEGs with dark background via the media query in the "picture" element, and it's another 754 kB download. Bloody 1523 kB instead of 408 kB, that's a factor of 3.7!
Fuck your ass Crapple, with an electric eel!18 -
Greetings from Denmark! Thought I would join after a lot of lurking, and tell a little story, as to how I fucked up when I started in my company.
I've been there around 10 days and had never used git besides just add, commit, and push. I was told to work in feature branches, and I did, I was playing around trying to learn, and got some merge conflicts, made a lot of unnecessary commits etc. I was told to clean it up before I merged into dev. And as I didn't know git I asked how I could do that. I was told I could force push in my branch, and that it was okay as long as it was only inside my branch. I tried that and saw my command line force pushing to all branches including dev, and master. My heart skipped a couple of beats, and I went directly to my Lead developer and asked what happend. He got a bit mad at me for pushing in dev and master, and override all the commits there had been made. I tried to explain I didn't he did not really believe me, I was so nervous. Luckily everything came back to normal with people's local branches being pushed etc. But that day I learned about git's push matching config, and my lead was luckily only mad in the heat of the moment and even apologized for getting mad. Just one of my little fuck up's in my short time as a developer7 -
Windows 10 as a development environment... Oh freakin' goody.
📍Multi-montor is finicky
📍Text scaling is still horribly broken
📍It takes longer to resume from standby than my old laptop takes to boot up from a cold start
📍Color matching LCD monitors is pants-on-head retarded
📍32GB of RAM isn't going to be enough...
This is going to be a long summer in corporate land.19 -
Oh dear, a scaling problem I solved was replacing some Regex matching with simpler string functions. While I'm a huge fan of Regex, it's unreal how much performance they can suck out of some high-n loops...
I got about 120x out of some critical code thus making a CPU upgrade unnecessary.7 -
Decided to throw pi-hole in a bin and found enough resources to throw together my own dns filter in node, which if not on the blacklist - proxies the request to an actual dns, which allows to filter given just a word too (because it's regex matching), "came up" with the idea after @Linuxxx wanted to make (or made?) some big hosts file via php matching and blocking to block anything that e.g. contains "google".
By resources I totally mean I would have ate shit, if it wasn't for: https://peteris.rocks/blog/... as most docs are absolute garbage regarding node-dns
54 -
C# FTW! New features for C#7.0:
blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
tuples, pattern matching, local functions *coder-gasm*6 -
During a health and safety course today I was asked to talk about the workspace ergonomics. Part of that course is to make sure everyone knows how to customise their seat, screen, keyboard, etc., so I told everyone to unfold those little feet on the bottom of their keyboards and everyone did... Everyone but a cheeky little customer service girl who was more interested in taking selfies of her skirt coincidentally matching the carpet. I cleared my throat and said again:
- "Please, unfold your keyboard's feet."
Nothing. Coughed. Nothing. Finally, quite annoyed, I repeated myself for the 3rd time:
- "Unfold the feet, please!"
She jumped. Eyes wide. Noticed everyone staring. And very very slowly, with a look of complete puzzlement, she spread her legs.7 -
Crazy code.
You know when you come across some code, where you think: “I kinda see what you were going for, but it’s still hella dumb though...” right?
Currently doing some work on an F# backend, and the dev clearly knew enough of the language, but their code makes me question a lot.
The problem is simple: use a third party tool to generate images of each page in a pdf.
Said tool supports:
1. Querying the number of pages
2. Getting all pages as separate images in a single invocation
Can you guess how the dev solved it?
They’ve recursively incremented a page number, called the external tool to grab the image of that page.
“But how does it know when it’s run out of pages?” I hear you ask.
Simple. Catch the inevitable exception, and check against a hardcoded string literal to see whether it says “must be before the end of the document”.
I shit you not.
I nearly had an actual seizure when I was debugging some semi-related code and ended up in this wonderland of fuckery.
The recursion and pattern matching was flawless though, yet the tool’s website clearly states the supported functionality.
The whole thing feels like they tried to do it the right way, but couldn’t be bothered / couldn’t get it right, so they ended up creating this insane bit of madness.5 -
Wow i must have been brain dead when i wrote this code. Needed to exclude certain elements from response for the the list of objects.
for (obj : objects) {
If (obj.skipFromResponse()) {
break
}
add obj to response
}
I used break instead of continue at the if condition which meant it would break out of the loop at the first instance of condition being met.
This went through qa and has been in production for 4 weeks so how did this not break before. Well little did i know the list of objects was sorted and all the test data, qa data and everything so far in production coincidentally only had the last element with matching condition. This meant it returned everything correctly so far.
Today was the first time there was a situation where this caused incorrect output. Luckily as soon as I heard the description of the issue I remembered to check the merged PR and hung my head in shame for making such trivial error. I must have written way more complicated code without any problem but this made me embarrassed to even admit. 🤦♂️4 -
* A job application followup email I received:
Hi [programmerName],
Thank you for your interest in joining [companyName].
While we appreciate your application, we decided to move forward with other candidates whose skills and experience are a closer match to our requirements for this specific role.
Feel free to check back, as we are always adding new positions.
Best of luck with your career search!
-The [companyName] Team
* My (probably trashed) reply:
Hello
I personally ignore this precompiled stuff you HR people send.
I feel this answer will be probably trashed somewhere but I feel the need to write this.
You know absolutely nothing about my skills because you didn’t even talk with me.
Maybe I am not the best person in writing a resume or an introduction letter, the key skill appreciated in companies doing head hunting instead of building a solid corporate culture and cultivating talent. Or at least HR people in such companies.
Please consider that, maybe you didn’t like my resume or I didn't write a list of words matching your check list, but at least I honestly wrote my experience instead of trying to hack my way to a job interview writing a fake one that triggers usual HR patterns.
Consider that I do a job for a living and I don't live or have the time to make the perfect resume, I don’t even apply for all companies I see, I only apply for the ones I believe I can work well because I like them. I am not a professional job searcher, jumping from a company to another.
You keep posting this very same add since October 2019 and probably even earlier.
This sounds to me like:
- or your selection process does not work well and you end up hiring the wrong people
- or maybe your work place is not that good as you describe it, so that you have zero retainment despite your high salary.
But I cannot be sure because, guess what, I could not check personally.
If you want to talk about my skills and compare me to other people please test me otherwise don’t write (copy/paste) this offensive trash.
Best of luck with your career as a HR person in a tech company!
-A person tired of HR managers that do not give a f**k about the word “human” in their job description.13 -
PHP arrays.
The built-in array is also an hashmap. Actually, it's always a hashmap, but you can append to it without specifying indexes and PHP will use consecutive integers. Its performance characteristics? Who knows. Oh, and only strings, ints and null are valid keys.
What's the iteration order for arrays if you use them as hashmaps (string keys)? Well, they have their internal order. So it's actually an ordered hashmap that's being called an array. And you can produce an array which has only integer keys starting with 0, but with non-sequential internal (iteration) order.
This array weirdness has some non-trivial implications. `json_encode` (serializes argument to JSON) assumes an array corresponds to a JSON array if its keys are consecutive integers in increasing order starting with 0, otherwise the array becomes a JSON object. `array_filter` (filters arrays/hashmaps using callback predicate) preserves keys, so it will punch holes in the int key sequence if non-last items are removed, thus turning arrays into hashmaps and changing your JSON structure if you forget to discard keys before serialization.
You may wonder how JSON deserialization works, then? There's a special class for deserialized JSON objects, `stdClass`. It's basically a hashmap too, but it's an object, not an array, and all functions that would normally accept arrays won't work with it. So basically its only use is JSON (de)serialization. You can even cast arrays to objects, producing `stdClass`.
Bonus PHP trivia:
Many functions return nonsensical values. `preg_match`, the regex matching function, returns 1 for success, 0 for no matches and false for malformed regular expression. PHP supports exceptions, so it could just throw one on errors. It would even make more sense to return true, false and null for these three cases. But no, 1, 0 and false. And actual matches are returned by output arg.
`array_walk_recursive`, a function supposed to recursively apply callback to each element of an array. That's what docs say. It actually applies it to leafs only. It will also silently accept object instead of array and "walk" it, but without recursing into deeper objects.
Runtime type enforcing is supported for function arguments and returned values. You can use scalar types, classes, array, null and a few special keywords. There's also a `mixed` keyword, which is used in docs and means "anything". It's syntactically valid, the parser will accept it, but it matches no values in runtime. Calling such function will always cause a runtime error.
Strings can be indexed with negative integers. Arrays can't.
ReflectionClass::newInstanceWithoutConstructor: "Creates a new class instance without invoking the constructor". This one needs no commentary.
`array_map` is pretty self-explanatory if you call it with a callback and an array. Or if you provide more arrays of equal length via varargs, callback will be called with more arguments, one from each array. Makes sense so far. Now, you can also call `array_map` with null instead of callback. In that case it treats provided arrays as rows of a matrix and returns that matrix, transposed.5 -
This is a request from all devs out there:
Please, If you plan to use a word play in naming your next product, please make it a little specific.
*googling "Brackets + [issue with some programming language]"
Just imagine how would I find what I want in a pile of crap about matching brackets.5 -
* Ctrl+Shift+F to find all "assert" in solution...
Matching lines: 0 Matching files: 0 Total files searched: 1504
* Bang head on table
* Flip Table
* Start writing unit tests -
I think I'm gonna put a list of my demands on my LinkedIn similar to job requirements we get but that any recruiter /company that wants to even talk to me must be willing to meet.
Good idea or bad idea? IMO seems to be a waste of both our times if we don't even stand a chance of matching9 -
Today on "How the Fuck is Python a Real Language?": Lambda functions and other dumb Python syntax.
Lambda functions are generally passed as callbacks, e.g. "myFunc(a, b, lambda c, d: c + d)". Note that the comma between c and d is somehow on a completely different level than the comma between a and b, even though they're both within the same brackets, because instead of using something like, say, universally agreed-upon grouping symbols to visually group the lambda function arguments together, Python groups them using a reserved keyword on one end, and two little dots on the other end. Like yeah, that's easy to notice among 10 other variable and argument names. But Python couldn't really do any better, because "myFunc(a, b, (c, d): c + d)" would be even less readable and prone to typos given how fucked up Python's use of brackets already is.
And while I'm on the topic of dumb Python syntax, let's look at the switch, um, match statements. For a long time, people behind Python argued that a bunch of elif statements with the same fucking conditions (e.g. x == 1, x == 2, x == 3, ...) are more readable than a standard switch statement, but then in Python 3.10 (released only 1 year ago), they finally came to their senses and added match and case keywords to implement pattern matching. Except they managed to fuck up yet again; instead of a normal "default:" statement, the default statement is denoted by "case _:". Because somehow, everywhere else in the code _ behaves as a normal variable name, but in match statement it instead means "ignore the value in this place". For example, "match myVar:" and "case [first, *rest]:" will behave exactly like "[first, *rest] = myVar" as long as myVar is a list with one or more elements, but "case [_, *rest]:" won't assign the first element from the list to anything, even though "[_, *rest] = myVar" will assign it to _. Because fuck consistency, that's why.
And why the fuck is there no fallthrough? Wouldn't it make perfect sense to write
case ('rgb', r, g, b):
case ('argb', _, r, g, b):
case ('rgba', r, g, b, _):
case ('bgr', b, g, r):
case ('abgr', _, b, g, r):
case ('bgra', b, g, r, _):
and then, you know, handle r, g, and b values in the same fucking block of code? Pretty sure that would be more readable than having to write "handeRGB(r, g, b)" 6 fucking times depending on the input format. Oh, and never mind that Python already has a "break" keyword.
Speaking of the "break" keyword, if you try to use it outside of a loop, you get an error "'break' outside loop". However, there's also the "continue" keyword, and if you try to use it outside of a loop, you get an error "'continue' not properly in loop". Why the fuck are there two completely different error messages for that? Does it mean there exists some weird improper syntax to use "continue" inside of a loop? Or is it just another inconsistent Python bullshit where until Python 3.8 you couldn't use "continue" inside the "finally:" block (but you could always use "break", even though it does essentially the same thing, just branching to a different point).17 -
Every language ever:
"You can't compare objects of type A and B"
Swift, on the other hand:
"main.swift:365:34: note: overloads for '==' exist with these partially matching parameter lists: (Any.Type?, Any.Type?), ((), ()), (Bool, B ool), (Character, Character), (Character.UnicodeScalarView.Index, Character.UnicodeScalarView.Index), (CodingUserInfoKey, CodingUserInfoKey ), (OpaquePointer, OpaquePointer), (AnyHashable, AnyHashable), (UInt8, UInt8), (Int8, Int8), (UInt16, UInt16), (Int16, Int16), (UInt32, UIn t32), (Int32, Int32), (UInt64, UInt64), (Int64, Int64), (UInt, UInt), (Int, Int), (AnyKeyPath, AnyKeyPath), (Unicode.Scalar, Unicode.Scalar ), (ObjectIdentifier, ObjectIdentifier), (String, String), (String.Index, String.Index), (UnsafeMutableRawPointer, UnsafeMutableRawPointer) , (UnsafeRawPointer, UnsafeRawPointer), (UnicodeDecodingResult, UnicodeDecodingResult), (_SwiftNSOperatingSystemVersion, _SwiftNSOperatingS ystemVersion), (AnyIndex, AnyIndex), (AffineTransform, AffineTransform), (Calendar, Calendar), (CharacterSet, CharacterSet), (Data, Data), (Date, Date), (DateComponents, DateComponents), (DateInterval, DateInterval), (Decimal, Decimal), (IndexPath, IndexPath), (IndexSet.Index, IndexSet.Index), (IndexSet.RangeView, IndexSet.RangeView), (IndexSet, IndexSet), (Locale, Locale), (Notification, Notification), (NSRange,
NSRange), (String.Encoding, String.Encoding), (PersonNameComponents, PersonNameComponents), (TimeZone, TimeZone), (URL, URL), (URLComponent s, URLComponents), (URLQueryItem, URLQueryItem), (URLRequest, URLRequest), (UUID, UUID), (DarwinBoolean, DarwinBoolean), (DispatchQoS, Disp atchQoS), (DispatchTime, DispatchTime), (DispatchWallTime, DispatchWallTime), (DispatchTimeInterval, DispatchTimeInterval), (Selector, Sele ctor), (NSObject, NSObject), (CGAffineTransform, CGAffineTransform), (CGPoint, CGPoint), (CGSize, CGSize), (CGVector, CGVector), (CGRect, C GRect), ((A, B), (A, B)), ((A, B, C), (A, B, C)), ((A, B, C, D), (A, B, C, D)), ((A, B, C, D, E), (A, B, C, D, E)), ((A, B, C, D, E, F), (A , B, C, D, E, F)), (ContiguousArray<Element>, ContiguousArray<Element>), (ArraySlice<Element>, ArraySlice<Element>), (Array<Element>, Array <Element>), (AutoreleasingUnsafeMutablePointer<Pointee>, AutoreleasingUnsafeMutablePointer<Pointee>), (ClosedRangeIndex<Bound>, ClosedRange Index<Bound>), (LazyDropWhileIndex<Base>, LazyDropWhileIndex<Base>), (EmptyCollection<Element>, EmptyCollection<Element>), (FlattenCollecti onIndex<BaseElements>, FlattenCollectionIndex<BaseElements>), (FlattenBidirectionalCollectionIndex<BaseElements>, FlattenBidirectionalColle ctionIndex<BaseElements>), (Set<Element>, Set<Element>), (Dictionary<Key, Value>.Keys, Dictionary<Key, Value>.Keys), ([Key : Value], [Key : Value]), (Set<Element>.Index, Set<Element>.Index), (Dictionary<Key, Value>.Index, Dictionary<Key, Value>.Index), (ManagedBufferPointer<Hea der, Element>, ManagedBufferPointer<Header, Element>), (Wrapped?, Wrapped?), (Wrapped?, _OptionalNilComparisonType), (_OptionalNilCompariso nType, Wrapped?), (LazyPrefixWhileIndex<Base>, LazyPrefixWhileIndex<Base>), (Range<Bound>, Range<Bound>), (CountableRange<Bound>, Countable Range<Bound>), (ClosedRange<Bound>, ClosedRange<Bound>), (CountableClosedRange<Bound>, CountableClosedRange<Bound>), (ReversedIndex<Base>, ReversedIndex<Base>), (_UIntBuffer<Storage, Element>.Index, _UIntBuffer<Storage, Element>.Index), (UnsafeMutablePointer<Pointee>, UnsafeMut ablePointer<Pointee>), (UnsafePointer<Pointee>, UnsafePointer<Pointee>), (_ValidUTF8Buffer<Storage>.Index, _ValidUTF8Buffer<Storage>.Index) , (Self, Other), (Self, R), (Measurement<LeftHandSideType>, Measurement<RightHandSideType>)"17 -
Debugging a request that got lost in a myriad of containers of a scaled application....
It wouldn't be worth a rant if there wasn't some kinky SM stuff in it, wouldn't it?
Regexes. The fucker who wrote a lot of the NGINX (🤢) configuration decided to use the Perl Regexes with named group matching. A lot.
So now I have to fight wild variables supposedly coming from nowhere (as they stem from the named groups)… fucking single location redirects instead of maps.... A d have to write an explanatory documentation while going down the rabbit hole of trying to find out where the fuck that shitty frigging bastard redirected wrong.
I really wish I could eradicate the person who wrote this shit.... -
Superpower to instantly create variable names every time I need to declare a new variable based on the perfect matching with the code being written..
-
Fun fact: Did you know this is the RFC822 compliant regex for matching email adresses? http://ex-parrot.com/~pdw/...6
-
Client comes to me.
Client: So my business is colour matching, people visit me and I help match outfits they should wear that works with their hair and eye colour etc.
Me: Ok... and?
Client: Well. I'd like to do this online, someone sends a photo in and I assess it and send them a colour palette back.
Me: Right... How are you going to calibrate this?
Client: What do you mean?
Me: Well, it's a nigh on impossible task to ensure the exact tones and hues they send you in their photo to what you see, and likewise what you send back might look very different based on their brightness and contrast. Colour science is actually quite hard.
Client: But I don't understand they just send a picture right?
Me: Yeah, they can send one, but are you going to have a consistent baseline for your laptop, can you guarantee the brightness is at the same level each and every time?
Client: No... Why would that matter?
Me: I'm bored now, I'm not gonna take this project. -
Two years and a lot of money my company has been building a peice of software for a client, I spent the day yesterday talking and watching the client, our software doesn't even come close to matching their requirements. It barely matches the brief my boss wrote and *never showed me*.
The following isn't necessarily a lesson I've learnt, but rather solidified it very much: FOLLOW THE SODDING BRIEF AND ACTUALLY LISTEN TO THE CLIENTS.
Also don't hire low paid devs just because they're cheap because they WILL produce shocking, unmaintiable and unchangeable code.
I honestly think starting this again will be much faster.2 -
Ideas for a strong password:
- a regex matching my laptop's LAN IP address
- a sed command to enable X11 forwarding in sshd_config
- a shell oneliner extracting all the IP addresses from ifconfig / ip a sh
- an awk command to print processes in D state
-
Chip in!14 -
Im gonna turn this topic on its head a little and mention the MOST NECESSARY feature that was never implemented in one of my projects.
It was an iOS client for a medical records system. Since it contained actual confidential medical information, some patient records could be “restricted”. Thos meant if you tried to open them you would be prompted for a reason, and this would be audited.
We already had 2 different iOS apps with this feature in place matching the web app. But for some reason with the 3rd app they just decided not to bother. I discovered that it was because the PO in charge of that project didnt consider it important enough for the demo. So we have one app where you can just bypass the whole auditing process and open restricted patient records freely.3 -
People don't seem to know how to properly do print-debugging, so here's a simple guide:
1. A log of "aaaaaa" or "got here" isn't as helpful as you think when ALL OF THEM ARE THE FUCKING SAME. You put a descriptive label or copy verbatim the conditional statement. This saves time matching statements, allows one to watch multiple branches at once, and allows others to understand and help faster when dragged in to help.
2. When trying to see where code fucks up, before each line, paste said line into a proper print statement for your language. If there's, say, a function call or some shit, have it output something like "functionCall(varA=<varA contents>,varB=<varB contents);" Most normal lines should be like this too, but it's especially helpful for calls and comparisons.
If need be, add return values after if they're not shown in another print statement later.
This allows for a trail of execution AND the line that fucks up will be the last in the log, making finding it easier when dealing with hangs and such.
3. Putting something unique like "DEBUG: " or something in front of all statements ensures you can just search for them to ensure you're not rolling one out to production. It also separates debug output from normal output at a glance, making digging through logs faster.16 -
When I wrote my first algorithm that learns...
So in order to on board our customers onto our software we have to link the product on their data base to the products on ours. This seems easy enough but when you actually start looking at their data you find it's a fuck up of duplication's, bad naming conventions and only 10% or so have distinct identifiers like a suppler code,model no or barcode. After a week or 2 they find they can't do it and ask for our help and we take over. On average it took 2 of our staff 1-2 weeks to complete the task manually searching one record of theirs against our db at a time. This was a big problem since we only had enough resources to on board 2-4 customers a month meaning slow growth.
I realized when looking at different customers databases that although the data was badly captured - it was consistently badly captured similar to how crap file names will usually contain the letters 'asd' because its typed with the left hand.
I then wrote an algorithm that fuzzy matched against our data and the past matches of other customers data creating a ranking algorithm similar to google page search. After auto matching the majority of results the top 10 ranked search results for each product on their db is shown to a human 1 at a time and they either click the the correct result or select "no match" and repeat until it is done at which point the algo will include the captured data in ranking future results.
It now takes a single staff member 1-2 hours to fully on board a customer with 10-15k products and will continue to get faster and adapt to changes in language and naming conventions. Making it learn wasn't really my intention at the time and more a side effect of what I was trying to achieve. Completely blew my mind. -
I have an interview today, my socks are actually matching today, so im off to a good start I suppose. XP5
-
The tons of undefined behaviour in C that ought to have been implementation defined instead, and increasingly sadistic compiler writers on the other side.
Like signed integer overflow that should just do what the underlying machine does, i.e. in practice, wrap around two's complement.
But the wierdest UB is when a C source code line has a non-matching ' or ". WTF, this should have been a compile time error!2 -
It is increasingly difficult to believe that Google CAPTCHAs are not deliberately made unsolvable.
Everyone hates CAPTCHA, that is nothing new. As most people know, CAPTCHA frequently whines "please try again" after the user provides the correct answer. Sometimes it shows "Please select all matching images." when no new images with the named subject exist. However, now Google is taking it to a new level.
After clicking, the pictures take five seconds to fade to white and the new pictures take another five seconds to fade in. And CAPTCHA challenges have an expiry duration of two minutes. This causes CAPTCHAs to expire before it is possible to solve them.
Does Google think I am not a human because I don't have the time to waste whack-a-moling random StreetView pictures?
I have a feeling that Google is laughing at us for wasting efforts solving CAPTCHAs that are not meant to be solved.17 -
There should be an open source, Linux based Printer operating system. Like OpenWRT for routers, also works with almost every device in the wild.
This would be such a relief for everyone. Come on, most printer firmwares are crap.
Remember Scannergate? Yep, the one about professional xerox scanners changing numbers in scanned document. Went unnoticed for 8 years and affected almost every workcenter even in the highest compression setting. Just because they wanted to save a few bytes by using pattern matching. -
"Your documentation doesn't specify what should be returned if there is no item matching the id, so currently I'm just gonna have it throw a 504"
Why on earth would you? What's wrong with you, you sick bastard?5 -
Being told code is "production ready" only to find this:
if name == 'foo' or name == 'bar' or name == 'someothershit'
What's wrong with:
if name in ['foo','bar', 'someothershit']?
Oh and they had 10 different values they were matching, not just 3. What kind of joker am I dealing with?
1 -
I know I haven't been responding to a lot of you lately. I've been busy helping neighbors and my community, doing MAAAAAATH, working on my car, and moving a shit ton of scrap and lumber.
I've been thinking about getting a motorcycle. Fuck, maybe I'm experiencing a midlife crisis, but early.
Been busy doing some design work as well for the game, and arrived at something that I'm satisfied with enough that I might demo it.
I'm also looking for a job, and I think I might give up programming as a career path and persue welding or trucking or something considering theres basically zero opportunities for it unless you went to college.
It's good to have hobbys anyway. And who wants to turn their hobby into a job right?
Anyway, thats whats been going on with me.
Completely unrelated, but heres a really fantastic introduction to the basics of type theory:
https://wscp.dev/posts/tech/...2 -
Always include import statements. Always. No excuses. I don't care if you can't be arsed to copy-n-paste an extra bit of code.
Nothing worse than trying to learn something new, copy-n-paste a sample code then your wonderfully helpful IDE asks you which of the 8 matching packages you wish to import.
When someone asks me, "where did you get that", I don't simply say, "a shop"!!
If you don't include your imports in answers then I hate you.5 -
Story about my old boss:
I was doing a lot of work in an area that had a data property and a method to build an object. I noticed a reset method that iterated all that objects properties, found the matching data from the data object, passed that data through some logic to format it and then assigned that value to the object property.
As part of my PR I removed that method, since data wasn't changing, and simply called the create method again with data.
The result of tidying the code base and putting it up for review before a merge? I get told I have no respect for my boss's code, that I am undermining him, that I need to be more considerate and respectful of other people's work and that I am no longer allowed to change any code he has written in the code base (half the code base) without talking to him about it first, before it goes up for review. Also if he is working on an area I cannot change anything - not even 1 character (he is working on the core of the app).
Every day there I was so confused :D5 -
Most successful project at work: NodeJS utility for storing loads of measurements from an application running on various other systems and providing fast ways of getting at that data. No DB, just CSV files broken into time periods. Also has a search function written in C that can very quickly find all user sessions matching the criteria. It's not perfect, but it does the job pretty well and I can tweak the storage engine as much as needed for our use case since its all custom written.
Outside of work: Incomplete right now but I soldered some wires onto an old sound card and managed to get an Arduino to configure it and play some notes on its FM synthesis chip. Still quite a newbie to electronics so this was quite an achievement for me personally. -
He he he!
Matching software version and vulnerabilities in NIST then exploiting it is not HACKING !
I wanna find new zero day vulnerabilities that no one ever noticed before!!5 -
I haven't touched algorithms for many months but needed to create a matching algorithm today.
It has to match using variations of the original key and output the keys that can't be matched.
The feeling in my head felt like I was turning rusty gears n sort of just stumbling through...
I used an N^2 approach but afterwards it just felt wrong... And it took me like an hour of hacking to do it....
Actually I just realized it's an N approach! because all possible matches would be hit by iterating from one of the lists of possible names!
I suddenly feel so proud of my subsconcious...
But still something doesn't feel right...1 -
!rant
...i realized i can actually pattern-match like this (as in, sequence of elements (including "whatever") instead of just head::rest in F#...
...from watching a talk about prolog.
like "wait... prolog can do this when pattern-matching? that seems very useful. i think i tried to do that in F# but it didn't work, which seems stupid... I'm gonna go try it again".
and sure enough =D
i think i really am gonna like F# if i find the time and resolve to break through how its different mode of thinking stretches my brain in ways it hasn't been stretched for a long time =D
6 -
Spending half the day wondering why the longest javascript calculation in existence is not matching client supplied excel by 0.22 percent.. Realised one number was parseInt'd instead of parseFloat'd... FML
-
How it started:
Need to replace in a lot of SQL files certain stuff...
find . -type f -iname '*.sql' -exec sed -i 's|new|old|g' {} \;
12 hours later that find executed a shell script containing roughly 120 lines of text pipelining.
The jolly of inconsistent workflows.
Different SQL format stylings... Makes fun when single line string replace needs to be extended to multiline RegEx handling. Or matching SQL comment configuration..
Different line endings. MacOS, Windows, Unix, Bukkake.
Different charsets / collations. Anyone wants latin1_swedish_ci... utf8... utf16... :/
Realizing some people even left sensitive data inside the SQL files (e.g. API Tokens..... Yayyyyyyy).
...
Ugh. It's never a one liner. It's never easy. -.-
I hate cleaning up messy shit.2 -
When you're developing it's very well advised to run your software locally in an environment as much as possible matching the real environment.
So for example, if you're running linux on production then you also run it locally to run your code.
Here's where people need to shut the fuck up:
No, mac is not good for linux development. Not unless portability is already a concern that you have and even then it might be counter productive. So many times when people say this, portability isn't not a concern. What runs on servers is up to them.
If your servers are going to be centos, then you develop with centos. Not with debian, gentoo, ubuntu, maxosx, etc.
Even different linux distros are a headache for portability when it's just to support a few desktops for development so don't think that macosx is going to cut it. It might not be as radical a difference as between windows and linux traditionally is but it's still not good for "linux" development. I don't think people making that statement really know what linux is now how different distributions work.
What you use for your graphical operating system doesn't matter to much but when you run your code then there's a simple solution.
Another thing people need to shut up about. It's not docker, unless you're already in Linux where docker is one of many options such as chroot or lxc.
This question always comes up, how do you developer for linux in windows? No it's not docker it's virtual machine.
It's that simple. You download the ISO for the distro you want and then install it on a VM. What does docker for windows do? It runs a linux VM that runs docker.
This may come as a great shock to developers around the world but it is possible to run linux in a VM and then any linux application your want including docker.
Another option is to shove a box in the corner, install what you need on it, share the file system and have people use that to run their code. It really is that easy.5 -
well, that escalated quickly...
today a coworker was asked if he could write a query to find customers which placed orders matching some criterias. so far so good. he write the query and put the result into a spreadsheet and gave it to the lead.
"i need it in another format" (he did not specify any format before nor did he tell which columns he is interested in). 2 hours later the query was finished.
then, the coworker got a call from the leader. he wants to see us both in his office.
"okay, we need to write a personalized mail to every customer with the orders in a spreadsheet as an attatchment. we also need this on paper as not everyone reads our mail. we want to send letters. the whole process needs to be finished in half a day and we want it automated. i do not want to have one of the sales department waste 2 hours writing stuff himself".
well, you can imagine my thoughts on that.
the personalized text is not finished. we wasted another 3 hours thinking about how to solve this crap.
luckily i have some projects from the past which can do this shit with some changes... but what the fucking hell was this?7 -
Can we all just agree to stop actively imagining progressively harder to parse CSV formatting options? For fucks sake I’ve had to build in tolerance for quoted and unquoted data, combined data and split data, ways to split the data and recombine it, compare every data point, filter some data, only add data, only remove data, base data updates on non Boolean fields in the file, set end point matching based on arbitrary fields, column number matching, header matching, manipulate malformed urls and reassemble the file with proper ones, it goes the fuck on. CSV’s should just be simple and not hard to format. Why does everyone want to try so fucking hard to do bizarro shit?!
-
contemplating making this really simple regex stop matching dates after year 2999 just cause I think it might be funny and ruin someone's day for a few minutes long after I'm dead.11
-
A friend is currently building a 'dating and matching' open source app for developers. Let's say Tinder for developers.
Don't know how it works but I think it'll make sense.7 -
This is the worst possible thing that can happen, when you setup a new computer.
I live for about a decade on ubuntu. I got an invite for a LAN where games are being played that I cannot run with wine or are not ported to linux.
Fine I get an old harddrive and setup a fresh Windows 7. I have a little update script that takes care of updating and restarting.
BUT I CAN NOT DO ANY UPDATES.
As you can see in the picture the original Windows 7 installation disc that was part of my computer did not carry the matching NIC drivers.
A friend of mine gave me a spare WiFi dongle. That did not bring its drivers on the USB dongle but on disc that he lost.
WHY?! HOW?! This is not plug and play. This is a part that SHOULD be plug and play.
After I got an other WiFi dongle that was plug and play, I could finally download the right drivers.
Why can the Windows 7 disc that was part of the computer setup not contain the right drivers, but a ubuntu 12.04 live disc can?!
ARGH
3 -
I'll try to pay back some smaller credit by one large credit...
Hence I need to contact the banks and get one (!) fucking frigging stupid piece of paper which lists the account number and the amount of money I need to pay back.
Sounds simple ...
Well.
One bank just answered my email request by sending me that piece of paper. Except they didn't have any validation of my identity.
Yes. They answered the request of 'I want to pay back the credit in full, can u send me the necessary documents?' (more formal of course) with confidential data without any more credibility than my email address.
YAY.
Another bank requests a telephone call for identity validation and sending back a signed form via postal service...
Another bank just needs a PDF sent via mail with an electric signature (yeah. They were aware of what that means - I was shocked and confused) or a "qualified signature matching previous documents" (translated from German).
The last one offers a WhatsApp number - send a GIF / JPG or video and we answer directly.
I need to reach a higher state than drunk.
It's not funny to know how confidential data gets mistreated by companies who should have the highest security.4 -
After nearly 30 years developing, I've seen plenty of irrelevant job emails, but this one shows I can still be surprised! I'm struggling to think what in my profile could even come close to matching me for this role.
2 -
shower thought (although not in the shower). Did we as an industry suck so bad at matching skills to companies that we created a whole market for assholes to make money as the middle man (recruiters)?1
-
Wasted a day as Shitlock Holmes with the build chain.
It would not reproduce the firmware hexfile that had been checked in. Reverse engineering that along with the mapfile to find out the cause, it was a const string that was guarded by an ifdef from another file that was auto-generated as prebuild step via a script that fetched some version control info.
Or, it would have been if the installation instructions had been correct and someone had described that no spaces in the absolute path name of the project are allowed. Otherwise, that shit just failed silently.
I then had to reverse engineer the intended workflow from the commit history in the version control to figure out that the last dev obviously hadn't quite understood the project specific workflow and how the version control interacts with these build scripts.
At least, I finally did get a matching hexfile.1 -
Interviewing with three companies. First one extended an offer. I'm expecting an offer from at least one, possibly both, of the others (On-site with Second was yesterday and expecting an offer tomorrow or Mon, phone tech interview (they also had a tech screen) with Three was today and I /rocked/ it, expecting an onsite invite for next week).
The problem with being a badass is that the choice paralysis is SO OVERWHELMING. All three have features that I like and how do I choose.
I think I'm being overly influenced by the weekly massage, onsite barista, free nice breakfast/lunch, and ideal location of Second (the domain is finance, they have $$$). Oh and fucking 25 vacation days and amazing 401k matching. I mean how would I say no to an offer? But what if the work is actually beyond me? But they have seriously cranked their benefits package up to 11.
First is an in house product with external clients. The domain I don't find super interesting, but it has amazing Glassdoor reviews, seems like a decent environment, and really seems like a place to progress and grow as a professional. It is also the lowest salary of the three (both others are through Hired, so I know what they are offering).
Third is a consultancy where I'd really get to keep my skills relevant. Seems mad fast paced, which is a bit intimidating, and I don't know how well I'd handle the context switching of being on multiple projects at a time.
I mean, all of this is counting my chickens before they hatch. But I have a really good feeling about my chsnces with Second, though I suppose I still have a chance to botch my onsite with Third.
Ahhhh. Dev Rant, how did you go about choosing between offers that can't be evaluated on a single axis?1 -
48 hours.
We had 3 weeks of "manual data collection": pencil, paper and a dozen of people around all the offices of the company with the task to collect serial numbers of every piece of equipment used.
Then we had 3 weeks of data entry, a dozen of people copying all handwritten data to a custom made VB form.
And then there was me, the guy that was in charge of verifying, zipping and sending the data to the client. I spent 48h non stop to go through everything, finding, fixing or delete unusable data.
I had to delete at least 25% of the data because incomplete or completely unusable (serial numbers too short or too long, for example).
48h in the office.
The data was then delivered to the customer. 2 days after, when I finally woke up, everyone was in panic because:
- serial numbers were not matching
- addresses were wrong
- the number of delivered records was smaller than expected
What did I learn from this experience?
When your deadline is tomorrow, and you need 4 weeks to complete your work, ignore the deadline and inform everyone at any level that you are ignoring the deadline. And then resign and find a better job.
Ah, yes, pencils and paper are powerful tools, but rat poison too. You just need to use them in the right place. The only data collection that can be trusted when done with a pencil is the one involving checkboxes.1 -
Shopping still keeps being an annoying task in the web age. The research for what i actually want is fine.
But it is a so damn timewasting and boring experience to sift through all that search results filtering out the non-results and overprized hippster shops first, then trying to find the best matching product on each remaining shop...
They all let you sort by price but not even one offers sorting by price per kilo and only a few offer some sort of product detail filter (which often omit relevant products because of insufficient tagging)...
The last part is rather easy though: compare properties of best matching offers and use the shop with the best offer.
P.S.:
I am fully aware of the fact, that part of the problem is my obsession in buying the correct thing combined with a cheapskate mentality.
So don't comment about just picking the first sorta-matching offer as that certainly would be way too easy (and cheaper because time is somehow money too).1 -
I've been working on an ERP system for several years and we had a module to record your presence time.
The code was absolute shit but at least the method names matched.
The method to record the end of your work was named "outhouseRecord".
One translation for outhouse seems to be a toilet outside. -
In the country where I live the national railway company just replaced their perfectly functional (old looking) site with a new one. It looks very nice until you start using it. Reloading the page logs you out. Adding a saved passenger before was filling two fields and ticking and save now you go to profile then select it using 15 clicks then save and then you can't pick it when buying tickets you must add it all again (used to work before). The list of trains matching your criteria used to be a fairly compresses table so you could see a lot of trains without scrolling also showed info on them. Now it only shows departure arrival and time. Also each table cell has 4x font size padding and is float right with around 20% of left side being taken by a menu. Information about the trains' journey is still shown but not in full detail. After you put the ticket in the cart it only shows you basic information and there is no full info before checkout. Also now you can't pick which seat you want yours next to.
So then what did they fix compared to the old? Now you can buy tickets for trains that are late like if that's gonna make everything easier... They also fixed that now you don't need two accounts if you want to use the mobile app (which by the way broke after the update in every possible way).
So the question is: why the fuck do we need so much eye candy if the product becomes unusable in the end? -
Do you prefer working remote or in the office?
I like to view these as equal choices. I don't think offices are as bad as some people make them up to be (of course heavily depends on the environment and company!). In opposed to working remote, offices can help you focus more on work and leave work problems "at work".
While, if you're working remote, it's not unlikely for work and personal life to become so intertwined that it's hard to tell them apart anymore. It's hard to not think about work at home if home is where you work.
I believe an ideal is somewhere inbetween - not entirely remote, but not entirely office focused either. Mixing and matching seems like the one approach where you get to have most of the benefits, but with the least negatives. It doesn't seem necessary to always be at the office but it also doesn't seem good for you to always be cooped up at home.7 -
Managed to derive an inverse to karatsuba's multiplication method, converting it into a factorization technique.
Offers a really elegant reason for why non-trivial semiprimes (square free products) are square free.
For a demonstration of karatsubas method, check out:
https://getpocket.com/explore/item/...
Now for the reverse, like I said something elegant emerges.
So we can start by taking the largest digit in our product. Lets say our product is 697.
We find all the digits that produce 6 when summed, along with their order.
thats (1,5), (5,1), (2,4), (4,2), and (3,3)
That means for one of our factors, its largest digit can ONLY be 1, 5, 2, 4, or 3.
Lets take karatsubas method at step f (in the link) and reverse it. Instead of subtracting, we're adding.
If we assume (3,3)
Then we take our middle digit of our product p, in this case the middle digit of 697. is 9, and we munge it with 3.
Then we add our remaining 3, and our remaining unit digit, to get 3+39+7 = 49.
Now, because karatsuba's method ONLY deals with multiplication in single digits, we only need to consider *at most* two digit products.
And interestingly, the only factors of 49 are 7.
49 is a square!
And the only sums that produce 7, are (2,5), (5,2), (3,4), and (4,3)
These would be the possible digits of the factors of 697 if we initially chose (3,3) as our starting point for calculating karatsubas inverse f step.
But you see, 25 can't be a factor of p=697, because 25 is a square, and ends in a 5, so its clearly not prime. 52 can't be either because it ends in 2, likewise 34 ending in 4.
Only 43 could be our possible factor of p.
And we *only* get one factor because our starting point has two of the same digit. Which would mean p would have to equal 43 (a prime) or 1. And because p DOESNT (it equals 697), we can therefore say (3,3) is the wrong starting point, as are ALL starting points that share only one digit, or end in a square.
Ergo we can say the products of non-squares, are specifically non-prime precisely because if they *were* prime, their only factors would HAVE to be themselves, and 1.
For an even BETTER explanation go try karatsuba's method with any prime as the first factor, and 1 as the second factor (just multiply the tens column by zero). And you can see why the inverse, where you might try a starting point that has two matching digits (like 3,3), would obviously fail, because the values it produces could only have two factors; some prime thats not our product, or the value one, which is also not our product.
It's elegant almost to the level of a tautology. -
The datepicker saga
Part one
So I begin work on a page where user add their details, project is late, taking ages on this page
Nearly done, just need a component to allow users to put in some date of births. Look for react components.
Avoiding that one because fuck Bootstrap.
Ah-ha, that looks good, let's give it a go.
CSS doesn't exist, oh need copy it over from npm dist. Great it applied but...
... WTF it's tiny. Thought it was a problem with my zoom. Nope found the issue in github.com and it's something to do with using REM rather than EM or something, okay someone provided a solution, rather I saw a couple of solutions, after some hacking around I got it working and pasted it in the right location and yes, it's a reasonable size now.
Only it's a bit crap because it only allows scrolling 1 month at a time. No good. Hunting through the docs reveals several options to add year and month drop downs and allow them to be scrolled. Still a bit shit as it only shows certain years, figure I'd set the start date position somewhere at the average.
Wait. The up button on the scroll doesn't even show, it's just a blank 5px button. Mouse scroll doesn't work
Fucking...
... Bailing on that.
Part 2
Okay sod it I'll just make my own three drop down select boxes, day, month and year. Easy.
At this point I take full responsibility and cannot blame any third party. And kids, take this as a lesson to plan out your code fully and make no assumptions on the simplicity of the problem.
For some reason (of which I regretted much) I decided to abstract things so much I made an array of three objects for each drop down. Containing the information to pretty much abstract away the field it was dealing with. This sort of meta programming really screwed with my head, I have lines like the following:
[...].map(optionGroup =>
optionGroup.options[
parseInt(
newState[optionGroup.momentId]
, 10)
]
)...
But I was in too deep and had to weave my way through this kind of abstract process like an intrepid explorer chopping through a rain forest with a butter knife.
So I am using React and Redux, decided it was overkill to use Redux to control each field. Only trouble is of course when the user clicks one of the fields, it doesn't make sense in redux to have one of the three fields selected. And I wanted to show the field title as the first option. So I went against good practice and used state to keep track of the fields before they are handed off to the parent/redux. What a nightmare that was.
Possibly the most challenging part was matching my indices with moment.js to get the UI working right, it was such a meta mess when it just shouldn't have taken so stupidly long.
But, I begin to see the light at the end of this tunnel, it's slowly coming together. And when it all clicks into place I sit back and actually quite enjoy my abysmal attempt at clean and easy to read code.
Part 3
Ran the generated timestamp through a converter and I get the day before, oh yeah that's great
Seems like it's dependant on the timezone??!
Nope. Deploying. Bye. I no longer care if daylight savings makes you a day younger.1 -
## Learning k8s
Okay, that's kind of obvious, I just have no idea why I didn't think of it..
I've made a cluster out of a rpi, a i7 PC and a dell xps lappy. Lappy is a master and the other two are worker nodes.
I've noticed that the rpi tends to hardly ever run any of my pods. It's only got 3 of them assigned and neither of them work. They all say: "Back-off restarting failed container" as a sole message in pod's description and the log only says 'standard_init_linux.go:211: exec user process caused "exec format error"' - also the only entry.
Tried running the same image locally on the XPS, via docker run -- works flawlessly (apart from being detached from the cluster of other instances).
Tried to redeploy k8s.yaml -- still raspberry keeps failing.
wtf...
And then it came to me. Wait.. You idiot.. Now ssh to that rpi and run that container manually. Et voila! "docker: no matching manifest for linux/arm/v7 in the manifest list entries."
IDK whether it's lack of sleep or what, but I have missed the obvious -- while docker IS cross-platform, it's not a VM and it does not change the instructions' set supported by the node's cpu. Effectively meaning that the dockerized app is not guaranteed to work on any platform there is!
Shit. I'll have to assemble my own image I guess. It sucks, since I'll have to use CentOS, which is oh-so-heavy compared to Alpine :( Since one of the dependencies does not run well there..
Shit.
Learning k8s is sometimes so frustrating :)2 -
When everyone on YouTube has interfaces that definitely do NOT appear to you :/
I was supposed to create my pixel, give it a cute lil name and then test events ( Facebook ).
But NOOO ofc I would get a ton of issues in the process, everyone is able to connect their pixels safely but it took Facebook more than what, 4 days now ? To kindly inform me that:
Server external ID not matching to pixel external ID
You're sending the external_ID parameter for your PageView event from your server, but you're not sending the external_ID parameter for this event from your pixel. If you send external_ID for an event from your server, you must send it from your pixel as well in order for that event to be valid.
How am I even supposed to know how to fix that ! I just started learning programming, the only thing I know how to do is use Linux and write a ciao mundo C program. Now my store was supposed to be launched a week ago and I am still looking for solutions to this. Ugh.7 -
Sometimes, I feel like tearing my hair out from the way Bash works.
Like... Where other languages have two operators for case-sensitive and insensitive regex matching, bash? It doesn't. It only matches case-sensitively.
And if one wants the insensitive matching? Gotta set a shell option... And if a script wouldn't change it back, who knows what else could break, so of course it has to save its initial state, change it, do its case-insensitive matching, and return it back to its original value.
10/10 experience.14 -
The creators of the Python language are giving some thought to a new proposition, PEP 622, that would finally bring a Pattern Matching statement structure to Python. PEP 622 proposes a method for matching an expression against various kinds of patterns using a match/case (simply like switch/case in C) language structure :
match some_expression:
case pattern_1:
...
case pattern_2:
...
It includes literals, names, constant values, mapping, a class or a mixture of the above.
Source : https://python.org/dev/peps/...6 -
Ugh! Anyone also finds it incredibly annoying that regex notations can change between programs? And I don't mean like PCRE vs jS, those are functional differences.
I mean like... In sed, I always spend trying out all possible combos of backspacing when dealing with special notations like quantifiers {}, sets [], match groups () and so on!
Why can't it be just so that backslash anything = character literal, and not the functional counterpart.
Or at least stick to either one of the options, not like sed, where matchgroup is \(\), quantifier \{\} but a set is just []
Also wish sed supported reluctant quantifier (*?), having to use negative character set matching makes it much less readable...3 -
!rant
...so I started learning F#... again, second attempt, first one failed like 3 years ago because I had no real usecase appropriate for the language, so I didn't get it.
...but now i'm trying to make my own language, meaning also (wanting) parser/interpreter/compiler, and I found a lecture where dude shows off THREE he wrote (within 24 hours) for three different languages...
...and it showed me that doing my parser/interpreter/compiler in F#, using pattern matching, is going to be incredibly awesome, as opposed to doing it as string parsing in C#...6 -
It's a shame that people don't want to use F# but prise C# for how cool it became and continue becoming. At the same time, little do they know that many of the features were simply drawn from F#.
It's just rediculous how far this OO and C-Style syntax crap has progressed. They keep copying things from functional langugages, making the initial language to be a monstrocity like C++ is now, insted of just using languages like C#. I mean, it was right there before C#: async/task, immutablility, records, indexes, lambdas, non-null by default, who the hell knows what else.
Besides, many people (in my company at least) are just blindly overengineering with patterns and shit, where a simple function would be just enogh.
Watch some some NDC talks about F#, in particular those of Scott Wlaschin. It's just better in so many ways: less noice (I'm looking at you, brackets, commas and semicolons), the whole LOT of type inference and less duplication (just look at the C# signatures of linq methods - it's difficult to read them), immutability by default, non-nullable by default, ADTs and pattern matching, some neat features like type providers (how many times have used "paste special" or an online tool to create C# classes from a JSON/XML file, and how many times have your regenrated it because of schema changes?) and units of measure.
Of course, in some cases it's not optimal, in some cases mutable datastructures of C# are better for performance. But dude, how many performance critical systems have you wrote in C#? I mean, if it comes to performance you should use Rust or C++ or C after all.
*sighs*14 -
counting things and columns matching.
Two easy and stupid things that make you loose it if you can't get it right4 -
"No matching provisioning profiles found: No provisioning profiles matching an applicable signing identity were found."
FUCK YOU APPLE!!!!! I've update it a thousand times mother fucker!!1 -
Out mowing lawns for cash today.
If anyone has a Bush that needs trimmed, I got you.
I also make landing strips for a living, and am a professional at matching drapes with carpets.5 -
Something managers need to understand:
Developers are not a bag of M&M's to pick from and arrange them on the customer's table, neither are they LittleBits or LEGO pieces to click together for the customer to play with.
We can't possibly satisfy every client skill need. We need time to learn, and not by fudging around with the tech in production or similar.1 -
My own little version of moore's law:
In 1986 the connectome (the brain) of c. elegans, a small worm, was mapped. It would take decades before the research caught up to the point where we had the hardware to simulate it.
In 2024, we have successfully mapped, and fully simulated (to matching observed behavioral data) the brain of a fruit fly, a total of 139,255 neurons and corresponding connections.
Thats a 38 year period.
If the period is roughly 40 years, and the leap in successful neurons mapped *and simulated* is by an average of 461 times the prior number of neurons, then by 2062-2064 we will be simulating box jellyfish, fruit flys, zebrafish, bees, ants, honey bees, cockroachs, coconut crabs, geckos, guppys, sand lizards, snakes, skinks, toirtoises, frogs, iguanas, shrews, bats, and even moles.
By the dozens or hundreds in any given simulation.
By the year 2100-2104 we'll be fully simulating the brains of mice, quill, crocodiles, birds such as doves, rats, zebra finchs,
guinea pigs, lemurs, ducks, ferrets, cockatiels, squirrels, mongoose, prairie dogs, rabbits, octopi, house cats, buzzards, parakeets, grey parrots, snowy owls, racoons, and even domestic pigs.
And in the years between 2100 to 2140, starting immediately with domestic dogs, we will ramp up and end with the capacity to simulate human brains in full, probably by the dozens or hundreds.
This assumes we can break the quantum barrier of course.17 -
Why the fuck...!
Wrote code to import a spreadsheet... A "class code" field is in there to define the the product category... But when no products matching I find that the number is the result of a concatenation, one half of which is not in this file...
Just... Why... ?!?!?! -
I need to build a dynamic regular expression with matching 0 or more char, but \w doesn’t work.
new RegExp(‘^\/\w*#’ + route, ‘i’)
Any solution? 🥺14 -
Is there any extension for visual studio code that allows markdown to be exported as proper linked TOC PDF? I have tried now atleast 5 different combinations, pandoc, convert markdown etc. and they all produce either really non matching content (pandoc) or don't link the table of contents right. (but atleast show the content 1:1 of what the preview is..)2
-
Just finished the code tests. I swear all of them could have just been regex. The first 2 I know can be because I did.
The last one was pattern matching in an array of strings (think battleships)
I actually fucked up the second test because I decided that they probably want code instead of regex...8 -
I called the hack "blow up bunny", was in my first company.
We had 4 industrial printers which usually got fed by PHP / IPP to generate invoices / picking lists / ...
The dilemma started with inventory - we didn't have time to prepar due to a severe influenza going round (my team of 5 was down to 2 persons, where on was stuck with trying to maintain order. Overall I guess more than 40 % ill, of roughly 70 persons...)
Inventory was the kind of ultimate death process. Since the company sold mobile accessoires and other - small - stuff.
Small is the important word here....
Over 10 000 items were usually in stock.
Everything needed to be counted if open or (if closed) at least registered.
The dev task was to generate PDFs with SKUs and prefilled information to prevent disaster.
The problem wasn't printing.
The problem was time and size.
To generate lists for > 10 000 articles, matching SKUs, segmented by number of teams isn't fun.
To print it even less. Especially since printers can and will fail - if you send nonstop, there is a high chance that the printer get's stuck since the printers command buffer get's cranky and so on.
It was my longest working day: 18 hours.
In the end "Blow up bunny" did something incredibly stupid: It was a not so trivial bash pipeline which "blew up" the large PDF in a max of 5 pages, sent it to one of the 4 printers in round robin fashion.
After a max of 4 iterations, bunny was called.
"bunny" was the fun part.
Via IPP you can of course watch the printer queue.
So...
Check if queue was empty, start next round with determined empty printer queues.
Not so easy already. But due to the amount of pages this could fail too.
This was the moment where my brain suddenly got stuck aft 4 o clock in the morning in a very dark and spookey empty company - what if the printer get's stuck? I could send an reset queue or stuff like that, but all in all - dead is dead. Paper Jam is paper jam.
So... I just added all cups servers to the curl list of bunny.
Yes. I printed on all > 50 printers on 4 beefy CUPS servers in the whole company.
It worked.
People were pretty pissed since collecting them was a pita... But it worked.
And in less than 2 hours, which I would have never believed (cannot remember the previous time or number of pages...)1 -
A friend of mine who wants to learn about Linux has a stronger will than me, as I think installing Linux in 2020 is gonna break me but he's still stoked as shit. I'm fucking serious. He asked me to install several distros, in order of interest (because they all fucking failed, because of fucking course they did) on a USB HDD he was using just for this.
We tried, in order:
Arch: initramfs wiped his Windows HDD when it crashed. IDFK how, but it zeroed the top 32KB of the drive. It wasn't even the right HDD...
Linux Mint: nvidia drivers refused to see his GPU after install. No matter what we did. Live media saw it fine until it was installed on the external drive, too.
Debian: Installer couldn't see the external HDD, ever. No matter what we did. It had a /dev entry, lsblk and fdisk saw it, I could format and mount it, but the installer crashed when it refreshed the device list when it was present. Every goddamn time.
Fedora: Installer broke halfway through as an executable (or 70) were corrupted, but the disc matched the ISO and the ISO sums correctly, so this is apparently how it was packed and shipped.
CentOS: Refused to boot. Just entirely. GRUB would go to load the kernel and it'd hang.
All ISOs and discs were verified as matching provided sums using MD5 and SHA256. How the fuck is Linux so fucking hard to get working on older hardware in 2020? Worked great in 2008, worked great in 2018, why is 2020 such a goddamn issue?11 -
Spend several months designing an alternative approach to string matching/parsing not based on parser combination or Regex. Benchmark and profile the ever living hell out of it. Find out the performance is highly competitive with FParsec and far easier on memory than either approach. Discover FParsec responds very badly when failing. Document all of this, do a presentation on the design. Upload video of presentation with links to it on a few sites. Presentation gets downvoted, and receive hatemail. Yay.17
-
Learning C/C++ started to become fun, mainly because I've managed to do seemingly cursed stuff lately.
For example, today, I learned you could totally call a class member function using a type-matching nullptr variable. The 'this' variable is so null that it will crash as soon as the program hits 'this', though, but the control flow does go into the function.
It's not *that* cursed once you learn the behind-the-scene stuff, but that kind of weird s#!+ is funny, even amusing for me, who've mained languages other than C/C++.11 -
I don't know what to do because union and sum types both totally suck but I need them for my scripting language
Union types are fun and intuitive because they can be used with type refinement but they're not hierarchical thus bad for generics.
Sum types (or tagged unions) are great because they're hierarchical and can be nested properly but they need ugly type matching constructs.
The positive thing is I'm not making a systems language anymore so I only wanna jump of a bridge every second day
5 -
Why do we keep developing algorithms to find us things we are already interested in? I'm tired of never being subjected to anything new, and I'm tired of not getting all the raw data. If you have to add a filter for me, please at least make it optional, or customizable. And make sure you make a matching algorithm distinguish uncertainty from negativity. Not knowing if I like x and just predicting I don't like x just because I've used y is not good enough. It's horrible.6
-
So apparently, the next version of C# is gonna have list pattern matching more powerful than F#...
...so... my motivation to learn F# drops back down to curiosity, since C#'s list pattern matching seems to will have all I needed and wanted for my parser, as opposed to F# which seems to not have it...
also fuck Russia and China, but I don't want to think about the impending apocalypse, thankyouverymuch. -
Not loving the implicit return statement within Scala. I like to avoid else statements to keep the level of nesting low and do early return yet Scala doesn't allow that.
(I am aware that I should flatMap that shit though in some cases I just want a simple if not foo then throw exception line. And continue with the next block until I return something.)
So you either have to create if-else-nesting beats or use pattern matching. The latter seems overly complicated for this use case (though it has its moments).
I know that I can make the return explicit yet the linter warns against that. It feels so verbose and I currently do not see any benefits and would argue that the code becomes both harder to read and maintain.3 -
I hate how the Java File I/O api works.....
I was developing a little noSQL database in java, just for fun.
The basic was: every entry was a json object, separated by \n.
Every entry started with the length in bytes, so i could perform a easy read of the entry with a inputstream, followed by the entry its self..
The problem?
If i had a big file with more than like 50000 entries, to alter a entry with acceptable perfomance, i had to read every entry for matching with search, than using RandomAccessFile to mark the old entry as deleted and adding the modified one at the end.
The same for delete, it was only possible to mark the entry as deleted, so the read/alter would just not read it by reading the length(which i wrote earlier) and than use inputstream.skip with the length.
To actually delete not needed entries, i created a new file and than reading the old one and writing at the same time to the new one, with skipping the not needed entries and at the end rename the new file to the old and re creating all the streams.
Why cant i just replace a specific part of the file? WTF JAVA2 -
What do you think of Elixir + Phoenix to build API’s? Is it a better choice than a more established language like Python or something more new like Scala or Clojure?
At my company we're going through a watershed moment where we're starting to discuss and think about re-building our digital foundations and nothing is off limits. I'm leading the discussion about our architecture where everyone can have their say into what the future looks like for our applications. We're currently on a Drupal (CMS) + PHP7/Symfony (Backend Content Repository) + Symfony Twig templates (Frontend)
Even though I have been developing in PHP most of my career, I personally love Elixir and spend a lot of my time away from work learning it but many of my reasons feels subjective like pattern matching, it's actor concurrency model, immutable data and not having to deal with classes/objects, and I'm not entirely sure how that translates to business value, advocating successfully for a tech stack change requires solid reasoning and good answers to challenges like how do we find Elixir developers when existing devs leave, how easy is it to build a CI/CD pipeline for Elixir/Phoenix, etc.4 -
I need to compare the JSON results of an API before and after a code change. But it was also moved to another API.
However some fields are auto-generated like timestamp or derived off the url (resource links).
Also if a JSON list is returned it maybe in different order...
Wondering is there a quick way to test text likeness?
I've done it before but just used matching status code and maybe measuring the diff in response size7 -
It looks like there aren't many great matches for your search.
Just give up and ask an AI bot to imagine some nonexisting bullshit instead.
Don't insist that there must be documents matching your search. Just accept that the age of quality is over and people must accept low-quality content as the new "information" standard.
Welcome to the age of alternative facts -
Trying to figure out the right version for Microsoft Visual Studio, Tensorflow, and Nvidia CUDA Toolkit has got me reaaaalllyyyy messed up!!!
Like the fuck!? One thing doesn't support the other's current version. It's like I'm playing a "version matching game, fucking candy crush shit!
It's so effing irritating!!! -
Definitly Unsplash' API! Being able to pull down images with specific sizes matching my criteria, or specific categories/search queries from a massive library have been useful on many occasions!
Quick filler images to test your website, booting up to a new wallpaper each morning... The list goes on! -
In nearby county to mine, coder was arrested for 3 months for nickname matching leaked terrorist nickname "grower" by coincidence. His coding education was enough reason for arrest.
All hdd/ssd/usb/mobile devices were confiscated for thorough analysis right from the morning by police.
Feeding my security paranoia. Encrypting fully filesystem(LUKS) and my internet traffic (self raised open vpn), wiping fully usbs. I ll be protected from my ISP recording my traffic, and from unauthorised access to my data.6 -
Love pattern matching, esp. in function clauses. No programming language can be considered feature rich without it. Yes, I'm looking at you, <mainstream programming language>1
-
Anyone have any advice for team-matching at Google? Got in through foobar, don’t have any real experience & really don’t feel like I know much. Thanks.1
-
Compromise.
I think that sums up development pretty much.
Take for example coding patterns: Most of them *could* be applied on a global scale (all products)… But that doesn't mean you *should* apply them. :-)
Find a matching **compromise** that makes specific sense for the product you develop.
Small example: SOLID / DRY are good practices. But breaking these principles by for example introducing redundant code could be a very wise design decision - an example would be if you know full ahead that the redundancy is needed for further changes ahead. Going full DRY only to add the redundancy later is time spent better elsewhere.
The principle of compromise applies to other things, too.
Take for example architecture design.
Instead of trying to enforce your whole vision of a product, focus on key areas that you really think must be done.
Don't waste your breath on small stuff - cause then you probably lack the strength for focusing on the important things.
Compromise - choose what is *truly* important and make sure that gets integrated vs trying to "get your will done".
Small example: It doesn't really matter if a function is called myDingDong or myDingDongWithBells - one is longer, other shorter. Refactoring tools make renaming a function an easy task. What matters is what this function does and that it does this efficiently and precise. Instead of discussing the *name* of the function, focus on what the function *does*.
If you've read so far and think this example is dumb: Nope... I've seen PR reports where people struggled for hours with lil shit while the elephant in the room like an N+1 problem / database query or other fundamental things completely drowned in the small shit discussion noise.
We had code design, we had architecture... Same goes for people, debugging, and everything else.
Just because you don't like what weird person A does, doesn't mean it's shit.
Compromise. You don't have to like them. Just tolerate them. Listen. Then try to process their feedback unbiased. Simple as that. Don't make discussions personal - and don't isolate yourself by just working with specific persons. Cause living in such a bubble means you miss out a lot of knowledge and insight… or in short: You suck because of your own choices. :-)
Debugging... Again compromise: instead of wasting hours on debugging a problem, ASK for help. A simple: Has anyone done debugging this before or has some input for how to debug this problem efficiently?... Can sometimes work wonders. Don't start debugging without looking into alternative solutions like telemetry, metrics, known problems etc.
It could be a viable, better long term solution to add metrics to a product than to debug for hours ... Compromise. Find a fitting approach to analyze a problem instead of just starting a brute force approach.
....
Et cetera et cetera. -
Heres the initial upgraded number fingerprinter I talked about in the past and some results and an explanation below.
Note that these are wide black images on ibb, so they appear as a tall thin strip near the top of ibb as if they're part of the website. They practically blend in. Right click the blackstrip and hit 'view image' and then zoom in.
https://ibb.co/26JmZXB
https://ibb.co/LpJpggq
https://ibb.co/Jt2Hsgt
https://ibb.co/hcxrFfV
https://ibb.co/BKZNzng
https://ibb.co/L6BtXZ4
https://ibb.co/yVHZNq4
https://ibb.co/tQXS8Hr
https://paste.ofcode.org/an4LcpkaKr...
Hastebin wouldn't save for some reason so paste.ofcode.org it is.
Not much to look at, but I was thinking I'd maybe mark the columns where gaps occur and do some statistical tests like finding the stds of the gaps, density, etc. The type test I wrote categorizes products into 11 different types, based on the value of a subset of variables taken from a vector of a couple hundred variables but I didn't want to include all that mess of code. And I was thinking of maybe running this fingerprinter on a per type basis, set to repeat, and looking for matching indexs (pixels) to see what products have in common per type.
Or maybe using them to train a classifier of some sort.
Each fingerprint of a product shares something like 16-20% of indexes with it's factors, so I'm thinking thats an avenue to explore.
What the fingerprinter does is better explained by the subfunction findAb.
The code contains a comment explaining this, but basically the function destructures a number into a series of division and subtractions, and makes a note of how many divisions in a 'run'.
Typically this is for numbers divisible by 2.
So a number like 35 might look like this, when done
p = 35
((((p-1)/2)-1)/2/2/2/2)-1
And we'd represent that as
ab(w, x, y, z)
Where w is the starting value 35 in this case,
x is the number to divide by at each step, y is the adjustment (how much to subtract by when we encounter a number not divisible by x), and z is a string or vector of our results
which looks something like
ab(35, 2, 1, [1, 4])
Why [1,4]
because we were only able to divide by 2 once, before having to subtract 1, and repeat the process. And then we had a run of 4 divisions.
And for the fingerprinter, we do this for each prime under our number p, the list returned becoming another row in our fingerprint. And then that gets converted into an image.
And again, what I find interesting is that
unknown factors of products appear to share many of these same indexes.
What I might do is for, each individual run of Ab, I might have some sort of indicator for when *another* factor is present in the current factor list for each index. So I might ask, at the given step, is the current result (derived from p), divisible by 2 *and* say, 3? If so, mark it.
And then when I run this through the fingerprinter itself, all those pixels might get marked by a different color, say, make them blue, or vary their intensity based on the number of factors present, I don't know. Whatever helps the untrained eye to pick up on leads, clues, and patterns.
If it doesn't make sense, take another look at the example:
((((p-1)/2)-1)/2/2/2/2)-1
This is semi-unique to each product. After the fact, you can remove the variable itself, and keep just the structure in question, replacing the first variable with some other number, and you get to see what pops out the otherside.
If it helps, you can think of the structure surrounding our variable p as the 'electron shell', the '-1's as bandgaps, and the runs of '2's as orbitals, with the variable at the center acting as the 'nucleus', with the factors of that nucleus acting as the protons and neutrons, or nougaty center lol.
Anyway I just wanted to share todays flavor of insanity on the off chance someone might enjoy reading it.1 -
I work in a repair shop, I have 300+ sticks of RAM laying around, from DDR to DDR3 (DDR3 of 4+ GB and DDR4 are either good for replacement on new computers or are sold immediately so don't count them as laying).
Also I have 200+ hard drives, IDE, SATA, SAS, 2.5, 3.5, 20 GB to 1 TB. Lots of them.
What can I do with all this crap? Not enough matching CPU and MB to make a working system (unless I make a very obsolete one but there's no point in doing so). I also am using single hard drives for backups (only 500+ GB SATA-3 though) so I'm mostly concerned with all that old ram. What can I do with them??8 -
If anyone complains one more time about "windows is built upon a DLL-Hell", i will challenge this specific anyone to implement react into an existing PHP-Project.
Installing matching package versions via npm is the real struggle.
Especially if you decide to be a node psycho who's delivering his react code via webpack.
*projectile vomiting in a straight beam of acid vomit*
Wasted a complete day of my life, dealing with Facebook's naughty shit.... -
Turns out composition over inheritance won't save you from downcast hell, it just becomes `_ => abort()` hell.4
-
So I needed to go through a documentation of a program that was obviously developed by Chinese people, and went through some kind of Google translate to be in English.
This is an utter disaster: sentences that barely make sense, code blocks without a matching ending that cause the rest of the paragraph to be in the code block as well, code outside code blocks and without formatting, sentences unrelated to the section they're in, etc.
The program itself is great, but the shitty documentation makes me wanna kill whoever wrote it2 -
I guess coding is a coping mechanism for not matching on any dating sites and hence no dates...
I guess you could say it helps me find alternative methods to release my per up desires... Although I guess a real relationship is something it can't replace... -
I must have offended Satan or something, but I'm pulling my hairs out over this client data that feels like a fractal of bad validation invented to torment me. Misspelled field names, improperly combined fields, entries in the wrong column, impossible addresses, non-matching staging and production data / keys, invisible freaking characters that ruin automated matching - every dam thing you fix and the next one hits you in the face like a clown stepping on a rake. Jesus.1
-
My mom bought a new phone in a phone shop. They advised her a Samsung A25 prolly not matching the specs of her old iPhone. My mom doesn't do anything else than making videos with that thing, so storage and camera are important. Now, she doesn't get email configured on it somehow and the people of the store are like "we don't enter passwords because privacy Bla Bla". What a lame excuse fuck faces. Giving service is the only reason your sad stores still exists. Transferring data and configure them for older people. I've send her back to demand it from those scammers.
Fuck faces, refusing to do their job if they can get away with it1 -
TypeScript types are fun. Problem is: the check is compile-time only.
I just wasted an hour not understanding that an integer passed from command line was actually getting transmitted as a string. The library, where that value landed as parameter, happily ignored the non-matching type and worked as if the value has not been set at all!
Dear library maintainer, please enforce your parameter types! Throw an error right into my face saying I shall not pass anything but an integer! Don't just continue to work to produce false output correctly. Thank you!
Dear TypeScript, I really want type checks on runtime.
Dear JavaScript: Why did you ever think loose types were a good idea? (And I say that as a PHP developer as well.)2 -
That feeling when you inherit a script to automate something that takes 10 seconds. Why would they even write this? It's not like the task is hard....
...
And why would they write it this way? I'm sure if I just move this part and ....
That feeling when you spend several hours improving and redesigning a perfectly functional script to automate a 10 second task for zero gain aside from cleaner code. "But the code for this quick-and-dirty script I'm never going to look at again looks so much better now!"
... If only it did a bunch of complicated parsing, regex matching, and error checking just so I can answer one less prompt.... Unless that parsing fails. Then it should still ask me for that prompt... And also validate that the answers I give are valid and correct....
That feeling when you spend a whole nother day starting from scratch to implement error checking and complex parsing logic knowing full well the original task takes 10 seconds to do manually and is needed at most twice a day (for a grand total of 20s a day)
WHY AM I LIKE THIS?!?!?!4 -
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? -
Has anyone else observed your facebook feeds matching the context from your whatsapp chats? Or are these coincidences happening more often to me only?
-
I just discovered that the site "http://whocouldthat.be/visualizing-..."
match strings. But what about if you go over "http://whocouldthat.be"? So sad -
I had a pretty good day.
I had my first pay raise as a dev;) not huge but i wasnt expecting one for another 4months ;)
And i was working on a security scrip for after effect plugins. The thing is called Extendscript and is built on top of ecma3. Yeah javascript version from 1999. Hashing stuff gave me different results. Took me about a week to realise that the string buffer were different and i had to parse in latin something to have the same matching buffers. What a hassle man. Let alone trying to make it work with Windows terminal which after starting with Linux then mac, windows seems sooo sucky.
But yeah its my first security scripts so 2 main achievements for me today! Ive waited 4 years to reach a level where i now feel like a real professional dev. ;) sry not a rant ;) -
My manager and coworkers kept calling me during vacation to add more triggers to fire some functionality. I had enough and made a regular expression matching, told them to learn regex and fuck off
-
Chromium dev tools and Lighthouse audits sound like a Chrome features marketing campaign, once you proceed beyond basic optimizations and bug fixes, like
use our new image formats, stop shipping old JavaScript to new browsers, provide a source map, use web font preload but only if you use it exactly matching the best case scenario, rewrite your manifest file which used to work just fine etc.
actively encourage people to exclude up to 5% of global website audience?!
"This means that 95% of global web traffic comes from browsers that support the most widely used JavaScript language features from the past 10 years"
https://web.dev/publish-modern-java... -
> This is indeed a well-known architectural challenge—the "tying together" of heterogeneously typed objects with their matching data—often referred to as a variant of the Expression Problem
=-=
> The expression problem is a challenging problem in programming languages that concerns the extensibility and modularity of statically typed data abstractions. The goal is to define a data abstraction that is extensible both in its representations and its behaviors, where one can add new representations and new behaviors to the data abstraction, without recompiling existing code, and while retaining static type safety (e.g., no casts). The statement of the problem exposes deficiencies in programming paradigms and programming languages, and as of 2023 is still considered unsolved,[citation needed] although there are many proposed solutions
=-=
why do I always
also this is easy as pie in javascript. No wonder it was my favourite language. you're just so free to express yourself. DUNCHU SEE?!25 -
Imagine if all the laws was based solely on concepts.
Like imagine being detained for not matching your archetype lol1 -
What's your best hacky bodge that actually worked? Mine was probably adding an item in a list to iterate off when searching for matching accounts or else it crashed. Love you node.js.
-
ARCHIVED
PANTSEMM - Rust-based json parser geared towards sorting/matching tags on shapes with n sides -
So, I just (few hours ago)made a new variable that's either brilliant or innately flawed... not sure yet. It's an oddly unique var...
__bs__
So far I only made it in python and windows env (i script like the methodology of css).
I bet you're wondering how I've defined __bs__ and the practicality of it.
__bs__ is derived from a calculated level of bullshit that annoys me to tolerate, maintain, etc. as well as things that tend to throw nonsensical errors, py crap like changing my strings to ints at seemingly random times/events/cosmic alignments/etc or other things that have a history of pulling some bs, for known or unknown reasons.
How/why did this come about now?
Well I was updating some symlinks and scripts(ps1 and bat) cuz my hdd is so close to death I'm wondering if hdd ghosts exist as it's somehow still working (even ostream could tell it should be dead, by the sound alone).
A nonsense bug with powershell allowing itself to start/run custom ps1scripts with the originating command coming from a specific batch script, which worked fine before and nothing directly connected to it has changed.
I got annoyed so took an ironic break from it to work on python crap. Python has an innately high level of bs so i did need to add some extra calculations when defining if a py script or function is actually __bs__ or just py.
The current flavour of py bs was the datetime* module... making all of my scripts using datetime have matching import statements to avoid more bs.
I've kept a log of general bs per project/use case. It's more like a warning list... like when ive spent hours debugging something by it's traceback, meticulous... to eventually find out it had absolutely nothing to do with the exception listed. Also logged aliases i created, things that break or go boom if used in certain ways, packages that ive edited, etc.
The issue with my previous logging is that it's a log... id need to read it before doing anything, no matter how quick/simple it should be, or im bound to get annoyed with... bs.
So far i have it set to alert if __bs__ is above a certain int when i open something to edit. I can also check __bs__ fot what's causing the bs. I plan to turn it into a warning and recording system for how much bs i deal with and have historical data of personal performance vs bs tolerance. There's a few other applications i think ill want to use it for, assume it's not bs itself.
*in case you prefer sanity and haven't dealt with py and datetime enough, here's the jist:
If you were to search any major forum like StackOverflow for datetime use in py, youd find things like datetime.datetime.now() and datetime.now() both used, to get the same returned value. You'll also find tons of posts for help and trying to report 'bugs', way more than average. This is because the datetime package has a name conflict... with itself. It may have been a bug several years ago, but it beeb explicitly defined as intentional since.1 -
I had this song stuck in my head the whole fucking day today. And I really, really *REALLY* wanted to listen to it. Once. Without any distractions or breaks. While working. And focusing on work. Matching the tempo of the song to My work rhythm.
SO WHY THE FUCK COULD PEOPLE NOT WAIT FOR 4 MINUTES AND 35 SECONDS AND ****CHOOSE**** TO IGNORE EARPHONES, A BLACK HOODIE COVERING MY ENTIRE FUCKING FACE AND THE LACK OF RESPONSES WHEN YOU CALLED THE FIRST 2 TIMES????????????????
Worst part? It was JUST THAT ONE SONG WHILE WORKING. OTHER TIMES, NOBODY CARES I EVEN FUCKING EXIST!1 -
Fuck Android development tools! What the fucking hell man?! I can't setup and run a simple hello world app!! And that's not the first time. I have tried this on multiple occasions throughout the years and always failed. Non-matching? multiple versions of build-tools, platforms, platform-tools, cmdline-tools, system-images, ... and binaries moving from folder to another between updates and Java, oh don't get me started on Java. I'm too old for this stuff.3
-
I made a little automated Docker reverse proxy called Autocaddy to simplify developing unrelated little trinkets under subdomains of a domain name:
https://github.com/lbfalvy/...
It dispatches subdomains to the (container with the) matching network alias and terminates TLS.
it's a little rough around the edges but to my understanding it shouldn't be an inherent risk (unless you're running things that interfere with name resolution like VPN on the container host, but why would you do that if it's already a container host).4 -
F# is making me start to dislike C#undefined nullreferencemyarse shame there's no boilerplate pattern matching immutability partial application currying1
-
HOW TRUST GEEKS HACK EXPERT HELPED ME TAKE LEGAL ACTION & RECOVER MY FUNDS
It's a fact: Reddit has always been, is, and will be my source for crypto discussions, security tips, and market trends. Little did I know it would be the same site that helped save me from financial ruin. Some months ago, an AMA thread about Trust Geeks Hack Expert showed up. People asked them anything: from lost wallet recoveries to phishing scams; their answers sounded really detailed, transparent, and full of insight. At the time, I didn't know that their help was near. It all started with what I thought was a routine software update. I had received an e-mail from what looked like a trusted exchange, telling me to install an important patch. The email looked *legit—*matching the branding, formatting, and even the usual tone of messages I had received before. Without a second thought, I downloaded the update and installed it. Biggest mistake of my life. It froze within minutes, and then it automatically restarted. My crypto wallet was empty when I regained access. $200,000-gone. At first, I thought it was some kind of glitch, but as I dug deeper, the cold reality hit me hard: I had been hacked. The "update" was a form of malware designed to drain wallets by injecting malicious code. Panic set in, but rather than spiral, I remembered the Trust Geeks Hack Expert AMA. Their confidence in handling cases like mine had stood out to me. I rushed back to the thread, found their contact details Website h tt p s :// trust geeks hack expert. c o m / -- E m a il : trust geeks hack expert {@} fast service {.} c o m, and reached out immediately. Their response was prompt and very reassuring. They asked for every little detail I could remember-from the time of the installation of the fake update to the exact nature of the transactions I had done prior to this. They got to work, tracing the movement of my stolen funds using some advanced blockchain forensics.
Days went by, and I had my doubts, but they kept me updated. Then came a message that I was praying for; they had recovered my $200,000. It sounded like a dream come true. All stress, regret, and anger vanished at that moment. Trust Geeks Hack Expert saved not only my funds but also taught me a lesson which will never be forgotten: never trust email links. Now, I double-check every update; use cold storage for large amounts; don't click on anything that's remotely suspicious. If not for that Reddit AMA, I would have never found the only team skilled enough to turn my disaster into a comeback story.1 -
What would be the easiest way to make line 16 work.
I don't know if there is a simple way to tell this "if" argument to check all af the "Remote Host" classes for a matching string at that index.
I'm trying to design with modularity in mind.
12 -
UPVC Painting Ltdrant doors upvc spray painting our tailored solutions deliver flawless we pride ourselves on attention to detail efficient service address: 48a warwick street upvc window painting or matching your brand identity modernising your colour scheme upvc door painting property renovation department london4
-
A1 Autoworkz Auto Body Shop: Your Premier Auto Repair and Collision Center Serving Bronxville, NY, and Beyond
When it comes to high-quality car painting services and expert automotive collision repair, A1 Autoworkz Auto Body Shop is your go-to destination for all things auto repair in the Bronxville, NY area. Conveniently located at 543 E 3rd St, Mt Vernon, NY 10553, we provide a wide range of services, from car collision repair in New Rochelle to auto repair near Bronxville, NY, ensuring your vehicle is restored to its best condition after any damage.
Whether you’re dealing with a minor scratch, a major collision, or a complete vehicle overhaul, our dedicated team of professionals is here to offer reliable, affordable, and comprehensive vehicle repair services.
Bronxville Car Painting Services: Restoring Your Vehicle's Appearance
One of the most noticeable aspects of your car’s condition is its paint job. Whether your vehicle has been scratched, scuffed, or damaged in an accident, A1 Autoworkz Auto Body Shop offers expert Bronxville car painting services to restore your vehicle’s appearance to its former glory.
Our car painting services include:
Custom Paint Jobs: If you’re looking to personalize your vehicle with a custom color or design, we offer specialized custom car painting to suit your preferences.
Paint Matching: After a collision or accident, we provide expert paint matching to seamlessly blend the new paint with the existing finish.
Scratch and Chip Repair: Minor damages like scratches and chips can be fixed quickly, ensuring a smooth and flawless finish.
Full Paint Restoration: For vehicles that need a complete refresh, we offer auto paint restoration to give your car a brand-new appearance.
With our car painting services in Bronxville, your vehicle will look like new again, whether you need a touch-up or a full re-spray.
Auto Repair Near Bronxville, NY: Comprehensive Services at Your Doorstep
If you’re searching for reliable auto repair near Bronxville, NY, A1 Autoworkz Auto Body Shop is the place to go. We offer a full range of auto repair services to ensure your vehicle is running smoothly and efficiently.
Our auto repair services include:
Routine Maintenance: From oil changes to tire rotations, we handle all your routine vehicle maintenance needs to keep your car in peak condition.
Brake Repair: Our technicians specialize in brake inspections, replacements, and repairs to ensure your safety on the road.
Transmission and Engine Repair: If you’re experiencing issues with your engine or transmission, we can diagnose and repair the problem efficiently.
Suspension and Steering Repairs: We provide repairs for suspension and steering systems to ensure your car handles properly.
Whether you’re dealing with a mechanical issue or just need preventive maintenance, A1 Autoworkz Auto Body Shop is your trusted auto repair center near Bronxville, NY.
Automotive Collision Repair Bronxville: Get Your Car Back on Track
At A1 Autoworkz Auto Body Shop, we understand that a collision can be a stressful and overwhelming experience. That’s why we offer expert automotive collision repair services in Bronxville, NY to restore your car to its original condition. Whether your car has a minor dent or more extensive damage, we have the tools, technology, and expertise to get it back on the road safely.
Our automotive collision repair services include:
Bumper and Fender Repair: After a collision, your bumper or fender may need repair or replacement. We provide professional bumper and fender services to ensure your car looks and functions like new.
Frame Alignment: If your vehicle’s frame has been bent or misaligned in a collision, we use state-of-the-art equipment to straighten and restore it to its original position.
Paint and Finish: After collision repairs, we provide expert auto painting services to blend and match the paint seamlessly, leaving no evidence of the repair.
Glass and Window Repair: We can replace broken windows or repair chips in your windshield to keep your car looking great and secure.
When it comes to automotive collision repair in Bronxville, A1 Autoworkz Auto Body Shop offers fast, reliable, and high-quality repair services to get you back on the road with confidence.
Bronxville Vehicle Repair Services: Quality and Affordable Repairs
At A1 Autoworkz Auto Body Shop, we pride ourselves on providing the best vehicle repair services for drivers in Bronxville, NY. Whether you need routine maintenance or more complex repairs, our experienced technicians are here to help.
Our vehicle repair services include:
Engine Diagnostics and Repair: If your engine isn’t running smoothly, we offer diagnostic services to pinpoint the issue and make the necessary repairs.
9 -
Vered Hair Salon: The Best Hair Extensions in Los Angeles
If you’re looking for the best hair extensions in Los Angeles, Vered Hair Salon is your destination for premium, natural-looking hair extensions that will transform your look. Located at 8539 W Sunset Blvd #17, West Hollywood, CA 90069, just a short drive from the heart of Los Angeles, our salon specializes in providing high-quality hair extensions that blend seamlessly with your natural hair, giving you longer, fuller, and more beautiful hair.
Why Choose Vered Hair Salon for Hair Extensions in Los Angeles?
At Vered Hair Salon, we understand how important it is to find a trusted and experienced stylist for your hair extensions in Los Angeles. Here’s why our salon stands out as one of the best in the area:
Expert Stylists: Our team of professional stylists has years of experience working with various hair extension techniques. We specialize in tape-in extensions, fusion extensions, micro-link extensions, and clip-in extensions, ensuring that we can meet the unique needs of every client.
High-Quality Hair Extensions: We use only 100% human hair for our extensions, ensuring a natural look and feel that perfectly blends with your own hair. The quality of the hair extensions we provide guarantees long-lasting, beautiful results that will leave you feeling confident and stunning.
Customized Solutions: At Vered Hair Salon, we don’t believe in a one-size-fits-all approach. We take the time to assess your hair type, texture, and color to provide you with a personalized extension solution that complements your style. Whether you’re looking for more volume, length, or a complete hair makeover, we have the perfect extension for you.
Seamless Blending: Our stylists are experts in blending hair extensions with your natural hair so they look flawless and undetectable. From matching color to creating a natural flow, we ensure your extensions blend seamlessly with your own hair for a beautiful, natural look.
Convenient Location in Los Angeles: While we are located in West Hollywood, we serve clients from all over Los Angeles. Our salon is easy to find and conveniently located, making it a perfect choice for anyone searching for hair extensions in Los Angeles.
Our Hair Extension Services
At Vered Hair Salon, we offer a variety of hair extension services to suit every need:
Tape-In Extensions: One of the most popular methods, tape-in extensions are lightweight and discreet, offering a natural-looking result that blends seamlessly with your own hair. Perfect for adding length and volume without any bulk.
Fusion Hair Extensions: For a more permanent option, fusion extensions are applied strand by strand using a keratin bond. This method provides a durable and long-lasting result, creating a beautiful, natural appearance.
Micro-Link Hair Extensions: Micro-link extensions are applied using small beads and do not require glue or heat. This method is a great option for those looking for an easy-to-maintain and natural look.
Clip-In Extensions: If you’re looking for a temporary transformation, clip-in extensions are an ideal option. They allow you to add volume and length quickly for special occasions or everyday wear.
Custom Blending & Matching: Our expert stylists will match the color, texture, and density of your extensions to your natural hair, ensuring a flawless, custom result.
Why Hair Extensions at Vered Hair Salon?
When you choose Vered Hair Salon for your hair extensions in Los Angeles, you’re choosing quality, professionalism, and dedication. We offer a comfortable and welcoming environment where you can relax and let our experts work their magic. Whether you want to add a little extra volume or completely transform your hair, our team is here to make it happen.
Visit Vered Hair Salon Today
If you’re ready to experience the best hair extensions in Los Angeles, Vered Hair Salon is here to help you achieve the hair of your dreams. Our skilled stylists, personalized service, and high-quality extensions ensure you get beautiful, natural-looking results that will leave you feeling confident and gorgeous.
Contact Us
For more information or to schedule a consultation, call +1 (310) 659-3030 today. We look forward to helping you get the beautiful, long hair you've always dreamed of!
6 -
One nightmarish project that was doomed from the beginning, had me as the sole developer. I could hardly sleep when we began testing on a separate test system, but with (nearly) all the config stored in shared memory and copied from the production system, I dreaded, half awake, that the production server data base connection was still configured in the test system and that it was shooting all it's test data repeatedly to prod.
Finally drove to company in middle of the night at 4 o'clock. Checked everything was OK, tried to sleep 3 hours before the start of the work day.
This system also had the most hideous memory corruption in some shared memory that was used across several processes and should have been thoroughly protected by a mutex, but somehow, sometimes this crucial map, that was used to speed up the access to all the customer data just contained garbage.
Still haunts me to that day. (Like xkcd's unresolved tension of a non-matching parenthesis - an unresolved bug.







