3 ms·
Debezium: reads mysql bin logs, feeds to kafka connect, then a kafka consumer, and then replicates given tables into a separate db. Wasted around 100 hours myse
by sethammons 7y ago
Debezium: reads mysql bin logs, feeds to kafka connect, then a kafka consumer, and then replicates given tables into a separate db. Wasted around 100 hours myself on it. As an org, we wasted closer to 2000 hours. Why? It can't handle 0000-00-00 dates due to a Java issue. They don't plan to fix it as it is "not their problem." It can't replicate cascade deletes. We seeded our replicated tables working through those issues and then the tables had different numbers of records. I could have written a custom data migration utility in the time wasted. I know because I have multiple times.
Chef: at one point, we had Chef Consultants come to help us with our monstrosity. They said that we had something more complex and full featured than anything they had ever seen and declined helping. I've lost weeks and weeks to fighting against what we eventually grew.
Sysdig: personally, I lost maybe a few hours. As an org, we lost hundreds on people trying to get it to work similar to Grafana. Sysdig, at the time, did not support math operations. How this got passed on down to engineering is a different story, but when you can't compute derivatives on counters, you can't make decisions based on rates of change, something we require.
Twisted Python: Factories with mixins where a variable you are trying to discover where it came from turns out to be a parent class's parent class's mixin's parent class's mixin's parent class. True story. Dealing with cases where someone raised an exception somewhere in the code years ago, but now the section you are working in, you realize you cannot use Deferrals because Twisted uses exceptions as control flow, and now the exceptions at some other part of the code trigger ErrBack code somewhere else. As for the python part itself, not knowing the actual type for the variable incoming on a function is a pain. String? Int? Slice? Who knows! Add some print statements or read a bunch of code to find out. Honorable mention to time lost on SQL Alchemy. I can write SQL no problem. Every time I have to do something in SQL Alchemy, I start with SQL which is done in 30 seconds, then I spend the next hour going over documentation and experiments to get the query to build via SQL Alchemy.
AnyEvent Perl: 40 functions deep and not having a method signature. Yeah, time to read through hundreds of lines of code with branches that could send any number of parameters down to your function that you are looking at, or put print statements to know _what_ has been stuffed into your parameter list. Large systems benefit so much from strict typing. 40 functions deep and you know _exactly_ what is coming into your function and what it should return.
Go Modules. I've probably not hit the 100 hours yet, but I'd not be surprised to be in the 20 hour range. The module system was rolled out shoddily in my opinion. We went from things Just Work(tm) to multiple environment variables and language servers and editor issues. All I want is "is a vendor dir there? Use it. Else, use GoPath." Can't have that though. With private repos, proxies, vendor directories, environment variables, and varying levels of support from editors, it is just a mess. With Go 1.14, modules are getting better, but I'm still fighting the proxy servers in combination of vendor directory and private repos. I _love_ Go. I hope it goes back to sanity.