Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

ShoulderDaemon posted:

In Haskell, this is broadly how the order of operations actually works, because return is actually a value-lifting monad constructor function and function application has higher precedence than any infix operator.
I had a habit of this in C because of this reason. Under some old, buggy compilers (that I had to support and code for with extremely stringent coding standards) some genius managed to place the precedent of specifically the return keyword to be higher than that of other operations. And the compiler was no longer being supported... by anyone. Standards, who cares about standards, right?

Working on proprietary legacy software has made me code with such paranoia about the compiler loving up now that I'm not sure if I can ever be as fast as I used to be.

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

fansipans posted:

Ugh... why is this page taking forever to load?!?!?


Click here for the full 800x587 image.


oh ..... dammit.
I was working with this one person that would make research report results in an HTML file in Netscape Composer. I saw her load up the stuff in the browser and was wondering why it was taking about 20 seconds to load on a really beefy UltraSPARC workstation. Eventually she sent me the actual report for me to look at and what I saw was that. I wrote a Perl script to filter out those nbsp elements and the file shrunk from about 15 MB to about 100KB. She has a PhD in electrical engineering and is an IEEE fellow. The worst part is that she's supposed to know Perl pretty well since that's what half her experiments were in and know a bit about HTML. Ugh....

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Ryouga Inverse posted:

To be fair, I'd be pretty pissed off if I had both sexes and you forced me to pick one.
I suppose this is also the point where people in older systems would have written in "M T W Th F S Sun" for "Sex?" and we'd need a tuple to store something supposedly simple like one's sex.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Avenging Dentist posted:

Or that they expected you to write a simple parser instead of using a regex.
I think they expected you to submit the e-mail address to a web service that validates the address for you. Because I'd almost rather write a new TCP stack than try to write that regex.

Also, I think that regex should be treated like a magiceye picture and perhaps it's all a cruel joke and you get goatse'd.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Every time I see all those Java WTFs brought from some government programmer, all I have to imagine is how horrible the C/C++ version of that would become and my brain crashes and reboots.

TRex EaterofCars posted:

You could do it with CGLIB or ASM.
Given the quality of work we've seen from this individual, I would strictly advise them to not use either of those two to avoid blowing the gently caress out of their system in a pile of gibberish.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Ryouga Inverse posted:

What exactly is it about the for-switch loop that causes it to spread so widely?
I see this happen when I write something during test and in practice it's a simple iteration:

code:
for(LoopVariable i in collectionC) {
  switch(i) {
     case...
  }
}
The underlying psychological reasoning is surprisingly close to why people overengineer solutions - to anticipate boogeyman problems and not adhering to the principle of YAGNI.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Dijkstracula posted:

But we're talking about languages, independent of any real-life machines. It's what the grammar can express that we're interested in, and not technicalities like sizeof(void*) or memory addressibility.
That's the real crux of the problem. No real computer is a true Turing machine, so we shouldn't be using pure theoretical terms to describe Turing Completeness for real machines by the principle of transitivity. For example, if a language spec does not allow infinite revisions or extensions, I'd say it's pretty much not Turing complete.

Regardless, none of this helps me get porn to my computer faster and is thus meaningless.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
scanf("%s",f);printf(f); certainly has a format string vulnerability though. But in that context, no, none.

Unparagon posted:

pointer mishaps and SQL abuse
I am never downloading an app from the app store again.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

rjmccall posted:

2. The import system lacks shortened qualified import, which turns name collisions into minor catastrophes (because everyone uses prolix package names), which means you see some really silly workarounds like Swing's J prefix on every single class in the library.
The worst part of this all is that classpath collisions still exist all the time and we wind up with the Java equivalent of DLL hell, which sensible package names can solve on their own. For all the ridiculous identifier prefixing and suffixing schemes people concoct, I've yet to see people actually do anything reasonable like renaming packages properly so that classes don't pound on each other's namespaces like lobotomized monkeys. If I have to write another classloader because of package name idiocies, I'm sending piles of poo to Guy Steele.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Vanadium posted:

It needs to plug the type T into the array type at some point so RTTI can proceed to ask for the array's type. Which does not work if T gets erased.
It puts the type into the array or it gets the erasure again.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Mustach posted:

Gradian: The GNU radian
...with file extension .gr8

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Avenging Dentist posted:

