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
kitten emergency
Jan 13, 2008

get meow this wack-ass crystal prison

coffeetable posted:

when i quote this elsewhere, should i cite it as [Cookie 2013] or what

lol if you cite anything from the forums, steal that poo poo like ur a gta protagonist son

Adbot
ADBOT LOVES YOU

Nomnom Cookie
Aug 30, 2009



coffeetable posted:

when i quote this elsewhere, should i cite it as [Cookie 2013] or what

nah I'm just stealin that joke anyway

Nomnom Cookie
Aug 30, 2009



suffix posted:

same, except a file compressor that tries every possible program and picks the shortest one that matches the file

ah, to be young and innocent and know nothing about runtime complexity

isn't that kolmogorov complexity

tef
May 30, 2004

-> some l-system crap ->

Max Facetime posted:

having just 4 verbs and all the nouns in the world makes for a terrible api. it's actually worse than not having the api in the first place, because not only do I still need to figure out how to do my one special thing, in addition I also need to figure out those verbs before getting to that

if you or anyone else is designing an api that provides all the nouns in the world and a few simple verbs needed to unleash the full creative potential in them, then one of verbs better be START_TRANSACTION and another ROLLBACK

help, bad apis are hard because i only have to understand four things and that's hard so we should have special snowflake apis for every loving minor change and thus avoid useful common ground

Zombywuf
Mar 29, 2008

Max Facetime posted:

it was really a reference to how in HTTP you can do everything with just GET, to the extent that the imperative word "get" becomes a formality or a matter of convention, or politeness like with the word "please"

Like how with Haskell you can do everything by passing around function pointers to do lambda calculus with church encoding?

If REST is about anything it's about not simply jamming your API into the transport layer in any old way and actually displaying a bit of taste in your design.

MononcQc
May 29, 2007

unless a function pointer can capture context and environment (or that a closure has no required environment), a function pointer =/= a closure :arghfist::mad:

Blotto Skorzany
Nov 7, 2008

He's a PSoC, loose and runnin'
came the whisper from each lip
And he's here to do some business with
the bad ADC on his chip
bad ADC on his chiiiiip
function pointers that capture context are known as "munction pointers" :tmyk:

Shaggar
Apr 26, 2006

tef posted:

help, bad apis are hard because i only have to understand four things and that's hard so we should have special snowflake apis for every loving minor change and thus avoid useful common ground

the apis you're writing on top of those 4 things are the real problem and will always be special snowflake that changes all the time. the transport and serialization are trivial and have been solved about 100 times

hackbunny
Jul 22, 2007

I haven't been on SA for years but the person who gave me my previous av as a joke felt guilty for doing so and decided to get me a non-shitty av

Mr Dog posted:

please post more windows things hackbunny

i know a decent amount about win32 userspace but that stuff about the innards of win32k.sys is amazing, in a morbid way

don't know what else to post, also everything I say may be inaccurate because it's been years since I've worked for ReactOS or on Windows code at all

on SSPI, I guess the only really interesting thing that's left to be said is how it's an example of Microsoft's boner for having identical API/ABI between user and kernel mode. usually it's limited to low level stuff, but it's cool/unsettling to see it in realtively high level APIs like SSPI. a similarly high level API that's almost 100% shared between user and kernel mode is the GDI driver API: in kernel mode, it's used for font drivers and optimized display drivers (display drivers are traditionally split into a hardware driver and a high level graphics driver that uses proprietary escapes to optimize some high level operations; Windows Vista added a further split but I'm unfamiliar with it); in user mode, it's used for printer drivers, and yeah, drawing to a printer driver is yet another case of kernel->user callback

