fallenpegasus: (Default)
Some thoughts on composing laying out ebooks:
- DONT put a separate additional title page at the beginning. The user just saw the title in the renderer's UI when they selected the book. Separate title pages are archaic: an ebook will never be stripped or rebound.
- DONT put the copyright info, publication info, "printing" info, legal disclaimers, boilerplate, colophon, etc at the beginning. Put it at the end.
- The only exception is you MAY put the ToC at the beginning.
- if there is a ToC, each line of the ToC MUST include the name of the chapter or section, and SHOULD contain a short (3 lines or less) description
- if the book has a ToC or an Index, each entry MUST hyperlink internally to the part of the book they reference.
- DONT put footnotes or notes or citations at the "bottom" of the "page", or at the end of the chapter, or worst of all, at the end in a "Notes" section.
- DO put footnotes, notes, and citations inline, and hint them to the renderer, so it can fold them, to be expanded at the user's touch.
- Hint to the renderer, that the first time the book is displayed, it SHOULD open to either the introduction, or to the starting text of chapter one.
- DONT try to force the renderer to waste pixels on margins. Let a renderer running on a mobile, eink, or small tablet run the text right up the side of the display. Let a render running on a desktop or large tablet use it's own margins. It *always* knows better than your art and layout editor.
- Renders SHOULD ignore, subvert, and frustrate attempts by the publisher's art and layout editor to force margins. The render and the user know better, always.
- DONT render body text or header text as an image, unless it's a visual poem (for example, the poems in "Alice in Wonderland"), but even then, see if you can hint it to the renderer instead.
- DONT render a drop capital as an image.
- If the book contains images, the image data SHOULD be the highest resolution and color depth the renderer can display. If you don't know what the renderer will be, the image data SHOULD be at least 1024x768.
- Each image data rectangle MUST be one and only one image or photograph.
- DONT put margins in the image rectangle
- Each image SHOULD completely fill the ebook display when rendered. Renderers SHOULD heuristically clip margins and rotate images to completely fill the display surface.
- Comic books and graphic novels will have a different set of rules and requirements, which I will write up another day.
fallenpegasus: (Default)
Is there an Android tablet that does not suck?

What I need:
* stock Android, latest OS version
* enough CPU that the UI does not lag
* enough main storage that I don't have to worry about it
* enough battery that it will run for at least a long afternoon
* standard power adapter, either microUSB or USB-C
* ok camera
* SIM & WIFI & GPS &etc

What I do not want:
* OEM UI "experience"
* OEM shitware
* out of date Android version
* slow security updates
* proprietary plugs, cables, adapters, or chargers
* the wireless internet locked to a carrier
* showing off how hipster skinny thin it can be. I need moar battery, not shaving 20 fucking grams of weight from my everyday carry.
fallenpegasus: (Default)
I remember being part of a discussion on rasfw back in the day, when we realized that it was actually possible for a standard unenhanced human to run a 50 meter dash, naked, on the Moon, wearing only a pair of shoes and a pair of tightly fitted swimmer’s goggles.

Stay in a low pressure pure oxygen chamber for a few days to vent out all the neutral gasses from your body, transfer to an airlock with the same gas mix, take your mark, hyperventilate a dozen breaths, exhale, and leap out from the starting block as the outer doors open, keep your mouth and throat from closing, and sprint in a straight line, into a waiting open airlock that snaps shut behind you and crash pressurizes.

It probably wouldn’t even be all that much more painful than the pain of running 50 meters at competition speed already is.

You will be in a world of lethal hurt, if you trip.
fallenpegasus: (Default)
I have a theory, about Apple.

Apple has a quarter of a trillion dollars. In cash.

That is a ludicrous amount of money. That is so much money, that it is too much money. It is too much to deposit as passive cash, because a bank can no longer be a neutral unbiased 3rd party when there is an account that big. Not even a large nation's central bank. When you have that much cash, risks like counterparty risk, fiat currency problems, and government confiscation start becoming a significant amount of the risk profile.

The way that most very large companies waste very large amounts of cash is to buy other large companies. This almost invariably is a terrible idea. The buying company almost always overpays, especially when they start bidding against someone else. And companies on sale for a discount, are for sale for a discount for a reason. So called claimed "synergies" almost never are realized. Costs are always higher than expected. Big mergers and aquisitions almost always are a mechanism where the senior executives burn the investors money in order to make said executives seem or feel more important.

