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 - "pipe here pipe there"
-
Summary: Burnout, and everything's broken.
I don't feel like doing a damn thing today. I look at the code and cringe. I look at Slack and think "ugh. i can't." Mental capitals are even too much work.
(I've started reading "Zen and the Art of Motorcycle Maintenance" to try and combat burnout. I'll write a rant/story about it here if I find it helpful. but all I want to do today is drink tea and read.)
But onto the story:
Heroku is deprecating support for and will automatically upgrade any old verisons of Postgres running on its platform after August something (like five days from now).
I performed the upgrade to PG10 on Sunday (and late into the night), provisioning a new follower, blah blah blah.
However, the version of Rails we're using (4.2.x) doesn't support PG10 sequences, so I manually added in support via a monkeypatch. I did this on our QA servers first, obviously, and everything worked as expected. After half a day of no issues, I did the same on production, and again: everything worked as expected.
But today? I keep hearing about new things that are broken. One specific type of alert doesn't work for one specific person (wat). Can't send [redacted] at all. Can't update merchants! Yet there are magically no errors logged.
That last one (well, two) are just great; let me explain: when there's an error concerning merchants, the error gets caught, isn't logged or recorded anywhere so it just disappears, and the rescue block triggers a json response instead and happily exits. This is for an internal admin tool, so returning a user-friendly error is kinda stupid anyway, but masking what actually happened? fuck that dev with an obelisk made from spikes and solidified pain. That json response is also lovely: it's a 200 OK returning {status: 1, data: "[generic message containing incorrect IT jargon]"}. Doesn't even say "error" anywhere. Bloody everything about this pattern is absolutely wrong. Even the friggin' text.
Fucking hell. I want to pipe the entire codebase into shred and walk out the door.
But I digress. So many things are broken, my motivation is wanning to a sliver, and I have a conference call today where I'll undoubtedly be asked why everything is on smoking and/or on fire, and my huge and overly productive week last week will ofc mean nothing by contrast.
Ugh.
`shred ~/dev/work -zfu -n 32 &; ./brew tea --hot && wine ~/takeabreak.exe`rant zen and the art of motorcycle maintenance postgres heroku ship's sinking and the fixer's all fixed out burnout21 -
My first try at greentext.
>Be me
>18y.o recently recruted to a university
>1 month before moving to the university
>Be alone with his computer && electronics hobbys
>My town sucks
>Go on first year student integration camp
>Yay im going to meet a lot of people like me!
>Camp near the lake, 100km from home
>Day 1/7
>Moved my stuff to a house
>I dont know anybody
>Meet 3 friends who are going to live with me
>One of them is great, i like him, he likes to code, uses mac and iphone (it suffices for his needs, he understand everybody else who thinks otherwise)
>Two of them are pro party guys / alcohol vaccums
>Fucking pricks with their boombox
>99% of students are just there to drink a FUCKING LOT
>WTF.jpg
>Day 5/7
>I had been drunk only once at the camp and i havent drunk since because of AlcoholAfterEffects®
>Have a sad moment due to me wasting my time and money here.
>Totaly wasted my time... and found nobody like me
>After that day i meet 2 programers
>I have taught them OOP
>Had a great time
>Night game!
>Bizarre student party rituals
>Use my torch i made literary 8h before the camp had started
>Torch is made from pvc pipe, 9v battery, chinesium buck converter, old led module, switch
>Find the guy with the HUGE TORCH
>Wow. Is it the 100W homemade floodlight?
>Conversation about our constructions
>Both sides were looking for a friend with similar hobbies
>Exchange the contacts
>Hopefuly meet thogether and make few projects in the future
>Present time
>Got 3 friends in one day
>But still dosent understand the huge amount of alcohol nearly everyone is drinking13 -
So I just spent the last few hours trying to get an intro of given Wikipedia articles into my Telegram bot. It turns out that Wikipedia does have an API! But unfortunately it's born as a retard.
First I looked at https://www.mediawiki.org/wiki/API and almost thought that that was a Wikipedia article about API's. I almost skipped right over it on the search results (and it turns out that I should've). Upon opening and reading that, I found a shitload of endpoints that frankly I didn't give a shit about. Come on Wikipedia, just give me the fucking data to read out.
Ctrl-F in that page and I find a tiny little link to https://mediawiki.org/wiki/... which is basically what I needed. There's an example that.. gets the data in XML form. Because JSON is clearly too much to ask for. Are you fucking braindead Wikipedia? If my application was able to parse XML/HTML/whatevers, that would be called a browser. With all due respect but I'm not gonna embed a fucking web browser in a bot. I'll leave that to the Electron "devs" that prefer raping my RAM instead.
OK so after that I found on third-party documentation (always a good sign when that's more useful, isn't it) that it does support JSON. Retardpedia just doesn't use it by default. In fact in the example query that was a parameter that wasn't even in there. Not including something crucial like that surely is a good way to let people know the feature is there. Massive kudos to you Wikipedia.. but not really. But a parameter that was in there - for fucking CORS - that was in there by default and broke the whole goddamn thing unless I REMOVED it. Yeah because CORS is so useful in a goddamn fucking API.
So I finally get to a functioning JSON response, now all that's left is parsing it. Again, I only care about the content on the page. So I curl the endpoint and trim off the bits I don't need with jq... I was left with this monstrosity.
curl "https://en.wikipedia.org/w/api.php/...=*" | jq -r '.query.pages[0].revisions[0].slots.main.content'
Just how far can you nest your JSON Wikipedia? Are you trying to find the limits of jq or something here?!
And THEN.. as an icing on the cake, the result doesn't quite look like JSON, nor does it really look like XML, but it has elements of both. I had no idea what to make of this, especially before I had a chance to look at the exact structured output of that command above (if you just pipe into jq without arguments it's much less readable).
Then a friend of mine mentioned Wikitext. Turns out that Wikipedia's API is not only retarded, even the goddamn output is. What the fuck is Wikitext even? It's the Apple of wikis apparently. Only Wikipedia uses it.
And apparently I'm not the only one who found Wikipedia's API.. irritating to say the least. See e.g. https://utcc.utoronto.ca/~cks/...
Needless to say, my bot will not be getting Wikipedia integration at this point. I've seen enough. How about you make your API not retarded first Wikipedia? And hopefully this rant saves someone else the time required to wade through this clusterfuck.12 -
Ye, so after studying for an eternity and doing some odd jobs here and there, all I can show for are following traits:
* Super knowledgeable in arm/Intel assembly language
* C-Veteran with knowledge of some sick and nasty C-hacks/tricks which would even sour the mood of your grandma
* Acquired disdain of any and all scripting languages (how dare you write something in one line for which I need a whole library for!)
* All-in-all low-level programmer type of guy (gimme those juicy registers to write into!)
After completing the mandatory part of my computer science studies, all I did was immerse myself into low-level stuff. Even started to hold lectures and all.
Now I'm at the cusp of being let free into the open market.
The thing is: I'm pretty sure that no company is really interested in my knowledge, as no one really writes assembly anymore.
Sure, embedded programming is still a thing, but even that is becoming increasingly more abstract, with God knows how many layers of software between the hardware and the dev, just to hide all the scary bits underneath.
So, are there people in here who're actually exposed to assembly or any hands-on hardware-programming?
Like, on a "which bit in which register/addr do I need to set" - kind of way.
And if so, what would you say someone like me should lookout for in a company to match my interest to theirs?
Or is it just a pipe dream, so I'd need to brace myself to a mundane software engineer career where I have to process a ticket at a time?
(Just to give a reference: even the most hardware-inclined companies I found "near" me are developing UIs with HTML5 to be used in some such environment ....)12 -
Hitting a really deep, deep low in the manic-depressive roller-coaster of the development cycle:
There comes the crunch time. No meeting goes by hearing the odious: "We don't have time for that." - One critical component needs to be finished for Big Sur and instead of addressing the real issues we keep changing design and goal. One main dev already gave up fighting the PO and team lead(!) - and now I'm next. So that dev build this really clean and minimal library as the core part. But now it's just like, yeah, take that nice Porsche engine put it on the old rusty bicycle from the shed,.. but maybe because that's so shitty we need that specially formed exhaust pipe to tune it. Yeah, very 'agile' - Only thinking about it makes me shudder in disbelief and anger. I shouldn't take that shit so serious, be emotional about shit code, I know, but I can't. Let them drive some rounds around the block, if it runs at all,.. because until now we still didn't make it run on the fuckin' street. It's all so insane. Will make some nice fireball, when it goes up in flames.
Well, I have been part of quite some shitty projects. Real suicide commandos set out to fail, and somehow stood them through or made it even "work" though it should never have. But what enrages me here is, that it needn't to be that way. We had plenty of time. Our team was often rowing along in good rhythm. And now I just feel drowned in resignation and sarcasm.rant fuck po resignation crunch time shitty design manic-depressive sarcasm low roller-coaster low fail hard -
Applying for a new job and got an assignment for a quick dashboard as a test, whoever designed the HTTP client in Angular should be thrown down a fucking building.rant your mother is getting piped let's react to a fucking request pipe here pipe there performing a request and getting a result naaaah to fucking easy11
-
Random as fuck, but anyone here that smokes pipe tobacco or enjoys cigars? what about dip tobacco? from my understanding, smokeless tobacco is far different in yurop than it is in the U.S
My friends in Mexico are pretty clueless about all of this except for cigar smoking, and regular cigarettes, dip tobacco was pretty much unknown to me until some time (mexicans are not very prone to smokeless tobacco it seems) and I currently enjoy a cigar here and there, just wanted to see what y'all thought about the hobby.9 -
Almost finished with latest preprocessor.
Why am I always working on preprocessors tho? Shit...
Anyway, almost finished ok.
Idea is, basically, that inside a C source or header you can write a perl subroutine instead of `#define ...`.
The mechanism is rather simple:
```C (wat?)
macro mymacro($expr) {
· // perl code goes here
· return "$expr;"
};
```
`$expr` is just a string holding whatever block of code comes after an invocation of `mymacro`. You can use the builtins `tokenshift` and `tokenpop` on a string to get the first and last token, respectively, and then `tokensplit` gives you *all* the tokens.
Whatever string you return is what the expression you received is replaced by:
- You can just give back the expression as-is to get the exact same thing you wrote -- so `mymacro char* wat;` gives you `char* wat;`.
- But if you return a galaxy's worth of C code, then bam. Macro expanded into it, just like that. It's a perl subroutine, so let your imagination fly. Wanna run some scripts at (pre)compile time? Then you can.
- If you return an empty string, then puff. No code. Input consumed.
- If you give the name of another macro (eg "another_macro $expr;"), the expansion recurses.
- If you return the name of the currently executing macro, no recursion happens. This lets you wrap C keywords without (too much) fear.
It's kind of cool because a separate perl module is built from the macros themselves. So then you can include those in another C file. Syntax is basically more perl because why not:
```C (yes)
package mypkg;
· use lib "path/to/myshit/";
· use pm funk qw(mymacro);
```
The `lib` bit actually translates to `-I(path)` for gcc. But for some reason the way you add an include path in perl is `use lib "path"`, so yep. I get it's confusing but just go with the ::~ f l o w ~:: ok.
Then the `pm` stuff is not valid perl (i think), but I took the easy way out and invented it to ensure there is a way to say "OK I don't give a single shit about the C stuff, just give me these qw()'d funky macros from this file." If you simply `use funk qw(mymacro)` then you also get an `#include "funk.h"`.
Speaking of which, headers are automatically generated. Yeah, fuck you, I added `public` to C, bite me. It's actually quite sexy as I defined it using the preprocessor:
```C (yes but actually perl)
macro public($expr) {
· my $dst=cmamout()->{export};\
· tokentidy $expr;
· push @$dst,$expr;
· return "$expr;";
};
```
Where `cmamout()` is a hash from which the output is generated. Oh, and `tokentidy` is just a random builtin that cleans up extra whitespace, don't mind it.
So now the bad stuff: I have to fix a few things. For instance, notice how I had to escape a new line there? Yeah. It's called dumb fix to shit parsing, of course.
But overall I'm quite satisfied with this. And the reason why may not be so obvious so I'ma spill it out: backticks, motherfucker.
That's right. Have a source emitter written in an esoteric language?
```C (yes really but not really)
macro bashit($expr) {
· my ($exe,@args)=tokensplit $expr;
· return `$exe @args`;
};
```
So now you can fork off into parallel dimensions; what can I say pass the pipe brother.
MAMmoth in the room is yes, this depends on MAM. What is MAM? MAMMI. It's the original name of my infamous picture of an ouroboros eating it's own ass while stuck in limbo contemplating terrible life decisions of a build tool, avtomat (go ARSLASH <AR/> [habibi]).
So what's the deal with that? avtomat is a good build tool _for me_, not... ugh, you. I made it for *myself* baby things are not going to work out between us I'm sorry. MAM just does lots of things I wanted build tools to do in the __EXACT__ way I wanted them done. I'd say you should go use it too maybe, but actually don't and you shouldn't because I broke main some weeks ago to fix some other shit and then implement this. Yeah, pretty stupid, but what the hell. I'm the only user after all!
In conclusion, I am fully expecting to receive my mad props and street cred in the mail along with your marriage proposals en masse, effective immediately.
Further reading: https://youtube.com/watch/...5 -
Reliable Water Heater Service by Pipe Doctor Home Services, Inc. in Woodmere, NY
A functional water heater is essential for the comfort and convenience of your home. Whether you need a hot shower, clean dishes, or warm water for laundry, a well-maintained water heater plays a crucial role in your daily routine. At Pipe Doctor Home Services, Inc., we specialize in comprehensive water heater services in Woodmere, NY, and surrounding areas. From repairs to installations and regular maintenance, our expert technicians ensure that your water heater operates efficiently and reliably year-round.
Why Water Heater Service is Important
Your water heater is one of the most important appliances in your home, and like any major system, it requires regular care to perform at its best. Here are some key reasons why water heater service is essential:
Improved Efficiency
A well-maintained water heater works more efficiently, using less energy to heat water. This can lead to lower utility bills, as your system won’t have to work as hard to produce hot water.
Increased Lifespan
Routine maintenance helps extend the life of your water heater. By preventing issues before they become significant problems, you can avoid costly replacements and keep your water heater in good working condition for years.
Safety Assurance
Regular inspections and maintenance help ensure your water heater operates safely. Faulty water heaters can pose risks, such as gas leaks or dangerous buildup of sediment, which can lead to malfunction or even cause fires.
Consistent Hot Water
A properly serviced water heater provides a steady supply of hot water when you need it most. Whether it’s for a warm shower or filling up a bath, you can count on your water heater to perform efficiently.
Common Signs Your Water Heater Needs Service
If you notice any of the following issues with your water heater, it may be time to call Pipe Doctor Home Services, Inc. for professional service:
Inconsistent or No Hot Water
If your water heater is producing inconsistent hot water or no hot water at all, there could be an issue with the heating element, thermostat, or sediment buildup inside the tank.
Strange Noises
Sediment buildup in the bottom of the tank can cause popping, banging, or rumbling noises as it heats. These noises are a sign that your water heater needs to be flushed and maintained.
Water Temperature Problems
If your water heater is producing water that’s too hot or not hot enough, it could be a sign that the thermostat is malfunctioning or that there’s an issue with the heating element.
Water Discoloration
If the hot water coming from your faucets is brown or rusty, this could indicate that your water heater’s tank is corroding, and the unit may need repairs or replacement.
Leaks Around the Unit
Any water pooling around your water heater is a cause for concern. Leaks could indicate a damaged tank or faulty connections that need immediate attention.
Increased Energy Bills
If your energy bills have spiked unexpectedly, your water heater may be working harder than necessary. This could be due to inefficiencies in the system that require professional attention.
Our Comprehensive Water Heater Services
At Pipe Doctor Home Services, Inc., we provide a full range of water heater services to meet the needs of homeowners in Woodmere, NY, and nearby communities. Here’s how we can help:
1. Water Heater Installation
If you’re in need of a new water heater, we offer expert installation services for a variety of systems, including:
Tankless Water Heaters
These energy-efficient units provide on-demand hot water without the need for a large storage tank. Our experts can help you choose the right size and model for your home.
Traditional Tank Water Heaters
Whether you need a replacement for an old unit or are upgrading to a more energy-efficient model, we provide reliable installation services for traditional storage tank water heaters.
Hybrid Water Heaters
Combining the benefits of a traditional tank with heat pump technology, hybrid water heaters are highly energy-efficient and ideal for households with higher hot water demand.
2. Water Heater Repairs
If your current water heater isn’t working properly, our skilled technicians can perform thorough diagnostics and provide efficient repairs. We can fix a variety of issues, including:
Faulty thermostats
Broken heating elements
Sediment buildup
Leaks and corrosion
Gas and electrical issues
Our team is trained to repair all types of water heaters, including gas, electric, and hybrid models. We use only high-quality parts to ensure long-lasting repairs.
6 -
Checkered Flag Plumbing Co.: Trusted Cornelius Bathroom Plumbing and Your Local "Plumber Near Me" Solution
At Checkered Flag Plumbing Co., we pride ourselves on offering high-quality plumbing services to homes and businesses in Cornelius, Denver, Charlotte, and surrounding areas. Whether you need expert Cornelius bathroom plumbing services or you’re searching for a "plumber near me," we are your go-to local plumbing solution. Our licensed and experienced plumbers are committed to providing reliable, affordable, and efficient plumbing services to ensure that your plumbing systems function seamlessly.
Cornelius Bathroom Plumbing: Keep Your Bathroom Running Smoothly
The bathroom is one of the most essential areas of your home, and any plumbing issues can cause significant disruption to your daily routine. Whether you need a simple repair or a major installation, Checkered Flag Plumbing Co. specializes in Cornelius bathroom plumbing services to meet all your needs.
Our Cornelius bathroom plumbing services include:
Toilet Repairs and Replacements: A malfunctioning toilet can cause major inconveniences. We offer expert toilet repair services for issues like clogs, leaks, and running toilets. If your toilet is beyond repair, we can also help with efficient toilet replacements.
Shower and Tub Repairs: Whether your shower has low water pressure, leaks, or clogged drains, our plumbers have the expertise to diagnose and repair the problem quickly. We also handle bathtub repairs and installations, ensuring your bathroom fixtures are in optimal condition.
Faucet and Sink Repairs: Leaky faucets or clogged drains can lead to water waste and frustration. Our team will repair or replace faucets, sink drains, and other plumbing fixtures to restore full functionality to your bathroom.
Pipe Repair and Replacement: Plumbing issues in the bathroom often arise from damaged or corroded pipes. We offer pipe repair and replacement services to prevent water damage and ensure the proper flow of water to your bathroom fixtures.
Bathroom Plumbing Installation: If you're remodeling your bathroom or installing new fixtures, we offer professional installation of bathtubs, showers, sinks, toilets, and more. We ensure everything is installed to code and functions properly from the start.
At Checkered Flag Plumbing Co., we understand how important it is to have a fully functional bathroom. That’s why we offer reliable and affordable Cornelius bathroom plumbing services that meet your specific needs.
Searching for a "Plumber Near Me"? We’re Here to Help!
If you’re searching for a "plumber near me" in Cornelius, Denver, Charlotte, or surrounding areas, look no further than Checkered Flag Plumbing Co.. We are a local, trusted plumbing company offering fast and reliable services to homeowners and businesses.
Here’s why we’re the "plumber near me" you can count on:
Local Expertise: As a locally owned and operated plumbing company, we understand the unique plumbing needs of our community. Whether you're in Cornelius, Denver, or Charlotte, our team is familiar with local plumbing systems and can provide the best solutions.
Prompt, Reliable Service: We know how frustrating plumbing issues can be, which is why we prioritize quick response times and efficient service. When you call us, we’ll show up on time and resolve your plumbing problems quickly and professionally.
Experienced, Licensed Plumbers: All of our plumbers are licensed, experienced, and equipped with the latest tools and techniques to handle any plumbing issue. From bathroom plumbing to emergency repairs, we’ve got you covered.
Affordable Pricing: We believe in offering high-quality plumbing services at prices that won’t break the bank. We provide transparent, upfront pricing so you know exactly what to expect without any hidden fees.
Emergency Plumbing Services: Plumbing problems don’t always happen during business hours. That’s why we offer emergency plumbing services, so you can count on us to be there when you need us most, day or night.
Why Choose Checkered Flag Plumbing Co.?
Comprehensive Plumbing Solutions: From Cornelius bathroom plumbing to leak detection, pipe repairs, and more, we offer a full range of plumbing services to address all your needs.
Customer Satisfaction Guaranteed: Our top priority is ensuring that our customers are completely satisfied with our work. We stand behind every job we do and strive to exceed your expectations with every service.
Fast Response Times: When you need a plumber, you don’t want to wait around. We offer quick, reliable service to address your plumbing issues promptly and effectively.
24/7 Emergency Plumbing: Plumbing emergencies don’t follow a schedule. That’s why we offer 24/7 emergency plumbing services to get your system back in working order when you need it most.
1