generally though, the API compatibility is limited to two function groups: Nt/Zw and Rtl (the <subsystem abbreviation>FunctionName naming convention comes pretty much straight from OS/2, while the system runtime library being called "RTL" is a VMS thing - where the naming convention was an insane SUBSYSTEM$FUNCTION_NAME thing - and there you have Windows NT's heritage in a nutshell)

NtXxx functions are what are usually called "system calls" in other OSs (in Windows the term is "system services"): in user mode they are syscall stubs of the "put function number in register & trap" kind, in kernel mode they are direct calls into the kernel's executable (ntoskrnl.exe). there is no automatic capture of syscall arguments: each Nt call decides whether to capture/memlock the arguments based on the "previous mode" flag set by the trap handler. if the call came from user mode, the previous mode is set to user, and the system calls capture. this is a terrible design with a glaring flaw: what if you want to call a system call within a system call, passing arguments allocated in kernel memory? ordinarily you cannot: the previous mode stays set to user, so any nested system calls will keep believing the arguments come from user mode, rejecting arguments that were put e.g. on the kernel mode stack

enter the ZwXxx functions: in user mode, they are the same identical thing as NtXxx functions, while in kernel mode they are no longer direct calls, but syscall stubs. so when in kernel mode you need to call a syscall, you call the Zw variant, which goes through the trap handler a second time, which sets a previous mode of "kernel", which disables any probing/capturing/locking of arguments passed by pointer... and any access control checks. so there is no way to act on behalf of the user mode caller when you need to: ZwXxx calls always grant you full access to anything and everything always. well-designed subsystems provide lower-level equivalents to system calls that let you specify whether security checks should be performed, but even then you'll have to do all the probing/capturing/locking by yourself a lot of the time, unless you are a vanilla boring I/O driver with polite functions that fit into a few narrow categories. kernel mode development in Windows is a miserable slog of boilerplate code, unless again you fit into a narrow polite I/O driver category for which you can use the johnny-come-lately standard driver framework, or you drop insane cash for the third party frameworks, and I do mean insane. Windows (NT) is not a platform for kernel hacking and it never has been (unlike say the extremely tinker-friendly nature of message-passing Win32 or component-based COM/OLE)

Nt/Zw functions are not entirely garbage though. the API itself is very consistent and well designed, with notable exceptions (no real equivalent of select/poll the biggest for me). it's very biased towards verb/noun semantics (to the point that almost all functions names are in the NtVerbNoun form) and it sucks a little where it can't fit an operation into verb/noun

the RtlXxx functions are cakewalk on easy street in comparison. almost the full set is available to both user and kernel mode, and it's almost the same identical binary code. major notable difference: memory allocation. it's a pretty terrible API though, very inconsistent and organically grown, and not always does useful things. it's a kitchen sink of all kinds of functionality, from data structures to string handling to memory allocation to utility functions for handling some of the toughest system data types (the security descriptor stuff. my god). to the best of my knowledge, Microsoft does not have secret internal libraries that make it all better: all evidence suggests that they actually use the full naked horror of them and maybe even enjoy it, the sickos. I'm sure they looked downright sci-fi compared to the poo poo you'd find in SysV at the time, but objectively it wasn't that good. it's also a lot of typing

the single biggest upside of kernel/user API/ABI unification is that you can prototype your kernel mode code in user mode with relative ease. take my BS thesis for example: I implemented a mandatory access control policy for Windows, something of a world first if you can excuse the smug. since the Windows kernel doesn't expose the right hooks, and my school didn't have a source code agreement with Microsoft, I implemented it as a modification to ReactOS. since debugging on ReactOS was a dreadful affair, the whole thing was tested in user mode on Windows XP, with some glue code to simulate the kernel hooks. since building on ReactOS was a chore as well (buggy SDK, stupid compiler, obtuse build system), I just copied over a DLL compiled in Visual Studio that contained the implementation of the policy, and modified the ReactOS kernel to link to it. yeah, you aren't supposed to run code compiled in vanilla Visual Studio in kernel mode, but there is no magic to it and you can do it if you know what you're doing. thing was stable enough that on dissertation day I demoed it live (don't do it at home kids) without a hitch. actually, it took a little sleigh of hand to demo, because while working on it I discovered that the Windows architecture is, in fact, unsuited for mandatory access control, but to the best of my knowledge I was the first to document exactly why - usually, it's just presented as a matter of fact. but that's another story for another day

hackbunny fucked around with this message at 17:40 on Nov 25, 2013

Sapozhnik
Jan 2, 2005

Nap Ghost
i seem to recall that the power management ioctls within nt are a bit of a nightmare to deal with. reading the DDK documentation is like hacking through a rainforest with a machete, but the impression i get is it's rather rtos-ish passing "IRPs" around and doing everything in a non-blocking way, which is quite nice. except that kernel threads are, of course, pre-emptible anyway. i'm guessing they had to retrofit that once they hoisted the gui into the kernel and started calling back into user-space.

linux, by contrast, has clear roots in its student hobby project beginnings and blocking i/o in kernel mode is the rule and not the exception. irps don't exist, they're implied by the call stack. even now all the async i/o stuff is kind of grafted on (you still can't do async socket i/o afaik, just async file i/o, which has limited utility. doesn't help that the posix standard that linux sort-of-but-not-really follows uses signals as message queues. doing zero-copy i/o is possible but torturous).

also ugh i'm getting hella mccullough effect from this stupid loving stylesheet

thanks for taking the time to type that all up :)

Nomnom Cookie
Aug 30, 2009



then what happens when you set o_nonblock on a socket?

Max Facetime
Apr 18, 2009

tef posted:

help, bad apis are hard because i only have to understand four things and that's hard so we should have special snowflake apis for every loving minor change and thus avoid useful common ground

I know you're trying to troll but please consider: how would you do HTTP ROLLBACK by combining HTTP GET/PUT/POST/DELETE into a correct sequence?

is it impossible? are you sure? maybe there's some combination of additional headers that would do the job? maybe all that's needed to make a transaction is something like...

start transaction:
code:
PUT /hold/my_transactions?account=my&amount=100€
auto-commit:
code:
DELETE /hold/my_mytransactions
If-Not-Modified-Since: max-age=60
updates:
code:
POST /account/10001234?amount=50€
POST /account/10004321?amount=50€
rollback:
code:
HEAD /hold/my_transactions
Cache-Control: no-cache
and with all that sorted out, you now get to the point B) where you inspect the API and talk to the vendor of the API to figure out whether your vendor supports transactions