Steve Jobs never felt the need to do M&A to seem or feel more important, so Apple only did aquistitions to obtain specific skilled teams or specific technologies. And in his passing, Apple has generally continued this pattern. (I think the aquisition of Beats was very non-Apple, and was a mistake, and probably is seen as an expensive mistake and expensive lesson by Apple's current leadership.)

But so and still, Apple has Too Much Cash. What to do with it?

When you have a pile of cash that is so large that it in itself starts turning into a local economic distortion, there really is only one profitable thing to do with it: Wrap a banking license around it, and open a bank.

Think about it. Apple could run a bank, a very different kind of bank, with a much lower risks of fraud and loss. They already have secure cryptoprocessors... everywhere! They can use iOS devices as the secure terminals, both for customers and for merchants. They can use ApplePay for retail transactions. They can use what they know about your from user's iOS devices and their AppleID for KYC. They can push secure finantial messages around via the iMessage framework.

With all this in place they could undercut all of the existing payment networks and still make, well, bank.
fallenpegasus: (Default)
I've been following the saga about the confirmed and seated passenger being dragged off United Flight 3411, and two details leap out at me. I'm going to post this in two parts. Here is the second part.

The Chicago Police Department.

The cops that dragged him off and then roughed him up were not officers of the Chicago Police Department, but were instead employees of the Chicago Aviation Police.

Completely different agency. The CAP are nothing more than cheap security guards who get to wear a fancy shirt, and are not allowed to carry weapons. Their remit ends at the end of the jetway, and they have zero authority on board an aircraft. If an airline wants to have a passenger forcibly removed, they have to call the real police.

But, that is not the actual problem I have here. The real problem is, right after this happened, the press mistakenly thought they were Chicago Police Department. (I don't blame them for this mistake, my first snap assumption was that they were CPD as well, because only real cops are allowed to forcibly remove a passenger).

So, the media called up the CPD for a statement.

What the CPD *should* have said was "The incident did not involve CPD officers. We have no statement about incidents that do not involve the CPD."

What the CPD said instead was a transparent lie about how the man "fell" and "hit his face". Think about that for a minute: the CPD has a set of go-to lies to vomit up, is easier for them to say, then it is for them to figure out that they are actually innocent!

Of course, that should be completely unsurprising, we are talking about the Chicago Police Department here. The spokesman probably tells that same lie 3 times a week.
fallenpegasus: (Default)
I've been following the saga about the confirmed and seated passenger being dragged off United Flight 3411, and two details leap out at me. I'm going to post this in two parts. Here is the first part.

It is being claimed that the compensation that can be offered to a "bumped" passenger is capped by law. Not true. What the law says is what the *minimum* compensation has to be. There is no rule against the gate agent manager offering more and more $100 bills until they get enough volunteers. That UA didn't was purely a company decision, made by the gate agent manager, and probably guided by a poorly written corporate policy manual.

On vouchers.

The gate agent manager offered "vouchers" "worth" $400 and then $800 to try to get volunteers. It is widely known by experienced travellers that airline vouchers are usually little more than a worthless joke. Vouchers expire, often in less than a year. They are good only for the fare, not for any taxes or "fees", which can be a significant part of the cost of a ticket. They have pages and pages of fine print of "blackouts", such that they are usually not good on in-demand flights or on in-demand days. When you try to fly with a voucher, often the flight is suddenly and mysteriously "full" or "not available". When when you do manage to buy a ticket with a voucher, and you do manage to make it to the gate, you are at the top of the list to get bumped AGAIN. I've received vouchers that I let have expire, because they were just too much of a pain in the ass to use. The first few vouchers I received were because I did volunteer, until I wised up to how shitty a deal a voucher is.

Vouchers are an even shittier deal for business travellers.

I would not have taken the $800 "voucher" to give up my seat either.
fallenpegasus: (Default)
I've never had a Dilbertesqe "pointy haired boss". I've never had a bad manager. Not even when I had teenager scutwork labor jobs.

I have encountered them, true, and dealt with the damage they do, from multiple levels above me, and in management chains next to mine, and in other companies and orgs. But I've never personally had to suffer under one.
fallenpegasus: (Default)
Every bad thing that has ever happened to me has, in retrospect, after enough time, turned out to have been for my benefit, or at the very least, made me more of what I like about myself.

I know that I am extremely lucky in this manner.
I also know that this streak of luck could end right now.
And I know that most people have terrible things happen to them that never result in anything more than misery.
I also know that memory is frail and is too easily rewritten.
I know that the human mind is particularly bad at accurately remembering pain and misfortune.
I know that it's not actually possible to accurately know "what might have been".
I also know that when I was going though bad times, if most anyone had told me then "you will be glad this happened", I would have reacted with nothing but hatred and rage.

Still, right now, I am grateful, both for all my blessings, and for all my past misfortunes.

#thanksgiving
fallenpegasus: (Default)
Another evening was spent walking around Greenlake Park Walking Path and then Gas Works Park with Silver, playing Ingress and Pokémon Go.

There were Pokémon Go players everywhere. It was especially spooky at Gasworks, after sunset, in the darkness dimly skylit by the lights of the city on the other side of Lake Union, dozens and dozens little clusters of adults, tweens, and kids, faces dimly reflecting the distinctively colored light from a Pokémon Go screen, on foot, wandering back and forth across the grass, along the waterline, and around the titanic metal structures of the park.

This is starting to feel like one of those B-grade science fiction stories, one of the early warnings of the alien parasite invasion is that you notice everyone everywhere all doing the same thing, alone together.

What the hell, I don't care. Silver and I both are enjoying the exercise and each other's company.
fallenpegasus: (Default)
About 10 years ago, I was involved with something that completely accidentally suddenly turned into an unlicensed supper club. And demonstrated exactly why supper clubs strictly control their RSVPs and headcounts:

A dozen-ish of us started getting together weekly in a group geek house for a book and craft club. A friend of one of us liked to cook, and offered to cook dinner for us and our friends in exchange for we all throwing in cash for ingredients.

The next week, everyone brought all their SOs to share the dinner. The week after, also many of our other good friends.

Within a month, pretty much the whole larger circle of friends was coming.
A month later, the friends of friends, and the friends of friends of friends started showing up, because the word had gotten out that for about $5 cash you could get a large filling delicious home cooked dinner.

Came the day when the house was full of a couple of hundred people, most of them strangers to us, all of them demanding a meal.

That was the end of that.
fallenpegasus: (Default)
A mile is a thousand strides of a marching soldier. A pound is a rock that fits in your hand. A cup is a good drink of water. A yard is one arm pull of fabric or thread. A bushel is one easily carried bundle of harvested food. An acre is the amount of land that one man can plow in one day. An hour is the length of time that can be easily snap measured by glancing at the angle of the sun. The traditional dry goods and wet goods volumes and weights are doubles and halves of each other, rooted in the smallest common food grain and the smallest possible pour of water. Inches, spans, cubits, feet, yards, are all derived from the human body, and let one use your own body to measure things out. Degrees F are a 100 unit scale from the lowest temperature to the highest temperature that will ever regularly happen were people could live before the invention of modern HVAC.

They all make sense, when you know their history, and are using them for what they are used for.

The metric SI units are useful doing... science. But not so much for living day to day.
fallenpegasus: (Default)
I wonder about media leakers.

I'm not talking about whistleblowers, who reveal coverups by governments and corporations that are keeping secrets of bad or illegal actions.

I'm talking about people who "confidentially source" to the media details of business negotiations, media productions, and gossip of private heartache. Things that are private and confidential for a reason, will be revealed when they are properly baked, and that do nobody any good for being revealed early, except maybe for a burst of clickstream traffic for the "news" source that "scooped" it.

I know a fair number of secrets. Some of them are close friends' private heartaches, which are theirs to reveal, if ever. And some of them are business negotiation secrets incidental to my job, and a few of them part of my job to know. I actually go out of my way to avoid learning things I shouldn't need to know at my employer, just so as to firewall myself from even the appearance of impropriety.

Any of them, if I "confidentially sourced" them to the tech press, would do nothing but cost money that is not mine for no honest gain to anybody, possibly prevent good things that I would like to have happen not happen, and would betray my own principles I try to hold myself to.

So, why do other people do it?
fallenpegasus: (Default)
Long ago, almost two decades, which is a few eons in internet time, on discussion forums long since destroyed and passed away, I observed two different social justice zealots. This was before the term "social justice warrior" had been invented. (And as an aside, the term was invited and taken up by people who loudly described themselves as such. It was not, as they now claim, a term created as an insult by their "enemies".) Anyway...

There were these two social justice zealots. And each one claimed to be politically active in their local politics, each one of them working to undo a great racial injustice.

One of them, they were involved in a struggle to change the electoral rules in their city, to change it from at at-large vote for the entire city council, to instead divide the city up into districts, so that each geographic region of the city would have representation on the city council, as this was the way of racial justice, and any opposition to this could only come from wicked racists.

And the other one, they were involved in a struggle to change the electoral rules in their city, to change it from divided districts, one district per council member, to instead have an at-large vote for the members of the council, such that each ethnic group spread across the city could join in solidarity to back a candidate of their ethnicity, so that each ethnic group would have representation on the city council, as this was the way of racial justice, and any opposition to this could only come from wicked racists.

I was not the only person to notice this. However, despite some efforts, nobody was able to get the two of them to engage with each other.

I learned a number of important life lessons from watching this, all of them darkly hilarious.
fallenpegasus: (Default)
One of the tricks to writing with a fountain pen with highly saturated ink is to keep a small glass of water and a heavy paper napkin on the desk. If the pen ever skips, dip the nib for a moment into the water, and then wipe it off with the napkin.

I've been writing with FPs since 1987, and only figured this trick out this year.
fallenpegasus: (Default)
When I lived in North Carolina, my best friend was Michael Wilson. He was a big kid, two years older than me, one year ahead of me in school, and he lived on the same rural dirt road that I did.

We met on the school bus one of the first weeks of school when I was in the 1st grade, and completely new to the area. He decided we should be friends, and thus so we were. He was a big happy guy, despite his family's grinding rural poverty and the death of his father to lung cancer.

We stayed best friends for the next 7 years, until I left NC in 1982 at the age of 13 to move to UT. This was, of course, long before email and facebook, and cross country phone calls were expensive, so we promptly fell out of touch with each other.

A few years ago, I started considering finding him again, and hoping to discover him owning his own machine shop somewhere around there in NC. Last week I discovered that my sister Suzanne was FB friends with one of her old friends from NC who also lived on that street, and so I asked her about Michael.

Two years after our family moved away, in 1984, he and his mother were killed in a serious traffic accident. He would have been 17 at the time.

Goodbye, Michael. You are remembered. You were the first real friend to a shy scrawny overly smart kid who didn't know how to be friends with anyone until then.
fallenpegasus: (Default)
At one company I worked at, one of the problems it didn't have was IT.

When someone was hired, by the time they got to their new desk, there was a computer on it with the correct image on it, their desk phone worked, their email worked, the calendaring and scheduling worked, and all necessary passwords and ACLs were configured. The internal ethernet networks all worked, were fast, and were properly isolated from each other. The wall ports were all correctly labeled, and there where the right kinds of wall ports in each cubical and conference room. The presentation projectors and conference room speaker phones all worked. The printers all worked, printed cleanly, were kept stocked, and were consistently named. The internet connections were fast and well managed. Internal and external security incidents were quickly recognized and dealt with. Broken machines were immediately replaced with working and newly imaged replacements. If someone accidentally deleted a file, getting it back from backup typically took less than an hour. Software updates were announced ahead of time, and usually happened without issue.

The IT staff did not seem noticeably bitter, angry, harried, or otherwise suffering from the emotional costs traditionally endemic to that job role. In fact, they were almost invisible in their skill and competence.

So, of course, came the day when the senior executives said "the carpets are just naturally clean all the time, we don't need all these janitors!". IT was "reorganized" into a smaller staff of younger and much less experienced (and probably cheaper) people.

Of course, it all went to shit. New employees would go a week before they had machines, phones, passwords, and ACLs. Printers ran out of paper, projectors ran out of lightbulbs, servers ran out of storage, networks got misconfigured, and so forth. The total time lost and wasted across the whole company was most certainly greater than the savings of laying off the expensive and skilled IT staff.

This is not to say that the reorganized IT staff were stupid or lazy. They worked very hard and ran themselves ragged trying to keep up with the cycle of operations, while trying to skill themselves up in their "spare time" and with a slashed training budget.

The lessons I learned from this experience speak for themselves.

What lessons that may have been learned by any of the other people involved, especially the executives who made these decisions, I cannot say.
fallenpegasus: (Default)
I was working on a highly constrained consumer electronics device, a little "satellite device" that spoke to the main device over a CATV RF coax cable and also received commands from an IR remote control. My code was failing in bizarre ways. I adopted an extremely paranoid defensive programming stance, filling my code with asserts and doing paranoid cross checking of all inputs. This didn't make the device work. Instead it consistently didn't work, instead of inconsistently, because the cross checks and asserts would usually (but not always) trip before it would crash. It also started to run out of memory because of the all the paranoia code I had added.

I asked for the source code for the driver for the IR receiver, and for the driver for the CATV RF digital transceiver, and for the peer code that was driving the cable digital that ran on the main device.

The driver for the CATF RF digital transceiver was handed to me the first time I asked. And by "handed to me" I mean that I was pointed to where it was sitting in the source repo.


The business partner / hardware supplier who was supplying the IR glue and drivers just , after giving me a runaround, finally just flat out refused, citing trade secrets, confidentiality, secret sauce, and similar bullshit.

So, I finally "stole" the source code with a disassembler. And found the sources of many of my problems. It was complete shit. "Unexpected" input from the silicon would cause wild random pointer writes. And random sunlight on the receiver optics would cause it. "Expected" input of undefined remote commands wasn't much better, generating and handing back blocks of garbage with incorrect block length headers.

I ended up writing, nearly from scratch, a replacement IR receiver driver.


The peer device driver code was written by a developer in a different group in my same company. I finally got the P4 ACLs to read it after loudly escalating, over the objections of it's developer and his group manager. It was also complete shit. I cannot even begin to remember everything that was wrong with it, but I not only figured out may of the sources of my own pain, I also found a significant source of crash and lockup bugs that afflicted the main device.

I was not allowed to rewrite the peer code, as it was not in my remit. However, I was able to sneak in and check in a large number of asserts, using the excuse that they were "inline documentation".


On, and the device driver for the CATF RF digital transceiver? The source code I got for the asking, without a fight? When I reviewed it was easy to understand, efficient, elegant, and as far as I could tell, bug free.


In the end, I made my part work. It just took over two months instead of the original guesstimate of less than two weeks. This caused a schedule slip in the release of the satellite box. Which would have been a more serious problem, except…


Except there was also major schedule slip for the main box. A significant reason for that slip was because the peer code that I had filled will asserts was now crashing with assertion failures instead of emitting garbage. I was lucky that I was not more officially "blamed" for that. The reason why I wasn't, was mainly because the people who understood what I did understood the problem, and the executives who didn't understand what the problem was were also too clueless to blame anyone, let alone me.


My lesson learned from this experience is: if someone is refusing to show the source to suspect driver code, citing trade secrets, confidentiality, secret sauce, partnership agreements, or similar excuses, it's not because they are protecting their magic. It's because they have screwed up, and they are trying to hide it.

A second rule of thumb I have is: source control systems that don't allow any developers to check out and review any arbitrary source code file are expressions of moral failure. It is unethical for an engineer, designer, or other technologist to ever sign off on a project that has been mutilated by such a broken tool.
fallenpegasus: (Default)
It's really annoying to be so aware of a non-rational mental block in my own head, know it's origin, understand what it's trying to protect me from, know how and why it's counter-productive, and have that piece of non-rational pattern of thought also be the very thing that is stopping me from letting go of it.
fallenpegasus: (Default)

I just went on a half-hour binge reading about pertussis, as a result of reading that WA state has an epidemic outbreak that the public health agencies are struggling to stop.



Reading people's first hand accounts of having it will cross your eyes in empathized pain. One person described that she has given birth, has suffered a compound fracture of a leg, has passed a kidney stone, and has had whopping cough. Only one of them made her wish for death. It's been described as feeling like an asthma attack while someone is punching you in the ribs. Oh, and most all cough medicines do pretty much nothing for it.



You, reading this. You. Right now, pick up your phone, and call your doctor's clinic. Ask them if you're up to date, and if you're not, go get your freaking DTaP shot. You can get one at Walgreen's for less than the cost of a high-end Starbucks drink. You owe it to yourself, you owe it to public health, you owe it to your friends and coworkers, and you owe it to every pregnant woman, every newborn, and every immunocompromised person you share this biosphere with.

fallenpegasus: (Default)
If you found this personal blog from some link about my work on open source and open standards work, my work on OpenShift, on Drizzle, or my speaking at and participating at some technology conference, or so forth, you probably want my tech blog over at Machines Plus Minds.

This personal blog is entirely for stuff about my personal life, and if you don't know me personally, you will probably find it utterly uninteresting.

Profile

fallenpegasus: (Default)
Mark Atwood

May 2017

S M T W T F S
 1234 56
78910111213
14151617181920
21 2223 24252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 26th, 2017 11:57 am
Powered by Dreamwidth Studios