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
1337JiveTurkey
Feb 17, 2005

Zaphod42 posted:

No, the number 31 is in fact a footnote and is not an exponent

There's no footnote 31 so the only rational explanation is that it's an exponent of 3 and footnote 1 applies.

Adbot
ADBOT LOVES YOU

1337JiveTurkey
Feb 17, 2005

Space Whale posted:

So why do banks not just use bignum or arbitrary precision already?

PICTURE IS "$ZZZ,ZZZ,ZZZV99" has always done that.

1337JiveTurkey
Feb 17, 2005

UPDATE: 🌏 now includes the Nine Dash Line which was inadvertently omitted in previous versions of the emoji.

1337JiveTurkey
Feb 17, 2005

Actual honest-to-god engineers gave us load-bearing o-rings on the Challenger. I’m not a software engineer because I don’t believe that continuous differentiable functions can describe how a program works.

1337JiveTurkey
Feb 17, 2005

Zopotantor posted:

I've always been fond of "lasciate ogni speranza, voi ch'entrate".

I think I've left that particular line on a comment for some mega class that I never was able to effectively refactor.

edit: For people who haven't seen it before it translates roughly to "All Hope Abandon, Those Who Enter Here" from the gates to hell in the Divine Comedy

1337JiveTurkey fucked around with this message at 04:02 on Jan 3, 2020

1337JiveTurkey
Feb 17, 2005

Making a docker image is about as anodyne as making a zip file and not some symptom of things being profoundly wrong with the world anymore than everything else going on right now.

1337JiveTurkey
Feb 17, 2005

COBOL is bad but it’s more that it doesn’t work like a modern language where there’s a small set of language constructs that are put together in a wide number of ways. Doing that requires a parser more sophisticated than machines of the time could handle so they’re simple state machines that change states based on oodles of keywords. To give an idea of what it feels like, think of a procedural SQL since I describe SQL as relational COBOL.

1337JiveTurkey
Feb 17, 2005

Singletons are also helpful with hierarchical logging where there’s one root and multiple children that all implement the same interface. Related to DI a singleton doesn’t even need to be globally single but can also be a single instance per user or per whatever, just easily grabbed as “the instance.”

1337JiveTurkey
Feb 17, 2005

If your usual language doesn't have enough varargs for you, Scala allows multiple (curryable) parameter sections. So a normal declaration would be:

code:
def touch(butts: Butt*): Unit = {
	// Blah blah blah
}
But it's also possible to do this:
code:
def touch(butts: Butt*)(moreButts: Butt*)(yetMoreButts: Butt*): Unit = {
	// Blah blah blah
}
Another interesting feature of Scala parameter blocks is that if the last parameter block is a => SomeType (a thunk taking no parameters and returning a value), you can use special syntactic sugar to write it as a plain old brace delimited block.

code:
def time[T](timeThis: => T): T = {
	// Some timing code that calls timeThis.apply() in the middle.
}

time {
	calculateFoo();
}
It's nifty but Scala has a lot of nifty syntactic sugar that has got to be hell for people who've never touched the language before.

1337JiveTurkey
Feb 17, 2005

Packed decimal format as opposed to packed binary format or whatever. If technical limitations mean that you need to fit several logical fields into one word or something it can sort of make sense.

1337JiveTurkey
Feb 17, 2005

Space Gopher posted:

When we all die and go to hell, there will be plenty of OpenXML serialization and deserialization work for everybody. No need to rush the process.

Doubly so if you are integrating VBA macros into the loving thing.

1337JiveTurkey
Feb 17, 2005

PHP can do a lot of things but so can any other language. For many cases those other languages can do it better, especially with error handling that’s not trying to screw you over if you let it. Why give it the chance when Python or some other scripting language is there?

1337JiveTurkey
Feb 17, 2005

Falcorum posted:

The real horror there is expecting a reply to a tweet at 10pm (and also the password reset implementation, jfc).

There should really be a public list of security fuckups, like that bank that truncated your passwords to 8 chars in some situations.

You're probably looking for Common Vulnerabilities and Exposures. https://cve.mitre.org/

1337JiveTurkey
Feb 17, 2005

I've done probably a hundred plus data integrations over the years. CSV is fine for trivial stuff that you don't care if it breaks once in a while or just completely shreds certain data. If you actually care about the data, there needs to be something more rigorously defined.

1337JiveTurkey
Feb 17, 2005

Java is for programmers who think the field peaked 20 years ago, Go is for programmers who think it peaked 40 years ago.

1337JiveTurkey
Feb 17, 2005

Scala macros have been used to translate language constructs into typesafe representations of those constructs in other languages at compile time. One example is Slick, which turns Scala expressions into equivalent SQL code. There's also another for OpenCL that I can't remember off the top of my head which turns Scala expressions into shaders that can run on the GPU.

Having SQL or GLSL embedded in with the rest of your codebase isn't that messy but it's nice to just have a plain old for loop that you pass to a special executor and poof it's running on your GPU without having to switch to glorified C.

1337JiveTurkey
Feb 17, 2005

Honestly it's less of a horror than everyone standardizing on the same minigame to protect their data and money in the future.

1337JiveTurkey
Feb 17, 2005

One thing to keep in mind is that this being Javascript there may be circumstances when you genuinely want the bugs.

1337JiveTurkey
Feb 17, 2005

Falsehoods Programmers Believe About Business Logic

That anyone cares about whatever pathological corner case you dug up to justify not adding "search for last name" as part of this sprint.

1337JiveTurkey
Feb 17, 2005

I'm sort of conflicted because I like logic programming but I've never seen rules engines get used in an organization because they're all fans of logic programming. Where I've been it's because they wanted a scripting plugin but didn't know about one so it's like "Let's use Drools because it's for business!"