A real man would use the GCC frontend with LLVM to compile to (optimized) C and then compile with the old-n-busted compiler you've got.
I used to do something similar when working on some really obscure archs (they're not made anymore I believe) like BattleMaster here. The old-n-busted compiler's bugs must be dealt with somehow, and trying to be a real man never got my projects finished before either. There's also some cutesy bugs that you may have to deal with that writing a different frontend would only obscure.

For writing embedded poo poo that only fits into maybe <128KB of total memory, the complexity / legibility of the code isn't as big of an issue as it would be for much larger systems - there's only so much code you can write in that space (unless you get into awesome mutative poo poo like Synthesis OS, but 128KB hardly has room for a process scheduler). With that little bit of space you're not exactly about to write a TCP Vegas implementation or anything for your tiny web server. On the other hand, I've usually resorted to just going with straight assembly in those situations, which negates the point of LLVM / compiler usage anymore. If you're working with microcontrollers and really small CPLDs, you're probably better off staying with assembly rather than C if you're doing anything serious, old, and proprietary as gently caress.

I dunno, writing poo poo just to keep it aesthetically modern when it's targeting completely outdated platforms that nobody cares about seems like a waste of time to me. And I'm someone that loves to tackle poo poo just for the sake of flexing my kung foo.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Incoherence posted:

Another way to make people crazy: if you ever have an opportunity to write a 4-level nested loop, use the variables i, ii, iii, and iiii.

The real WTF is, of course, the fact that you're writing a 4-level nested loop, but that's another story.
If you're dealing with 4-column matrices, it can be pretty common. I normally use t,u,v,w in those cases because when iterating the indexes really typically refer to vectors. So you'd get expressions like A[u] + B[v] - project(B[v],M)

I kinda miss the simple elegance of mathematical programming :unsmith: loving enterprise Java :smithicide:

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Flobbster posted:

I like that the helper function they wrote to handle the null string case requires about twice as much typing as the expression itself.

code:
str = StringUtilities.AssignNotNullString(str);
str = str == null ? "" : str;
Actually, if you have code completion helping you, it winds up being a matter of typing out Stri<C-space>.rear end<C-space>(str) so it's not so bad and it doesn't mean you have to reach for the = key either. The downside is that it makes your code look more verbose when it's really not. This is what tends to happen in a "verb-heavy" language like Java because its expressive constructs are so primitive.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Ryouga Inverse posted:

Yeah, checking in commented out code is terrible. You're using source control for that reason, just take it out.
If you're doing an Agile development model, you'll be checking in code so often you'll probably hit a point where you'll just check it in and fix it up in another commit happening in only a matter of hours while you work on it. I typically check in commented out code when I'm about done for the day or because I'm completely stuck / having a brainfart and could use a kickstart the next time I look at it, but it should be obvious to anyone looking at it why it's commented out. Everyone works differently and so long as it works, I don't see what's wrong.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

shrughes posted:

It's always weird to read things like these, go "WTF?", and then remember how most people still use revision control systems.
Yeah, it's kind of why I think there should be an anti-Pragmatic X series of books - essays on how and why code looks and is created in the wild - under stress, pressure, and just lack of foresight moreso than sheer incompetence.

Ledneh posted:

I tend to agree with you, but as the guy who does a lot of the team's source control stuff, a message to my team: please god just use block comment constructs, I don't care if it's /* or #if 0, just don't use // everywhere :(
For the case of Java, you don't have much of a choice, and if you use Javadocs, you really don't have much choice but to use // because of nested comments not being supported. My rule is // or # comments that start a line are for block comments only. Problem is, a lot of text editors do an inline comment after a bunch of whitespace to match indenting by default so I'm kind of alone on this.

If you're using Java at work though, you probably have bigger problems to fry than how code is block commented out... like fighting the deep-seated urge to make a noose out of your belt every day.

Ryouga Inverse posted:

Don't check in commented out code because you're half done with it. Check in only code that builds.
Yep, that's part of Agile - make sure the build always loving works at a bare minimum (why this isn't a principle in general or loving obvious in industry is beyond me). I was mostly saying that it's alright to check-in code that's commented out if you basically put a "under construction, here's what's shaky and don't step on these parts" sign up and if it's temporary. In practice, what I've seen happens is people leave TODO comment blocks for ages and ages and it never gets done - it's just not as common with Agile teams.

fletcher posted:

Three bear continuous integration system
Continuous integration is loving fantastic, cheap in every interpretation of the word, easy, and plenty useful for any team. It also gives me excuses to make fun of coworkers or to scream "I got syphilis, yay!" at work and completely freak out anyone.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

shrughes posted:

