The Misadventures of Quinxy truths, lies, and everything in between!


My Move Away from the Das Keyboard and Back to the IBM Model M

modelm_4My Das Keyboard experiment was short lived.  I sent it back after a week.  The Das Keyboard was good, don't get me wrong, but it just wasn't good enough.  I was looking for something that would feel to me like an improvement over the venerable IBM Model M, and it just wasn't.  The feel of the Cherry MX Blue keyswitches was good, but not quite the same as the buckling spring Model M keys.  And the click of the Cherry MX Blue keys seemed a little higher pitched.  At $140 the Das Keyboard was too expensive to keep when I could get a refurbished IBM Model M off eBay for half the price.  And so I did.  I got a 1991 IBM Model M (1394540).  The guy who did the refurbish job made it like new, truly impressive.  And with a little "blue cube" USB to PS/2 converter it's working great on my Windows box.  The only thing I had to do was to remap some keys so I could add some of the modern functionality we expect from keyboards, restoring the Windows key, menu key, media control keys, and app launching keys.

Ah, the joys of typing on the IBM Model M.

^ Quinxy

Tagged as: , , , 1 Comment

My Move to the Das Keyboard Ultimate Model S

metadot-das-keyboard-ultimate-i50-800I'm a mostly self-taught typer.  Years of doing it have meant that I do it respectably quickly and without the need to look down (except for very infrequently used keys, e.g., F7), but the problem with being self taught is that I've never kept my fingers over the home row, and that has meant I do two big things wrong: a) if my keys went off the keyboard, perhaps to reach for the mouse or a drink, my initial resumed keystrokes are highly likely to miss unless I look down and re-orient my fingers, meaning at best I slow down and at worst I make typos, and b) my typing is dominated by my index and middle fingers, leaving my ring and pinkie fingers doing relatively little (the ring fingers jump in occasionally, but aside from the right pinky hitting return the pinkies do almost nothing), and this surely causes a slow down.  So, wanting to finally tackle this problem, wanting to boost speed and reduce typos I decided to take action.  Also, I was having nostalgic pangs for the keyboards from the 1980s, like the much loved and wonderfully clickey-clacky IBM Model M keyboard.  As a result, after a little research I went with the Das Keyboard Ultimate Model S keyboard, with the Cherry MX Blue key switch option.  This keyboard setup is pretty well regarded as the most IBM Model M-like (apparently you can also still buy remakes of the original, but the Das Keyboard seemed a better option for me).  What makes this keyboard "ultimate" is the lack of lettering on the keys, they are all, without exception, black.  No hints as to what key represents what letter, beyond your muscle memory (and normal memory).  I first learned of the keyboard about a decade ago, but dismissed it entirely as some sort of joke, seeing it as a novelty keyboard meant primarily for programmers in an office so that they might brag about their l33t typing skills.  With no one to brag to, and now a buyer, I suspect my initial dismissal was hasty.  I'm now only a day into using this keyboard and my greatest relief thus far is that I'm able to type at more or less my normal rate.  The only significant problem I'm encountering is when I switch from writing prose to coding and need to use the keys farthest away from the center, where my accuracy without looking is poor.  I've been trying to force my fingers into the home row and onto their proper keys, but then all my fingers rebel, the pinkies furious that they are being asked to do work they've never done, and my index and middle finger annoyed they're suddenly almost idle.

We'll see what comes, my old speed was 75 wpm...  here's hoping I get up to 85-90 wpm once my fingers get used to this.


Filed under: Technology No Comments

Note to Self: Clean Out Laptop Vents More Often!

I recently had a problem where my laptop shut down to protect itself from heat after only a few minutes of playing a game.  I'd played the game quite a bit in recent weeks, so I couldn't figure out why the computer shut down this time.  I installed Core Temp to keep track of just how hot my CPU was getting and sure enough it would instantly jump up to 200-215 F the moment the game started and hover there (max CPU temperature before shutdown is ~221 F).  Not knowing what the temperatures were expected to be playing this game, I didn't know if my situation was highly unusual or totally normal (seemed unusual, but I wasn't sure as the laptop wasn't meant for gaming).  I made a mental note to clean out the CPU and GPU vents on the laptop.  Today I did that and wow, doing the exact same thing the CPU temperatures are now 160 F instead of 210 F, a huge 50 F drop (25% drop)!  I had no idea it could make so much of a difference.  I really must remember to clean out the vents/fans once a month.

