So for the past several months I've been working for a company writing some POS (Point of Sale) software. There are several standards and common companies out there... but dealing with them have been some of the biggest headaches on earth.
OPOS/MSPOS - OPOS is like the defacto standard (so I understand). Microsoft also has their own version of it called MSPOS supported in .Net and designed for embedded systems (it works on XP and 7, it just says all over the place that it's designed for embedded systems). This thing is a documentation nightmare, and getting all the dependencies together can require a shit load of leg work, especially if you're trying to support all sorts of different hardware.
Verifone - using these guys 'payment server' is like pulling teeth out of a hippo. The documentation is at times cryptic, at others non-existent, and at others 3 versions out of date from the version of the devkit they included the documentation with. And don't get me started on their integration plug-in dll thingy SIM.dll. The engineer who designed the interface for this thing is brain dead or something. Imagine an object that deals with multiple different jobs, from communicating to the server (4 different servers are supported), configuring hardware, processing payments/debits/refunds/voids/inqueries of 5 different payment types, and other random crap. It's all done by setting and unsetting a collection of 200+ properties. This is ONE OBJECT. The list of properties spans a good 50 pages in a pdf... with descriptions of the properties. But they don't tell what the fuck they do, they just describe them in a limited manner. I describe it to having a switch board with 200+ multi-position dip switches, then every time you want to do a job you set the switches to their right position and then hit a 'process' button. But wait, if one dip switch, not related to the function or 'ACTION' your telling the server to perform isn't set to the proper unrelated value (sometimes blank, other times 'n/a' and other times some random value)... it throws and error. But the error you get is just a number... that's all. And the documentation list 12 error codes out of... I don't know. The documentation just says "there are many more not included here in the documentation"... ok, then WHERE?
Available data on the internet - researching for POS resources is mind numbing. It consists mostly of other people asking random questions about it. THere is no central resource, even the msdn resource is crap (I've used msdn for several other technologies, in comparison MSPOS resources are non-existent... and for OPOS, HA).
The related end-user software - I've seen POS software all over the place. We see our cashiers fighting with them at the pizza joint, grocery store, etc. A few years ago I thought these people on the register were just technologically ignorant... but it isn't true. The software available to these cashiers is AWFUL. You can't help but make awful software with these tools. Oh the clients who buy this crap love the stuff, but I wrote it... I know what is in it... and in my professional opinion this stuff is stuff I wouldn't wish upon my worst enemy. But they've never seen any better... so they don't know what it SHOULD be like.
Thank you for letting me rant semi-anonymously.
This post has been edited by lordofduct: 11 January 2011 - 02:41 PM