See, if it's under construction, it should just go in some private branch. Why don't you use a separate branch for every unit of change you're working on?
Partly because it effectively announces any changes I make that others may rely upon and so they can let me know if there's anything they disagree with faster than if I was in my own little microcosm of the build. That is part of Agile methodology as well. For a really small team, it's not really worth the hassles of private branches and it's just easier to just yell at someone when things bork. If I was on a far larger team, I'd certainly have private branches for sub-projects and efforts, but the way we have works just fine.

Oh, and as mentioned, not everyone has DVCS. Hell, we just moved to Subversion last week. For smaller teams with few dependencies per contributor in the first place and everyone doing work at work really, DVCS is not of much use for us.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

mr_jim posted:

I don't know if this has been mentioned yet, but I just found out that according to the C standard, a[i] and i[a] are equivalent.
...
Yep, although I'm pretty sure you'd get clobbered over the head for using the lesser known form in any large body of code. I'm not exactly sure what the underlying reason for this was though. Maybe it was to compete for Fortran users or something? (doubtful it'd help due to C's array row-column conventions that make it awkward for the math purists)

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Dijkstracula posted:

Fortran's array indexing, barring specifying index ranges, isn't that different than C's. You certainly can't do i[a] in Fortran, so I don't know what you mean. :confused:
I'm talking about row-major v. column-major which was a bit important decades ago for marketability reasons to mathematicians that don't actually know programming itself as a profession and that it's not a big deal if you do the right matrix transforms.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I'm going to just put out a minor coding "horror" I used to try to write in C when I was just starting out as a wee lad.

code:
if (low <= x <= upper) {
  /* do stuff */
}
Everyone kept telling me programming was math so I tried to write an expression and then programmers tell me programming isn't math :smith:

cliffy posted:

Taking unfiltered user input and using it as an xml tag. Strings starting with numbers? No problem! Spaces? Throw them right in!
There's a good number of very expensive enterprise software products I won't name that do this to support custom datatypes.

