I went on and extended the autoresizing table cells to handle interface rotation and table editing as well. In both these cases, the width of the table cell content view changes, so the height of the text view needs to be recalculated. To achieve that, you need to wait to measure the new width of the text view until everything has settled down, but this turns out to be surprisingly difficult. The only functions I found that were called late enough in the view update cycle to give me the new definite text view width were didRotateFromInterfaceOrientation in the controller for rotations, and didTransitionToState in the table view cell for editing state changes.
A problem I needed to solve was: while editing in a text view, I want the view to grow and shrink depending on the text entered. I also want this to work in conjunction with auto-layout.
I think the major problem is that buyers specify domain functionality, but not the huge list of “non-functional requirements”. So anyone fulfilling the functional requirements can sell their piece of crap as lowest bidder.
Looking at a modern application, non-functional requirements are stuff like resilience, redundancy, load management, the whole security thing, but also cut-and-paste in a myriad of formats, a number of import and export data formats, ability to quick switch between users, ability to save state and transfer user state from machine to machine, undo/redo, accessibility, error logging and fault management, adaptive user interface layouts, and on and on.
I’d estimate that all these non-functional requirements can easily be the largest part of the design and development of a modern application, but since medical apps are, apparantly, never specified with any of that, they’re artificially cheap, and, not to mince words, a huge pile of stinking crap.
It’s really easy to write an app that does one thing, but it’s much harder and more expensive to write an app that actually works in real environments and in conjunction with other applications. So, this is on the purchasers’ heads. Mainly.
This article is an excellent description of some of the serious problems related to IT security in healthcare.
Even though medical staff actively circumvent “security” in a myriad inventive ways, it’s pretty clear that 99% of the blame lies with IT staff and vendors being completely out of touch with the actual institutional mission. To be able to create working and useable systems, you *must* understand and be part of the medical work. So far, I’ve met very few technologists even remotely interested in learning more about the profession they’re ostensibly meant to be serving. It boggles the mind, but not in a good way.
“Unfortunately, all too often, with these tools, clinicians cannot do their job—and the medical mission trumps the security mission.”
“During a 14-hour day, the clinician estimated he spent almost 1.5 hours merely logging in.”
“…where clinicians view cyber security as an annoyance rather than as an essential part of patient safety and organizational mission.”
“A nurse reports that one hospital’s EMR prevented users from logging in if they were already logged in somewhere else, although it would not meaningfully identify where the offending session was.”
This one, I’ve personally experienced when visiting another clinic. Time and time again. You then have to call back to the office and ask someone to reboot or even unplug the office computer, since it’s locked to my account and noone at the office is trusted with an admin password… Yes, I could have logged out before leaving, assuming I even knew I was going to be called elsewhere then. Yes, I could log out every time I left the office, but logging in took 5-10 minutes. So screen lock was the only viable solution.
“Many workarounds occur because the health IT itself can undermine the central mission of the clinician: serving patients.”
“As in other domains, clinicians would also create shadow systems operating in parallel to the health IT.”
Over here, patients are given full access to medical records over the ‘net, which leads physicians to write down less in the records. Think this through to its logical conclusion…
Let’s hope the project doesn’t die. Let’s hope I didn’t overestimate this.
Visa has a neat feature where you can determine in which regions the card can be used. In my case, it’s “internet”, “Sweden”, “Nordic countries”, “Europe”, “North and central America”, “South America”, “Africa”, “Asia”, “Oceania”. You can set these through the credit card app (mine is from Volvo, of course).
So I disabled all regions except “Internet” and “Sweden”, planning on enabling other regions when I travel.
Today I got a message from Netflix that they couldn’t charge my card. No explanation why. I called the card issuer and after some digging they explained to me that since I disabled “Europe”, Netflix got refused. Turns out that Netflix charges from region “Europe”, not “Internet”. More specifically from The Netherlands. Once I reenabled “Europe”, the charge went through.
Now, there are several problems with this. First of all, an internet based service like Netflix should be in the region “Internet”. Secondly, if it isn’t in “Internet”, they should at the very least tell us from which region they charge. I had no idea Netflix charges from The Netherlands. How could I? It’s not reasonable to expect us to check with the card issuer every time this happens, and have them go dig through logs (took them 10 minutes to find, so it wasn’t trivial).
Worst of all, this kind of thing implies that you’d better open up a lot of regions you’re not travelling to, since you don’t know from which regions different internet based companies do their charging.
Having the card processor issue meaningful error messages, not just “sorry we failed”, would definitely help a lot, too.
Started my Win 10 instance under Parallels, and just one minute into working with it, I got this:
That gave me 8 minutes to get my stuff in order. The time when this showed up was 21:18. So I clicked “Close” and just got the close box on my accounting program and the system rebooted. So much for the eight minutes, which turned into more like 10 seconds.
Note, BTW, no way to postpone this at all. Nothing.
The evil and arrogant fuckers.
Oh, lest you think Microsoft really let me save correctly, I got this after restart from my accounting program:
It says, in Swedish: “The company wasn’t closed correctly. The company will now be optimized.” Meaning the index files will be rebuilt.
Microsoft really doesn’t give a shit about our data. Fortunately, I hadn’t started entering anything so the rebuild worked out fine.
Interesting manual on sabotage from the CIA. The last five pages describe some offices I’ve worked in.
Just wasted several hours trying to find out why home sharing stopped working on my Apple TV. I’ve got the one with optical audio output, can’t remember if that is called the gen 2 or 3, but you know which one I mean.
Duck-ducked it thoroughly, finding a truckload of similar complaints over the last two years, which in itself wasn’t too encouraging. Most recommended logging out and in from home sharing, changing the computer name in system settings, and so on. Nothing helped.
Finally I changed the wireless from my very current tower Airport Extreme to a slightly older, flat square, Airport Extreme, and lo, all the misery resolved itself. Which reminded me that the Extreme did an update maybe two days ago.
I’m getting increasingly bad vibes about Apple quality, or lack thereof.