^ Q

Filed under: Technology No Comments

Sketchup Hanging on Start? Disable OpenGL Acceleration via Registry

My Sketchup 2013 copy suddenly stopped working right. First it would hang if I tried to add a scene, then it just hang and race the processor once it started up. I tried all the latest drivers for my AMD Radeon 7800M, but no change.

I knew I could at least run Sketchup if I could disable the use of OpenGL hardware acceleration.

The registry key that you need to modify is in this registry branch:
HKEY_CURRENT_USER\Software\SketchUp\SketchUp 2013\Preferences

Modify this registry key:

And make it now equal to 0 (it's of type REG_DWORD)


Sketchup should now start!

Of course it'll perform very poorly if you're working with a big/complex model and you're using "View > Face Style > Shaded" or  "View > Face Style > Shaded with Textures" so remember you can switch to "View > Face Style > Wireframe" when you can get by without seeing the faces and textures because that will still perform very well.

Working without the hardware acceleration is better than not being able to use Sketchup at all.  Not sure if my problem is truly a driver problem as Tremble/Sketchup would have me believe or if it's a bug in Sketchup.

^ Quinxy

Tagged as: No Comments

More LinkedIn Connections Doesn’t Mean More LinkedIn Profile Views

linkedin__1217linkedinI was a bit surprised to realize just how uncorrelated the number of first degree LinkedIn connections and the number LinkedIn profile page views can be.

My profile views are quite low (~7/day), with at least half of that coming from people I'm sending invites to.  At best I might be getting 2 or 3 visits/day which are effectively unsolicited (coming in from search/etc.).  And yet according to LinkedIn's "How You Rank"  my modest 200+ connections profile is getting more profile views than people with hundreds of times more connections, specifically people with 29,500+, 20,000+, 7,500+, 6,000+,  4,000+ first degree connections.

Those insanely connected users are clearly heavily invested in their LinkedIn account profile, many of them have hundreds of skill endorsements, dozens of recommendations, and their profiles are rich in detail some even including clips from them presenting at this or that event.  And yet I have more profile views.  Which certainly strongly suggests that simply having billions of connections and a thorough and fully endorsed/recommended profile isn't much use in driving traffic to your profile.  I had expected people that many connections and those LinkedIn credentials would be highly favored in LinkedIn's search and thus would inherit quite a few daily profile views, but not necessarily so.

The recommendation people make about being active in the LinkedIn news feed comments and in groups in order to get profile views would seem to be perhaps the only way to generate correlated activity on your profile.

Update: It's two weeks later now and last week I had 216 profile views last week (31/day).  Most of these I suspect were from people who I had invited checking out my profile.  This activity has been enough to put me in the top 2% of profile views from people in my network (#36 out of 1910).  Many of those in my network appear to be powerhouse social media users, so ranking above them certainly further suggest that even the most socially active people do not see large volumes of LinkedIn profile views.  I'll be curious to learn how many residual hits a day I get as my campaign of friendliness winds down, they would then be coming through search and LinkedIn comment activity.

^ Q


Rack2-Filer Smart is a Terrible, Awful, No Good Upgrade – Don’t Do It!

See below for details on recent, important update which makes this software almost as good as it used to be!

I've always had a love hate relationship with PFU's (Fujitsu's) Rack2-Filer.  I love that it is a computer-based alternative to a real/non-portable filing cabinet, but I hate that it has always striven to be nothing more than exactly that.  Where other companies might have rethought what it means to store and access virtual documents and delivered a bevvy of features to make that experience brilliant, PFU created a bewilderingly crippled experience almost as bad as real life.  The interface was a virtual cabinet with virtual shelves on which go virtual binders.  They mind-numbingly impose real and hard limits on how many virtual pages you can put in a binder, how many binders go on a shelf, how many shelves go in a cabinet.  Still...  as awful as it is, and it is awful, there is a certain strange, agreeable functionality about it all.

5-28-2013 8-39-54 PM 5-28-2013 8-41-24 PM

PFU recently released Rack2-Filer Smart as a replacement for Rack2-Filer.  I was eager to upgrade because one of the biggest offenses of the older product was its inability to be accessed from other devices, like Android or iOS tablets.  When I saw that Rack2-Filer Smart apps showed up in the app stores and realized you needed to upgrade your desktop client to use it I wanted to upgrade (I also prayed they would improve their software).  Ugh.  Upgrading was not a good decision.

PFU (a Fujitsu company) is just about the most incompetent software company I've ever encountered.  They are mired in stupid.  Whatever they might do right, however many brilliant people they might have, they've got just enough horribly inept and stupid people to ensure that their success will be forever limited.

The first major problem I encountered was that they provided trial links on their site to download and try out the Rack2-Filer Smart software but no buy links.  I even installed the trial thinking it would have buy links.  It did not.  There is no way to buy a downloadable version of their software online, despite them letting you download a trial.  That's pretty stupid.  Then I went searching for a physical version to buy.  As I own the old version and don't want to throw my money away I looked for and found an upgrade version on their and other e-commerce sites.  All "unavailable"/"sold out".  There were no copies to be had anywhere.  Huh?  I could buy they full version but no upgrade version.  I even checked eBay and found nothing.  A week or two later eBay let me know that someone was now selling Rack2-Filer Smart on eBay, and I got a full  (non-upgrade) copy for what seems now the going rate of $59 (presumably a copy included with a Fujitsu scanner sale).

5-28-2013 8-40-46 PM 5-28-2013 8-40-18 PM

And thus began my unpleasant experience with Rack2-Filer Smart...

First the import of my previous libraries failed.  One of the 49 cabinets it was trying to import would fail without any sort of useful message.  It suggested my drive might be full or there were file permission issues.  It took me an hour but by a process of elimination and guesstimation I worked out that it couldn't read it's own damn .ini file format, there was some OCR text in the OCR text section of the .ini that must have been causing some problem.  I removed the OCR section from that .ini and it would now import.  Stupid PFU.

With Rack2-Filer Smart now working the real horror began.  They seem to have rewritten everything, and in their rush to get it out decided to leave out tons of very useful features that people like me surely relied upon.  And, adding insult to injury, they decided to go all skeumorphy  and try and pretty up this pig of a program by slapping some lipstick on it in the form of photo-realistic shelf backgrounds and binder spines.

Here is my list of seriously horrible things they've changed/done in this latest release:

  • No more index sheet as the first page in a binder.  You now need to click to pop-open a list of sections.
  • No more drag and drop re-ordering of divider sections from the aforementioned index sheet, and the aforementioned pop-open list of sections has no drag and drop.  The nearest thing you can do is use the thumbnail view in the pop-open window to select, cut, and paste the items.  Works, but it requires a lot more clicking.  You'll see.  It's awful.
  • When you open the Binder Viewer it isn't maximized by default, and when you maximize it it doesn't bother zooming the display, so you've got your binder and its pages un-readably small on a normal sized modern screen.  No setting to fix this.  Idiotic. It means I have to click maximize and then the fill double-page view buttons every single time I open a binder.
  • Binder tabs are now useless.  The old version was pretty good about letting you see the tabs of adjacent divider sheets.  This new version is horrible, instead of dynamically placing the tabs the new version has only five spots for them, so your view of tabs is perpetually obscured.  And the font size on the tabs is huge so every single tab label is cut off and unreadable.  No settings to alter this.
  • You can't easily flip between sections.  I used to be able to press ctrl+right arrow to jump to the next divider section to the right.  That feature is gone, can't seem to find a replacement key combination.  And because most tabs are hidden behind other tabs you're just screwed and have to use that dumb pop-open list.
  • You can't easily flip between pages.  The old version let you disable the stupid/slow page turning effect.  The new version has no such option.  Pages turn deadly slow even on a super fast computer.
  • No right click context menu to add dividers, delete pages, etc.  One of the most awful changes is the elimination of the right click menu.  You now need to use the stupid left hand control options, which takes five clicks to accomplish what I used to be able to do in one or two.  And you have to memorize which items are behind which side menu icons, this is awful.
  • Main View (Library/etc.) is absurd.  They decided that putting a JPEG of an actual office behind the fake shelf makes for quality software.  It does not.  It's straight out of 1998.  And, again, the window doesn't launch maximized and auto zoom, so it looks like crap and is barely readable, hiding the second level titles because it's so small.
  • Import is flawed (see my comment above)
  • Android / iOS app connection is seriously stupid and un-intuitive.  Any normal human expects the following experience: Go to your tablet, open the app, see the list of libraries, open the one you want, see the cabinets, open the one you want, see the binders, open the one you want.  Browse the binder.  How hard could that be?  This idiotic version works in a completely different way.  You need to be on the desktop computer and mark a binder as "exported" and only then does it run the server required for remote access and you can only access the exported binder.  And when the remote app connects it can only see that exported binder.  Maybe you can export more than one at a time.  I didn't get that impression, but I gave up on the feature pretty quick.  Oh, and it seems to download the entire binder, rather than fetching only what it needs as it needs it, which makes some sense in terms of local performance, but a "streaming"-ish option would have been nice.

I wasted a lot of time trying to figure out how to work around Rack2-Filer Smart's buggy legacy import and I wasted a lot more time trying to figure out why the Android app wouldn't connect (nothing mentions that the server doesn't run unless a binder is "exported") and how their concept of app-desktop interaction requires this odd "export"-based strategy.

(Now, in the interests of full disclosure there may be some better way to access use this software...  it looks like both app and desktop can sync with Drop Box and Sugar Sync, which may allow you to use it without this export bullsh*t, but as I have neither a Drop Box nor a Sugar Sync account and as I'm pretty fed up with my experience thus far I'll save that investigation for another day.)

PFU sure knows how to make a bad product and that's exactly what they've delivered, a tone def mess that will now makes everything I do with their software take more time and more mouse clicks.  And it's a real pity because with a few dozen (or hundred) additional man hours they could have at least made this product no worse than their last one.

Unless you absolutely, positively must have their crappy version of a tablet connected Rack2-Filer experience I would stay away from this upgrade like the plague.  I pray it matures and they add back all the features/shortcuts they removed.

UPDATE as of 9/9/2013 (version V1.0L20)
Finaly PFU has released an update that has begun to bring previous features back!  The previous updates seemed to be nothing more than bug fixes.

I can joyously report that one of the most glaring omissions, the context menu (or right click menu) has returned!!!  Finally Rack2-Filer Smart is usable again!  It's still not where it was, before their dumb "Smart" update, but I at least now have have reason to hope the rest of the problems will be fixed as well.

Also, another petty but important fix is that the binder window now remembers its previous size and zoom level, meaning you no longer need to enlarge and zoom every single time you open a binder.  Sadly the main window still lacks this memory.

A huge improvement in this update is in the importing of scanned documents.  If you have a binder open and do a scan it will now insert the scanned documents into your current location, a vast improvement over the previous behavior which would tell you to close the binder, at which point it would insert any scanned documents at the front of the binder forcing you to awkwardly move them to their final destination.

I also noticed that page flipping seems faster, but there is still no ability to turn off the stupid page flip effect.  For the love of Pete, guys, please let us skip your stupid page flip animation!

Tabs can now be dragged to be repositioned! Maybe they could previously, but if they could it certainly wasn't obvious (it isn't obvious now, either, but I happened to discover it).

And the software is still lacking vital shortcut keys, no page flipping hotkeys (the old ctrl+right/left arrow IIRC to jump to next divider doesn't work), and ctrl+f doesn't place you in the search box.

Apparently this version also includes some sort of change in binder structure such that your binders are converted once they are opened and saved, and made incompatible with previous versions.  Not a big deal for most people, I'm sure, but something to be aware of if you're syncing data with a slightly older version you can't upgrade (e.g., in a work environment).

All in all a good day for Rack2-Filter Smart, the first day I used it when my mind wasn't filled with cursing and regrets.  Keep the improvements up guys!  Bring back ALL the functionality you took away!

^ Quinxy


The Infuriating C# Out-of-Code References

cs_sourceI love C#.  It takes everything I loved about my years programming in early Java and adds boatloads of wonderful.  But, there is one thing that perpetually infuriates me.  All C# source code includes coder-included class, type, and other references that are all relative to a list of "using" statements at the top of the source code file and also a list of libraries managed separately in the Visual Studio UI.  The problem is that all the wonderfully helpful source code that people post on the web never includes these UI-managed library references, which means that any time you copy and paste those bits of C# source code you will get lots of squiggly red lines telling you that Visual Studio has no idea to what the classes, types, etc. given in the source code refer.  And since I've just searched the web because I didn't know how to solve a problem or because I'm learning some new framework or paradigm via some example on a page, I usually have no idea what library or libraries I need to reference in order for all the dependencies to be satisfied.

Case in point, I just had a look at the Google Drive API "Quickstart".  They show you a simple snippet of source code you are supposed to try yourself.  They do not give you a Visual Studio project, just the code on the screen you need to copy and paste.  They also tell you to download the API libraries.  I did.  The library has what looks like a common library directory with 10 or so DLLs (and various other files) and a separate folder with 45 folders for various "Services" and inside those more DLLs.  And I am somehow supposed to know which DLLs this 20 line piece of source code needs???  So to be safe I end up including all the common libraries and both the libraries under the "DriveService".  But the code won't compile.  All the references are satisfied but now there's ambiguity between  because an extension method is defined in two separate imported DLLs.  It takes me another 20 minutes to figure out which one I don't need.  Why do we have to go through all this???  It is all so utterly needless.  I can't tell you how many times I've been unable to try out a piece of source code because something has gone wrong in figuring out and finding the libraries that were needed, and which versions of the libraries were needed (since libraries can radically change with every release).

What boggles the mind is that neither Visual Studio nor third-party VS plugins like ReSharper do anything to help.  Surely something could be done to largely eliminate this problem!  At the vary least, why couldn't they include a "header" like region at the top of the VS editor UI which lists the actual fulfilled references for that active file.  It wouldn't actually be part of the source code, it would just be a handy little (perhaps collapsed) virtual piece of commented code that would be copied whenever you ctrl+a ctrl+c file contents.  And when you pasted it elsewhere it would let people know what out-of-band files they were missing.  The format would probably just specify the Portable Executable data for the file and the hash (not the actual path which would be less useful and less anonymous).

Here's hoping they do it one day, or someone makes a nice little third-party plugin that is able to sort it out for you (by having a massive DB of exported library functions and some good heuristics)...

^ Q


Why Certificate Authorities are Stupid


All certificate signing agencies basically do the same thing, they provide a means by which a user browsing a site or using a piece of software can know who is operating the site or writing the software.  Code signing (and signing in general) is a wonderful thing.  I fully believe in it.  But you don't need these centralized commercial entities to provide it.  And I'm just not convinced of the value add of signing authorities which charge a lot of money to (in my view) add only a thin veneer of security.

The vast majority of those applying for certificates are surely entirely legitimate and provide entirely legitimate details.  That means that the vast majority of certificates signing authorities give out are entirely valid.  But that's not proof that the system is good.  Surely the effectiveness of security is determined not by those who intend to stay within the law but those intend to violate it.  Airport security is not good because it finds no bombs on lawful people, it is only good if it is able to find bombs on unlawful people.  Certificate agencies' version of due diligence is laughable, they generally require nothing more than emailed (or faxed) images of desired documents.  Could someone submit easily photoshopped documents to a signing authority and have their credentials "validated" such that they get a signing certificate?  Yes, it's been done.   And even if the certified owner was valid at the time the certificate was issued, the security provided to end users (those looking are supposed to rely upon the certificates) is fleeting at best; the certificate owner can always move, disconnect their phones, or give the certificate to others.

Now in no way are these signing authorities radically different than the purveyors of other more traditional security products.  It's true that we put locks on our houses and secretly know they would keep out only the laziest or stupidest of criminals (lock picking being an easily acquired skill and glass being easily broken), but signing certificates have the potential to be so much better.   The fact that they are not, and that they cost so much for not being so superior to self-signed certificates, frustrates me.  I just wish signing authorities would either do more (require you show up face-to-face at an office with a passport to be fingerprinted and DNA mapped) or do less (acknowledge how easily they may be deceived and not make you jump through hoops to proffer false 'proof').

But here we are in the land of is...  God bless the industry of false security.

^ Q


Google+ Hangout C# Control / WPF

The free, multi-party video conferencing offering Google+ Hangout is a pretty fantastic alternative to Skype (and its paid multi-party option).  Wouldn't it be wonderful to have a UI control you could drop into any .NET application that gave you all the power of Google+ Hangout?  Well, it would...  and I've been working on it, but so far it's not proved easy.

First a bit of back story.  I have been working on an app which features embedded video conferencing and had gone initially with Skype.  Skype has been a somewhat miserable experience thus far, workable but only just.  The only way I've been able to integrate with Skype thus far has been their Skype4COM option.  Skype4COM allows you to remote control certain features of Skype from a third-party application.  You can initiate calls, hangup, mute, and things but you can't hide the original Skype interface or embed its video in your own application.  There is a way to do all that, and it's SkypeKit.  But for reasons unknown to me they seem to have suspended SkypeKit access.  I applied to the program many months ago and my account still says something like, "We'll get back to you about SkypeKit when we're ready for you."  I've heard from others that that's just the way it is right now, that they are redoing SkypeKit or something.  At any rate...  Skype isn't a great solution at the moment.  Google+ Hangout on the other hand would be perfect, if only it worked.

I spent a few days a few weeks ago trying to create a Windows control that would let me embed Google+ Hangout inside a Windows control.  The logical approach to do that would be to customize a web browser control to load up the web-based Google+ Hangout and just modify the rendered content and inject JS as necessary to achieve the desired control-ifying of Hangout.  I've done that before, so I didn't think it would prove so tricky.  

Microsoft WebBrowser Control

I first tried using the built-in Microsoft WebBrowser control as the hosting control.  I automated Google account sign-in and had it load up the Google+ Hangout page.  I hit the first major roadblock.  The page gave me a warning about my browser agent not being supported.  I went back and added code to spoof it, but that didn't seem to work as the WebBrowser control isn't all that sophisticated and only spoofs the user agent for the first request, not subsequent ones or ones that the loaded page fetches.  I tried several alternative WebBrowser extension classes that try to intercept navigating requests and replace them with navigate calls that include the spoofing, but they didn't seem to work properly.  If memory serves I did reach a point where I was able to call the JS to start a hangout but everything hung when it tried to install/start the hangout.


The next option I tried was Awesomium, a Chromium-based behind the scenes browser rendering system.  After looking at some of their examples and struggling a bit with their concept (which differed radically from the WebBrowser control and MozNET control approaches I was used to) I ended up realizing I could use one of their demo apps as a quick way to test the concept.  They had a tabbed web browser demo which I used to access Hangout.  I was able to initiate a Hangout but the video of the Hangout was not contained as it should have been within the Awesomium demo browser, the Hangout window was at the top left of the screen whereas the browser was in the middle.  So it worked but if they couldn't control where it was rendering then I didn't think an Awesomium would be an easy solution.

MozNET / Xulrunner

Next I tried my old friend, MozNET.  MozNET is a XULrunner implementation which I've quite enjoyed using before.  There again I wen the easy route first and used a demo browser example to see if I could get it working.  Sadly it did not work.  It would just hang at the step where Hangout is checking for its plugin. I feel like a MozNET solution wouldn't be too hard to achieve, but I don't have the depth of knowledge in it to make it happen easily.  I know MozNET can be made to work with various XPI-based plugins.  

Oddly enough, Google+ Hangout doesn't seem to be an XPI plugin. I did a procmon.exe dump of a Firefox when using Hangout and I see access to: 


And a separate EXE gets launched:
C:\Users\foo\AppData\Local\Google\Google Talk Plugin\googletalkplugin.exe

But I'm not sure how what is doing the communication between Firefox and the Hangout code.

If anyone has any thoughts they'd like to share, please let me know!  I think the world would benefit from an embeddable Google+ Hangout control...  I know I would.

^ Q


The New Kindle Scam : The High Cost of Paperless?

kindleWhen Kindles (and all the other e-reader marketplaces) came into the world one of the big selling points was that books would now be cheaper!  And how could they not be cheaper, there was no physical book to manufacture or ship!  All the various e-reader marketplaces do showcase many lower priced books, but more and more I'm seeing the Kindle version of books priced much higher than the physical books (BOTH hardcover and paperback)!

Take this recent example, the paperless Kindle version of "The Art of Innovation" is 13% more expensive than the hardcover and 70% more than the paperback!

The original logic of "it costs less to publish an ebook so we'll charge less and the consumer will then buy more e-books" has now given way to "let's charge the consumer more for the convenience of an e-book, bank the extra profit, and who cares if they buy more e-books".  I'm not saying publishers can't do what they like, shouldn't do what they like, I'm just a little tired of being white lied to.  If the ultimate goal is to screw us into paying more for books, don't butter us up and suggest the future will be the complete opposite.

^ Quinxy