But for situations where it's logic that sort of makes sense in the database but you can't put it in the database because of whatever reason, there's a lot of potential.

1337JiveTurkey
Feb 17, 2005

Qwertycoatl posted:

In my experience rules engines are made by people who mistakenly believe that if you have a rules engine then non-programmers can use it

I think the problem is that they're sold by people who believe that because most people think that procedural programming is the only sort of programming that exists. No procedures means no programming. If they use objects it's to create an instance that then has the procedures as methods. Functional programming they just don't get why it has the limitations it does. Finally logic programming just doesn't make sense at all to the point that most professional programmers can't effectively use it.

The people who actually make rules engines are people who are way more into logic programming than everyone else and really wish that other people could see the light of how much it simplifies things. I used an event-driven nondeterministic finite state machine called SCXML (at least that's the spec) and it drove me up the wall that everyone was looking at it as this sort of flowchart program when it's the exact opposite. It's actually really meant for handling all the possible complex state changes of a graphical UI or the like and not some stupid flowcharts that they hacked the whole thing into. So much wasted potential.

1337JiveTurkey
Feb 17, 2005

Biowarfare posted:

if you have a peloton it will probably be #1 on phone-home telemetry

If you think about it, checking every five seconds to see whether you're grinding up a toddler is almost as good as not doing so in the first place.

1337JiveTurkey
Feb 17, 2005

wolfman101 posted:

If your definition of success is to increase employee churn in the company, then yes.

I may just be having a mental breakdown but maybe that's really what the industry's definition of success is. Maybe it really is people who can see the humor in the insanity of the industry keeping the "I'm helping mommy" crowd of business analysts, project managers and CInOs employable without any really useful software resulting. I've ended up crashing and burning over and over from trying to make successful software and maybe it really is just some bullshit kabuki.

1337JiveTurkey
Feb 17, 2005

I feel like game programming is a somewhat special case here. For most general programming the pauses in modern GCs aren't that significant, it's just this thing that's carried over from the 1990s when it was more of a problem. A modern GC is going to have thread local allocation buffers so allocations are just incrementing a pointer, moving collection so actual garbage has no cost and only the absolute minimum possible work saved for a stop the world pause. Like if it's not enough for your situation, that's fair but there's a lot of situations where it's perfectly fine.

Additionally I think it's fine for memory to have different lifecycle semantics than other forms of resources and can be helpful in that sense. Take a situation where a program needs to get some data from a server at some URL. There's multiple independent threads that may need data from several related URLs but they can share the cached data if they hit the same resource within some time window. This is something where a separate object with a lifecycle independent of the threads to do the downloads (with explicit lifecycles for the network connection), parsing and reinflation of the data can save work for all the worker threads. It can then keep the resulting cache for its lifecycle and discard old data as needed.

Where GC is helpful is that this can hand references to its (presumably immutable) shared data without fears of that data being still live when it wipes it for staleness. Once the shared object is truly no longer touched it can be deleted safely but that's not clear to the program itself without a lot of communication between the threads or simply using GC.

1337JiveTurkey
Feb 17, 2005

At some point the distances relative to the amount of time measured just smear everything into a meaningless blur. Light travels about one foot in a nanosecond so at the datacenter scale, nanosecond level measurements if actually accurate turn into godawful physics homework problems.

Light travels about 186 miles in a millisecond so millisecond level measurements are getting blurry between datacenters or between a datacenter and a client even if both have "the same" clock as observed from a non-moving frame of reference exactly between them.

1337JiveTurkey
Feb 17, 2005

lifg posted:

You’re like half way to reinventing distributed systems with this post, and I say that with admiration. Specifically, “Time, Clocks and the Ordering of Events in a Distributed System,” which was inspired by special relativity.

That's probably because I've read some of the work that's built on that regarding partial ordering of events but never got around to that paper. (Available here for anyone curious) Intuitively having a distributed clock never seemed worth the trouble versus simply accepting the partially ordered nature of things but it looks worth a read. Thanks!

1337JiveTurkey
Feb 17, 2005

Spaces (ASCII 32) for separating words, unit separator (31) for separating minor components, record separator (30) for less minor components, group separator (29) for pretty major ones and file separator (28) for really major ones. It's not like we're using them for anything otherwise. :argh:

edit: My solution is even 7-bit legal. double :argh:

1337JiveTurkey
Feb 17, 2005

I worked for a startup years ago that believed the secret to high quality C/C++ code was using AI to find and fix bugs based on automated test cases. Imagine if you will a codebase with literally hundreds to thousands of test cases necessary to assure the correctness of the codebase without anybody ever running the software. Yet not all is well because for some reason all the developers who created these tests are incapable of fixing bugs that the tests exposed. They may malloc but forget to free memory but fail to understand the error messages that valgrind produces in spite of integrating that into the automated tests.

How about we use AI to randomly change the software in hundreds of different ways and then see which ones pass all the test cases? (Hence the need for all the test cases) Developers will clearly love some tool trying to do their jobs and won't call it glorified shotgun debugging. There were minor issues with integrating with everyone's build scripts that I was supposed to fix while our AI expert worked on uh, parsing C source code using neural networks. He figured teaching a network to parse English would be a good start. I'd suggested clang repeatedly but had no success. I'm forgetting a ton but that was a year of my life I'll never get back.

Adbot
ADBOT LOVES YOU

1337JiveTurkey
Feb 17, 2005

At least in Java it's possible to have enumerations implement an interface. I'd recommend at least considering that sort of thing although I know many people consider elaborate object oriented domain modeling its own sort of horror.

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