whereas without the simple HTTP GET/PUT/POST/DELETE API existing point B) is where you get to start from!

Nomnom Cookie
Aug 30, 2009



just open up port 3306 on the firewall and make sure your tables are innodb, bam transactions

Sapozhnik
Jan 2, 2005

Nap Ghost

Nomnom Cookie posted:

then what happens when you set o_nonblock on a socket?

Nonblocking IO just makes IO operations return immediately if said IO operation cannot be initiated right away, i.e. the kernel buffer for that IO channel is empty/full. If the IO buffer is not empty/full then the kernel will memcpy the data in/out immediately and then proceed on its way.

Asynchronous IO kicks off the IO and doesn't wait for it to finish.

They basically mean the same thing for streams (i.e. network sockets), but if you're dealing with a large file on disk then you can kick off multiple simultaneous overlapping transfers using async IO (the user-mode data structure for this on Windows is even called OVERLAPPED). So, asynchronous IO is strictly more powerful than nonblocking IO, provided that you have a unified mechanism to gather completion/availability on those channels.

POSIX began life with just blocking IO and then bodged non-blocking IO on afterwards, but then never agreed on a "gather" mechanism. Well, there's select(), which is a schoolboy solution to the problem, and BSD added poll() which isn't really much better (but at least doesn't use enormous fixed-length bitfields). BSD then developed kqueues and Linux went through several iterations to develop the epoll_* family of syscalls.

NT on the other hand is exclusively nonblocking at the core, the usermode APIs can just block on your behalf to save you the trouble for unimportant poo poo. It had "completion ports" since day one, which are, as the name implies, kernel-mode queues of asynchronous IO completions that you can block on. Also, in NT everything is a HANDLE: threads (they get signalled on completion), files, sockets (well, formally they aren't, but every non-toy network application depends on them actually being HANDLEs), completion ports, event objects. You have a single, scalable event gathering mechanism that works with everything, and all IO APIs are designed for async IO first and a NULL lpOverlapped blocking case available as a convenience to the programmer.

This is literally the one thing about NT's architecture that is better than Linux/BSD/whatever.

Janitor Prime
Jan 22, 2004

PC LOAD LETTER

What da fuck does that mean

Fun Shoe
Shaggar was right

Shaggar
Apr 26, 2006
win 7 has a magic file enumeration api that's asynchronous behind the scenes so you can iterate over it as if it was any other IEnumerable and it doesn't block while enumerating the directory like before. its so nice

Sapozhnik
Jan 2, 2005

Nap Ghost
Windows has one way to enumerate the contents of a directory and it is a loving horrid abstraction inversion: you have to iterate through the results of a wildcard match against a path, and it doesn't even work correctly (from MSDN: searching for C:\RandomShit\*.ISO will match C:\RandomShit\blah.ISO-8859-1)

Shaggar
Apr 26, 2006
works on my pc

Nomnom Cookie
Aug 30, 2009



Mr Dog posted:

Nonblocking IO just makes IO operations return immediately if said IO operation cannot be initiated right away, i.e. the kernel buffer for that IO channel is empty/full. If the IO buffer is not empty/full then the kernel will memcpy the data in/out immediately and then proceed on its way.

i meant o_async, i get those 2 mixed up. linux man pages say you can set o_async on a socket and get sigio just fine

hackbunny
Jul 22, 2007

I haven't been on SA for years but the person who gave me my previous av as a joke felt guilty for doing so and decided to get me a non-shitty av

Mr Dog posted:

i seem to recall that the power management ioctls within nt are a bit of a nightmare to deal with.

seems so, they even used to have their own dedicated request chaining routine (PoCallDriver vs IoCallDriver), but I don't know anything else about it, never had the pleasure to write hardware drivers

Mr Dog posted:

reading the DDK documentation is like hacking through a rainforest with a machete

try the IFS DDK. it's literally undocumented. there's an API reference but no documentation on how to structure an actual filesystem driver/filter. officially, you had to take vfat (if you were writing a disk filesystem), iso9660 (if you were writing an optical media filesystem) or mrxsmb (network filesystem), fork and customize. you mean you want to write a real actual first class disk filesystem like ntfs? have a lawyer ready because these patented storage APIs ain't cheap

they actually started including third-party documentation from OSR in later editions - still nowhere near good enough because OSR has consultants to feed

Mr Dog posted:

but the impression i get is it's rather rtos-ish passing "IRPs" around and doing everything in a non-blocking way, which is quite nice. except that kernel threads are, of course, pre-emptible anyway. i'm guessing they had to retrofit that once they hoisted the gui into the kernel and started calling back into user-space.

it's a VMS thing actually. the Cutler-designed operating systems (RSX/11, VMS, Windows NT) are very similar to each other. like how NTFS is basically a modernized FILES/11, or the Windows scheduler was identical to VMS's. or the whole deal with NT's object namespace, a very VMS solution to the problem of mapping DOS device names

win32k calling back into user mode didn't factor into the design, it didn't even exist until NT 4. besides, it isn't an issue: waiting on I/O completion doesn't pump messages, it just stops the current thread at the scheduler level. the only kind of events that can interrupt the wait are DPCs and kernel APCs, asynchronous signals that execute entirely in kernel mode, and at an IRQL higher than PASSIVE, where callbacks to user mode are disabled

Mr Dog posted:

linux, by contrast, has clear roots in its student hobby project beginnings and blocking i/o in kernel mode is the rule and not the exception. irps don't exist, they're implied by the call stack. even now all the async i/o stuff is kind of grafted on (you still can't do async socket i/o afaik, just async file i/o, which has limited utility. doesn't help that the posix standard that linux sort-of-but-not-really follows uses signals as message queues

hey now, enqueued real-time signals are a very different beast from classic UNIX signals. besides, there's no excuse for limiting yourself to the standard completion notification mechanisms - QNX for example extended AIO to integrate with its proprietary event notification system

hackbunny
Jul 22, 2007

I haven't been on SA for years but the person who gave me my previous av as a joke felt guilty for doing so and decided to get me a non-shitty av

Mr Dog posted:

Windows has one way to enumerate the contents of a directory and it is a loving horrid abstraction inversion: you have to iterate through the results of a wildcard match against a path, and it doesn't even work correctly (from MSDN: searching for C:\RandomShit\*.ISO will match C:\RandomShit\blah.ISO-8859-1)

FsRtlIsNameInExpression

see DOS_DOT, DOS_QM and DOS_STAR? whenever you use ".", "?" and "*" in a wildcard at Win32 level, they are actually replaced with those characters before being passed to the driver (which passes them to FsRtlIsNameInExpression). basically the shittiest regexp language ever. even not counting DOS 8.3 alternate names

hackbunny
Jul 22, 2007

I haven't been on SA for years but the person who gave me my previous av as a joke felt guilty for doing so and decided to get me a non-shitty av
the answer to anything related to sockets in Windows is "it's irrelevant". sockets are just files in a special sockets filesystem, which is free to implement as many bizarre semantics, extensions and IOCTLs as it wishes, especially since all interactions are mediated through an abstraction layer. Windows has no built-in support for sockets (or pipes) in the kernel, it's an uplifted plug-in

which is also a way to deflect questions about Winsock/AFD which sadly I don't know a lot about

minidracula
Dec 22, 2007

boo woo boo
Whoa, I was already basically writing this thread off, but then there was a bunch of good discussion on versioning and isolation of things that started off with Notorious b.s.d. saying something I strongly agreed with (color me shocked!):

Notorious b.s.d. posted:

having a standard format on day one is brilliant

automatically downloading code from GitHub is the goofiest thing
Then more joined in on the fun:

abraham linksys posted:

yeah that's pretty up there too

want to make a new version of your open source library w/ breaking changes? guess you should make a new repo!
Somewhere around here I was rooting for Notorious b.s.d.:

Notorious b.s.d. posted:

this would be very not-awesome. it perpetuates the problem. artifact versions are not necessarily code versions. conflating the two gets us gems and cpan and pip and all the other vile things scripting languages have used to distribute code

i promised the thread a big old effort-post about this poo poo, but when i got working on it, i realized i could probably do something better with the resulting document than post it on yospos
And then I got what I wanted, both barrels full. I was actually happy about all this. In fairness, maybe I thought all this chat was great because I skimmed most of it rather than read it in depth, but, you know, it's YOSPOS. Investing actual time is probably a lose-lose.

Alas, my high spirits were soon brought back to this mortal plane with comments like:

Notorious b.s.d. posted:

if you use windows you have much bigger problems than artifact versioning or release management

you can't fix stupid
and:

Notorious b.s.d. posted:

you would be surprised how many of those problems disappear when you get the gently caress out of a windows shop

it's not that windows causes problems, it's that firms who choose windows are too dumb to live
Oh well, it was a nice thought.

Still, somewhat more seriously (and more serious than I probably ought to be in YOSPOS), I mostly agree with what Notorious b.s.d. said about versioning and isolation of stuff in production, and that Go "feature" bugs me enough for me to basically never use it. But I only ever play/tinker with Go right now, so who cares.

In other news:

Gazpacho posted:

i know that, as I understand the history the public-facing web teams got to banish the old (obidos) code and rethink everything years ago, supply chain has never had that chance afaict
More than once, too! obidos begat gp (Gurupa), and I think there's at least one other newer rev behind retail after that too, if not more (or they've just decided to hide gp behind more layers).

hackbunny posted:

don't know what else to post, also everything I say may be inaccurate because it's been years since I've worked for ReactOS or on Windows code at all

... :words: ...
This was awesome, thanks for this. Post more of this!
Also: do I know you?

FamDav
Mar 29, 2008

minidracula posted:

holy poo poo

kill yourself

Notorious b.s.d.
Jan 25, 2003

by Reene

minidracula posted:

Whoa, I was already basically writing this thread off, but then there was a bunch of good discussion on versioning and isolation of things that started off with Notorious b.s.d. saying something I strongly agreed with (color me shocked!):

Then more joined in on the fun:

Somewhere around here I was rooting for Notorious b.s.d.:

And then I got what I wanted, both barrels full. I was actually happy about all this. In fairness, maybe I thought all this chat was great because I skimmed most of it rather than read it in depth, but, you know, it's YOSPOS. Investing actual time is probably a lose-lose.

Alas, my high spirits were soon brought back to this mortal plane with comments like:

and:

Oh well, it was a nice thought.

Still, somewhat more seriously (and more serious than I probably ought to be in YOSPOS), I mostly agree with what Notorious b.s.d. said about versioning and isolation of stuff in production, and that Go "feature" bugs me enough for me to basically never use it. But I only ever play/tinker with Go right now, so who cares.

In other news:

More than once, too! obidos begat gp (Gurupa), and I think there's at least one other newer rev behind retail after that too, if not more (or they've just decided to hide gp behind more layers).

This was awesome, thanks for this. Post more of this!
Also: do I know you?

nice content-free meta post about your vote on the thread. i am so glad we could get a ten paragraph explanation of your choice to click "1"














:gb2gbs:

Bloody
Mar 3, 2013

skipping hundreds of posts to say that c++11 is a Good Language

Notorious b.s.d.
Jan 25, 2003

by Reene

hackbunny posted:

don't know what else to post, also everything I say may be inaccurate because it's been years since I've worked for ReactOS or on Windows code at all

...

NtXxx functions are what are usually called "system calls" in other OSs (in Windows the term is "systemsecret internal libraries that make it all better: xactly why - usually, it's just presented as a matter of fact. but that's another story for another day


hack bunny, you are scaring me. please don't stop

I about died reading that uniform kernel/users pace interfaces were a design goal and yet they even hosed up that crazy line in the sand

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Notorious b.s.d. posted:

nice content-free meta post about your vote on the thread. i am so glad we could get a ten paragraph explanation of your choice to click "1"














:gb2gbs:

so notorious b.s.d i am not saying this to be funny or yospos-y as a joke. you are the worst poster in this thread. you have some really terrible opinions.

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde

minidracula posted:

More than once, too! obidos begat gp (Gurupa), and I think there's at least one other newer rev behind retail after that too, if not more (or they've just decided to hide gp behind more layers).
gurupa had filtered down to us, the switchover deadline for internal sites was in 2009 but most supply chain software is console apps talking to services, both layered over an unbelievable number of unowned and undocumented platform libraries

i think it was two months after i got there that i asked one of the colleagues where i could find documentation or a tutorial for the console UI library that the whole division was using. he said he didn't know, which is fine if he didn't, but besides that he didn't seem to understand why i might be looking for it, and i promptly had a fit

Gazpacho fucked around with this message at 07:02 on Nov 26, 2013

minidracula
Dec 22, 2007

boo woo boo

FamDav posted:

kill yourself

Notorious b.s.d. posted:

nice content-free meta post about your vote on the thread. i am so glad we could get a ten paragraph explanation of your choice to click "1"
I confess I don't understand YOSPOS, so, I guess that's on me. Anyway, I fail to see how either of the above are "content" (even after, for your post, eliding 15 blank lines of text you included.) Here's to senselessness!

But, speaking of content: TIL about "hypercomputing", which apparently is actually a thing. Or, at least a term. Definitions of what it is -- if it is even anything in the first place -- seem to differ. This being the PL YOSPOS thread, I wondered what programming languages might be like on such a computer, if it could exist.

I guess I was prompted to go down this line of thought after reading a bit (and some fiddling with) some PLs that try to tackle quantum computer programming (e.g. Quipper site, paper (PDF), .tgz) and some quantum circuit simulators (e.g. QuIDDPro site). But, qubit-model quantum computers don't satisfy the available definitions of a hypercomputer, since they can be modeled in classic Turing machines (albeit in PSPACE complexity).

minidracula fucked around with this message at 06:53 on Nov 26, 2013

pseudorandom name
May 6, 2007

hackbunny posted:

hey now, enqueued real-time signals are a very different beast from classic UNIX signals. besides, there's no excuse for limiting yourself to the standard completion notification mechanisms - QNX for example extended AIO to integrate with its proprietary event notification system

as did Solaris, although it is (or was?) unusably broken

FamDav
Mar 29, 2008
dude minidracula we're cool with gays in yospos (;-* holla at ya boi ;-*) but you need to stop fagging it up.


Gazpacho posted:

gurupa had filtered down to us, the switchover deadline for internal sites was in 2009 but most supply chain software is console apps talking to services, both layered over an unbelievable number of unowned and undocumented platform libraries

i think it was two months after i got there that i asked one of the colleagues where i could find documentation or a tutorial for the console UI library that the whole division was using, he said he didn't know, as if he was completely mystified that anyone would ask, and i promptly had a fit

this just gets more and more depressing.

minidracula
Dec 22, 2007

boo woo boo

Gazpacho posted:

gurupa had filtered down to us, the switchover deadline for internal sites was in 2009 but most supply chain software is console apps talking to services, both layered over an unbelievable number of unowned and undocumented platform libraries

i think it was two months after i got there that i asked one of the colleagues where i could find documentation or a tutorial for the console UI library that the whole division was using, he said he didn't know, as if he was completely mystified that anyone would ask, and i promptly had a fit
Sounds legit. I got there around mid-2004 and IIRC, gp was the new hotness everyone in retail was moving things over to, but obidos had a long tail to live out. I also remember the horror stories of the monolithic executable, and seem to recall something about some sort of home-grown network transparent far pointer-esque thing that existed... but I may be imagining that (or maybe someone was pulling my leg; so glad I didn't have to deal with any of that). I think this was still in the days of the HP Superdomes, shortly before Vogels got there.

minidracula
Dec 22, 2007

boo woo boo

FamDav posted:

this just gets more and more depressing.
Yeah, but, you know, $61 billion in 2012 revenue, so some people aren't that depressed. Sure, it's gross, but is there a company at that scale that isn't? Isn't that why we all hate programming?

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde
correction: "mostly console apps + services" doesn't describe all of supply chain, just the parts that run in the warehouses

let's see, i don't think i've told the story about the warehouse manager who opened a ticket because he was running out of preprinted barcodes to put on the boxes and could we order some more? this ticket went straight to the devs and became the problem of the dev on duty at the time (me), because that's how he'd gotten the labels in the past. thing was, whoever had known how to respond before seemed to have moved on and nobody knew how to get them, nor why this warehouse out of all the others worldwide had gotten in the habit of requesting labels from the software developers. the ticket ended up being closed in a ticket bankruptcy shortly before the shopping season and i wasn't around to see what happened afterward

FamDav
Mar 29, 2008

minidracula posted:

Yeah, but, you know, $61 billion in 2012 revenue, so some people aren't that depressed. Sure, it's gross, but is there a company at that scale that isn't? Isn't that why we all hate programming?

i just find it sad because there are legitimately enjoyable parts and it seems to have given you a lot of misery.

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY

minidracula posted:

TIL about "hypercomputing", which apparently is actually a thing. Or, at least a term. Definitions of what it is -- if it is even anything in the first place -- seem to differ. This being the PL YOSPOS thread, I wondered what programming languages might be like on such a computer, if it could exist.

hypercomputation is a very vague term that CS guys use when they want to mess with the philosophy end of the discipline. it can mean any one of a dozen things, so if you're interested in it pick one author and run with their + their associate's writings rather than googlin' around. my favourite of the bunch is aaronson's stuff on computation near closed timelike curves, but that's just me

quote:

I guess I was prompted to go down this line of thought after reading a bit (and some fiddling with) some PLs that try to tackle quantum computer programming (e.g. Quipper site, paper (PDF), .tgz) and some quantum circuit simulators (e.g. QuIDDPro site). But, qubit-model quantum computers don't satisfy the available definitions of a hypercomputer, since they can be modeled in classic Turing machines (albeit in PSPACE complexity).

quantum computers are not hypercomputers in any sense i've seen. like you said they can at most solve problems in PSPACE, and the inclination in the field at the moment is that they're almost certainly in NP too. in fact, while no-one's expecting it i don't think anyone would be ~too~ surprised if it turned out that BQP = BPP and they're only as powerful as probabilistic computers.

if you're interested in the "practice" of this stuff, the best intro i've seen is kaye's An Introduction to Quantum Computing. if you wanna know more about the complexity theory side, then chap 10 of arora & barak's A Modern Approachmight need to read some of the other chapters first

suffice it to say that we're a long, long way from a general programming language for qcomps. mostly because it'll be a long time before we need one - as far as we can tell there are only a handful of problems that they make noticeably easier, so if qcomps ever make it out of research it'll be as lil' black boxes with

coffeetable fucked around with this message at 09:35 on Nov 26, 2013

minidracula
Dec 22, 2007

boo woo boo

coffeetable posted:

hypercomputation is a very vague term that CS guys use when they want to mess with the philosophy end of the discipline. it can mean any one of a dozen things, so if you're interested in it pick one author and run with their + their associate's writings rather than googlin' around. my favourite of the bunch is aaronson's stuff on computation near closed timelike curves, but that's just me
Yeah, I didn't even know it was, like, an actual term with any kind of meaning (debated or not) until this evening. Hell, I only saw it for the first time earlier today, in the context of a government RFP. I only looked it up out of a mildly nagging sense that it couldn't be a completely made-from-whole-cloth word (i.e. by the anonymous author(s) of the RFP) if it made it into that document.

Can't say I'm too surprised to find out some serious people in computability think it's bunk though. Right now I've skimmed over a couple of Davis's papers arguing against hypercomputation being anything real (other than, at best, a flashier name for un-computability; Davis also discards that there are any possible results in "hypercomputation" in the sense the peddlers of the term assert there are), and one of Andrew Hodges's articles rebutting an original hypercomputation paper.

Like you said, I think I need to pick a thread and see how deep the rabbit/k-hole goes.

coffeetable posted:

quantum computers are not hypercomputers in any sense i've seen. like you said they can at most solve problems in PSPACE, and the inclination in the field at the moment is that they're almost certainly in NP too. in fact, while no-one's expecting it i don't think anyone would be ~too~ surprised if it turned out that BQP = BPP and they're only as powerful as probabilistic computers.

if you're interested in the "practice" of this stuff, the best intro i've seen is kaye's An Introduction to Quantum Computing. if you wanna know more about the complexity theory side, then chap 10 of arora & barak's A Modern Approachmight need to read some of the other chapters first

suffice it to say that we're a long, long way from a general programming language for qcomps. mostly because it'll be a long time before we need one - as far as we can tell there are only a handful of problems that they make noticeably easier, so if qcomps ever make it out of research it'll be as lil' black boxes with
Nice! I didn't know about Kaye, so thanks for that! I'll give that book a spin. So far I've only read Quantum Computing: A Gentle Introduction by Rieffel and Polak. Arora & Barak's a great book; I'll be sure to re-read Chapter 10. Thanks for that pointer too!

Regarding PLs for quantum computers, yeah, I agree. So far all the actual language work isn't focused on what a language might look like to "program" a quantum computer, but rather how to model quantum computations in the qubit model (but to be simulated on traditional computers). There doesn't seem to be a whole lot separating things like Quipper from more quantum circuit simulator things like jQuantum other than approach and notation. Again, that seems fine for the reasons you point out.

You have any opinions, thoughts, whatever on D-WAVE and their claims?

coffeetable
Feb 5, 2006

TELL ME AGAIN HOW GREAT BRITAIN WOULD BE IF IT WAS RULED BY THE MERCILESS JACKBOOT OF PRINCE CHARLES

YES I DO TALK TO PLANTS ACTUALLY
my opinion's that their salesmen are far more successful than their engineers, and at most they've got a qannealing implementation (which is a loooong way short of shor's or grover's or anything else fun). im basing that entirely on posts by CS theory bloggers though so ymmv

another (tad more ridiculous) point is that as the NSA seem to have done everything but break SSL, and if they don't have a practical qcomp then some rinkydink lil research outfit certainly doesn't.

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

coffeetable posted:

… a qannealing implementation (… grover's ) …

10 ADD LOAD-BEARING DRYWALL
20 SHAKE HOUSE
30 ADD LOAD-BEARING DRYWALL WHERE IT FAILED
40 GOTO 20

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