Recently, I wound up having to submit escaped / wrapped XML to a web service call because the visual programming language I've been working on sucks at arbitrary length "arrays" (they don't exist - everything's a string!) and parameter argument names are static and would have to be written in the rough coding equivalent of:
(int,string,string,string,string,string) foo(arrayElem0,arrayElem1,arrayElem2,arrayElem3,arrayElem4...) {//dostuff}

So the web service provider gave us a new call that let me take the XML I'd have given to the other call and now it looks like...
<wrappedrequestdata>
&lt;requestdata&gt;&lt;blah attrib="fuckmejesus" /&gt;&lt;/requestdata&gt;</wrappedrequestdata>

We managed to make XML-RPC even less readable through this process and take up quadruple the bandwidth (and about 25% more memory on both the client and server). Sadly, this isn't the worst case of inefficiency in our system.

I've tried to write out an EBNF for the visual language and all but every time I've looked at it, it just made me sad that I've spent 4 years of my life working on trying to improve this poo poo. I've gotta get out of this poo poo or actually make it better, ugh. loving proprietary software with no user community because of paranoid customers that refuse to ever share code.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

BigRedDot posted:

You gotta be sure.
Almost looks like a library where the method names were automatically generated, actually.

Speaking of which, I had to integrate some stuff to a library where the methods names could change while the general boilerplate patterns were identical, and I did some analysis and found it's basically a query language in its idioms and dataflow model. Turns out it was taking a SQL database schema and generating methods according to the schema as it walked the tree and presented that to me as a client-side library. I had created a declarative language for query data to perform the integration, so basically here's what it did in the end:

1. I parse user inputs, which I defined as a declarative query language with hierarchical elements that looked a lot like CSS
2. I generate intermediate code to walk library and object graph of the API as compile-time validation (well, pre-processed because by definition it couldn't be compiled in our system - we had no choice but to do dynamic, but I could have easily converted to a compiled language)
3. Client-side library turns it into SOAP under the covers
4. Receiving server turns SOAP into its own intermediate language to move between a procedural library it exposed to a query language
5. Turned it into different SQL variants depending upon db backing

The language I wrote up is apparently the only one that can handle all cases of customizations to the database schema because it's dynamic, and almost everyone that uses the server-side software has custom Java code written by consultants at $250+ / hr because nobody hires full-time developers to do this poo poo in reality.

I've gotta get out of enterprise software somehow

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
That won't really work in Links, my browser of choice.

baquerd posted:

Any advice to polish this guy further?
Have the color mappings managed by a CMDB so that if someone tries to change the colors without following designated enterprise systems policy, you'll get 15 warning e-mails (one for every affected foreign key constraint) and your boss will fire your rear end not for that but because a monitoring agent on a watchdog timer made it look like you cost your company $10M in SLA agreements because your action caused the database to perform a table lock, which caused the watchdog process to fail because it couldn't get a write lock because some moron DBA configured the CMDB to use the same database as the monitoring agent.

I've gotta quit my job. It's not that far-removed from what keeps me from writing code every day :(

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I thought the for-case pattern starts becoming valid when you start running things out of sequence like in a series of random tests and may be useful to show that they're different test cases with so much test coverage of inputs:

code:
int ncasestried = 0;
while (ncasestried < whatevernumber) {
  int caseNum = getRandomValidCaseNumber();
  ncasestried++;
  switch (caseNum) {
    case CODE0:
    break;
    case CODE1:
    break;
    case CODE2:
    break;
    default:
    // unhandled case
  }
}

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

NotShadowStar posted:

The challenge is on: somebody find a blog post containing somebody bitching about this limitation. The real ultimate horror will have been found.
This is a commonly reached limitation. Usually it comes up when JSP is mentioned (although it has to do with method size limitations). That's the root of the horror.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Ithaqua posted:

Anyone who does something like that in any language should have the living poo poo beaten out of them.
There's a number of enterprise software products that let you embed in small snippets of code hooks (JSTL style normally) that have form fields in the form of text boxes rather than <textarea> style page entries. And as part of their "security" measures you're limited to something arbitrarily small like 2048 characters for your code input. When I worked with them I'd normally write code in an external text editor and pass it into a minification tool and get a character count before pasting it in.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I thought a lot of the point of HAML was mostly about making really drastic structural changes to HTML (re-indenting and pivoting about tables, for example) easier than with most templating languages. I could imagine using it for writing out some HTML shorthand for a quick layout in the early stages and then when I'm done iterating through different designs I'll use an actual templating language like I dunno JSTL or Jinja or whatever.

Flobbster posted:

I'm not big on Coffeescript for the same reason, despite the positive things I've heard about it. I don't find Javascript that difficult to express myself in. I haven't dived too far into the latest version of Rails yet but when I created a placeholder project and noticed that it had Coffeescript assets by default, it made me a little sad.
From what I've seen of Coffeescript, its primary use case is in helping write more OOP-like code using Javascript without getting lost in closure after closure. The current legacy codebase I'm in now could use some automated help in scope for sure and dojo's hitch and ExtJS's equivalents help. A lot of the helpers that can be done with underscore can cut down on the number of extra modules in the project.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I didn't realize that we'd move on from emacs vs. vim wars to graphical text editors vs. console text editors, but I suppose this religious discussion is rare enough.

I use vim bindings because I hate using the mouse for exploring code, but for exploring a visual space of some sort I'm all about mouse controls.

I'm just terrible at keybindings for my IDEs and editors for compiling because switching between OSes and environments frequently for over 15 years has permanently damaged the part of my brain that can learn new keybindings.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Always Be Considering (offers) should be the mantra for ambitious folks. At the very least, interviewing skills are not the same as work skills. And lastly, it might be painful but you may have to ask yourself how you got lumped in with Bad Engineers and do what you can to avoid that situation again. In most cases, you should be able to do a 9-to-5 easily enough while taking time off for some interviews or to work on side projects.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I didn't read that statement as a judgement for your situation as much as commentary for others.

I've seen plenty of decade-long projects with terrible code exited successfully because the executives were well-connected enough to get the company sold to a sucker buyer somewhere. I'm including very well known tech entrepreneurs supposedly known for "quality", not just some small-time whatever software companies. I've seen companies with at least 4 total re-writes of the flagship software manage to plod along after small fundraising rounds and/or lobbying, too. If companies like Theranos can survive for years with basically a non-functioning product we can only guess how long useless companies can survive from our vantage points as employees far from the C-suite or board of directors.

Edit: to contribute a coding horror, I didn't realize until after I got off a whiteboard I wrote out a coding horror... O(n) space algorithm, O(n log n) time. It could have been done without pre-sorting anything in O(1) : O(k), k being a small constant. Ugh

necrobobsledder fucked around with this message at 23:04 on Oct 14, 2016

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

taqueso posted:

The algorithm is run once (1) each time it sorts a list. Thus it is O(1).
Close, there is one list being sent to the algorithm, so its input size is constant.

I'm loving the idea of Donald Trump coder as a gimmick Twitter account

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
The thing that bugs me about bank security is how they can get away with so many bad password rules for retail banking sites while everything after that point (until it reaches some 45-year old COBOL program) is second in paranoia only to DoD standards for encryption and security. It seems extremely short-sighted and hypocritical to be so tight on security in places perhaps less susceptible to massive attack vectors.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Then again, most of the population has piddly little bits of cash in their accounts so maybe for retail banking it's more cost-effective to keep PEBKAC problems down than to risk millions of $150 balances to hackers. Most of the big credit card and bank heists have been conducted against their internal networks rather than Internet endpoints.

A liberal interpretation of Jython I suppose.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost

Biowarfare posted:

i've had a few methods in code that was handed to me that will sometimes work if you suppress errors and run once or twice

it had a bunch of try/catches that basically ignored the entire catch and only started logging errors if it failed about 14 times in a row
For situations like that I think the call pattern is best described as a "debounce" that executes a function and returns a smoothed out result depending upon desired aggregation.

I have no idea where that kind of call pattern makes sense outside anything to do with real-world user inputs, really noisy system events, or a process experiencing critical system failures.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I don't see how that's unique to game dev whatsoever. You see the same with enterprise bullshitware software even where you deliver a product half the time just for a press release to get some customer engagement and even if you literally cure cancer by running your software they'd take about 4 weeks minimum before they even saw your software in a real-life demo situation. So in that case, it's fine to "release" some software as long as you have sufficient time to fix it before it actually is used anywhere. You don't get second chances much with App Store based releases of course, though.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
String conversions are strange, but this is consistent at least I guess?

+(100 + "e-2") -> 1 (number)
+(100 + "5") -> 1005 (number)

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Bad software being so common and written by people that never wanted to write software (most EEs) is why I left embedded software. Thanks for the reminder.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
If you're messing with configuration files, you should be using some actually known configuration file format with some parser libraries or something like Augeas that can convert to and from different formats for whatever data structure your abominable program is using and so that you can define a grammar of some sort.

xzzy posted:

Working with puppet for 5+ years has trained me to always leave a comma after the last item in a list. The only effect it's had is making me painfully aware how many languages/parsers freak the gently caress out when you do that.
I stopped using that convention to make diffs look cleaner because it only works well as a rule if JSON, Javascript, Ruby, and Python are all the syntaxes you ever use at work. No go for me in literally everything else I use daily. I'll accept slightly dirtier commits for my general-clusterfuck infrastructure over the risk of broken code because of trailing commas in a collection construct.

I also saw someone argue that it makes it easier to write templates without needing to use a join function. However, I think there's no templating system I'd ever use in production that won't support using a ubiquitous foo.join(",") syntax that's easier to read than something like for(e in foo) { e + "," }

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
I summarize it as "Unix timestamps do not address all the problems in this article and the follow-up article"

This doesn't mean that everyone should go crazy and use protocols like PTP but if you know that Unix timestamps aren't sufficient then you should be able to articulate where it falls short for your use cases. For what I've been working on, trying to address accuracy and precision in timing within even a millisecond is hard to do on commodity commercial compute systems because virtualization basically ruins everything, NTP's correction systems can make your accuracy look real wonky, and everyone addresses flaws in timekeeping systems differently (AWS and GCP do not handle leap second adjustments exactly the same, different NTP servers available implement yet other ways). Then there's issues with most programs not using monotonic clock syscalls for externally visible code (see: log files v. internal timers) so I can't rely upon most programs for their reported timestamps when it comes to accuracy although protocols typically address precision ok enough for within a few milliseconds.

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
Time being politicized is also what makes it a horror. Daylight savings time changes by congress, for example, and especially just the names of months of the year back to ancient Roman times all leave their mark upon the world for a long time.

If you look at all the years and dates Oracle supports (the database) they include pre-Gregorian calendars, lunar calendar (different civilizations' like Cherokee vs. Chinese), and I think even a goddamn Mayan calendar. Someone wanted that and Oracle felt like they were worth writing that crap for evidently. I can only imagine who the hell wanted these calendars in an RDBMS of all places.

Adbot
ADBOT LOVES YOU

necrobobsledder
Mar 21, 2005
Lay down your soul to the gods rock 'n roll
Nap Ghost
It looks like literally all of those dependencies are to test that constant across a range of browsers. Maybe the point of the package is to show the horror that is JS?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply