|
title: Put the knife down and take a green herb, dude. |
descrip: One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com Using 89% of the same design the blog had in 2001. |
||
|
x
MarkUpDown is the best Markdown editor for professionals on Windows 10. It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support. Features you won't find anywhere else include...
You've wasted more than $15 of your time looking for a great Markdown editor. Stop looking. MarkUpDown is the app you're looking for. Learn more or head over to the 'Store now! |
|||
| Monday, February 29, 2016 | |||
|
If you've been using Visual Studio, but bounce in and out of SQL Server Management Studio, and all of a sudden hitting F5 is opening up a file selection dialog asking where you want to save your *.rpt file, I think I know what happened. Did you just search for something? Argh, annoying. Labels: noteToSelf, SQL Server posted by ruffin at 2/29/2016 02:33:00 PM |
|||
| 0 comments | |||
|
No, no, I'm not nearly ready for app review. Instead, I'm relaying (via Michael Tsai) a fairly interesting post from (buried lede...) an indie development newsletter. (Aside: Have you noticed that email newsletters are picking back up some steam?)
It's an almost humorous self-prep case-study so that you know once you're done with an app, you're not done. Unless you're on the Windows App Store, or at least the old Windows Phone 8 app store, which almost immediately approved my app when it had a show-stopping bug on launch once deployed on any device but mine, which was fun. Which is to say, the Windows Phone app store reviewer didn't even open my app before approving it. Wow. Or maybe immediately crashing looked like a feature? ;^) Labels: app store, indie, review, windows phone posted by ruffin at 2/29/2016 02:13:00 PM |
|||
| 0 comments | |||
| Saturday, February 27, 2016 | |||
|
Well, that was fun. I went all the way around my elbow to get to my nose on UWP TextBox scrollbars. I figured out how to set it in XAML pretty quickly, but for some reason spaced on getting it working programmatically. In XAML, things looked like this:
So naturally I thought I should be able to do something like this in code... (To be clear, the following doesn't work, though, in my defense, it apparently used to in Silverlight)
Or, maybe, at worst, this:
Nope, no dice at all. Hey me, it turns out that's the wrong idiom, you idiot! After going all the way through putting the stupid TextBox into its own ScrollViewer, and then managing scrolling by coordinating TL;DR -- Here's the answer...
That's a weird idiom for me, though it's essentially the same thing you do when you set rows and columns for
I'd expect each And it's not like the start of the text on the MSDN page helped a ton... It starts by making you think you have to manage this all yourself. Maybe it changed later? Nah, I'm sure I missed the answer a half-inch below.
Oh well. Live and learn. Man, I made that tougher than it shoulda been. Labels: c#, howto, noteToSelf, uwp posted by ruffin at 2/27/2016 02:49:00 PM |
|||
| 0 comments | |||
|
I don't know, seems like another QA fail at Apple, doesn't it? From Six Colors:
Who is in charge of QA at Apple again? (Past posts on Apple QA (and other) fails here with lots of overlap and perhaps one or two additional posts on QA here). Labels: apple fail, qa posted by ruffin at 2/27/2016 01:49:00 PM |
|||
| 0 comments | |||
| Wednesday, February 24, 2016 | |||
|
From today's New York Times Afternoon Update email: Whoa! Seems there was another party or two involved at some point before we started worrying about how poorly the Republican nominee plays with the Speaker of the House. Can't tell if this is a horribly smart plant by some Trump PR folk trying to Force our way into thinking the GOP can't help but win the election or if the Republicans are so worried about Trump they're putting him in the same set as, "Hillary won. What the heck do we do now?" (No, I haven't read the article. When you're a newspaper, you have to make sure the reader can stop at any natural stopping place (a paragraph, for instance) and have a reasonably good idea of what's going on. I forget the term -- spiraling composition?) Labels: Other Stuff posted by ruffin at 2/24/2016 04:51:00 PM |
|||
| 0 comments | |||
|
I didn't realize that Sublime Text 2 overrode some settings when you went into distraction free mode, though I did notice my line numbers were, unfortunately, gone. Well, that's what up. A few settings are overridden if you've set them, and you have to change them back from
So now I have this in my distraction free prefs:
There. That's better. Though I'll probably eventually override Labels: noteToSelf, sublime text posted by ruffin at 2/24/2016 12:43:00 PM |
|||
| 0 comments | |||
| Tuesday, February 23, 2016 | |||
|
Put simply, this is why you would rather use Linode than Heroku:
Really? I have to support another service just to keep hold of my logs?? For realz? I was thinking today during my walk that using Heroku is like a drinking game. You learn how to play a little and then BAM, any time you see a certain action performed in the future, DRINK -- or, in this case, PAY!!! Do you know how you hold onto your logs on Linode? That's right, folks, you write them to a file. If you want to spin up MySQL? Do it, right there on the same server. It's your own box, man. Do whatever you want. I know Heroku is thinking that you'll have seventeen dynos all running together and you'll want to conglomerate all those logs into a single file on some other service, but still... I don't want to have to have a second service to replace writing to and reading files. posted by ruffin at 2/23/2016 06:36:00 PM |
|||
| 0 comments | |||
|
I've been slowly realizing why the rest of the world has already gone to streaming music. Being able to pick any songs you want -- and listen to them in order -- is a nice thing. I still usually like listening to Pandora for discovery and then grab a CD from Amazon or album via iTunes, but I'm slowly figuring out that some of these albums aren't worth the cash. It's rare, but maybe $10 a month isn't insane. (Maybe. I'm still going crazy figuring this out. Would I rather have an additional 10-12 albums a year that I can listen to whenever, wherever, or all the music I want as long as I stay addicted? Argh.) Anyhow, free isn't bad, so I've been a Spotify ad-supported user as a middle ground between discovery and purchase. It's amazing how quickly new albums go up on Spotify for you to try out. But the ads... ARGH the ads. Some are sooooo freaking annoying, especially that idiot middle-aged guy voice who acts like he's a stuttering teenager lamenting his inability to get across whatever emotion he's feeling in words and wants you to pick a song instead -- you know, the one that says, "[At a] Loss for words? Share a song." Stop it! The first ten times I heard it, I considered shelling out for Spotify (or Apple Music) to shut him up. Now, I just hit mute. Or fire up Amazon Music for Prime streaming, even though its selection is quite a bit worse. And guess what I do after hitting mute? I forget to unmute. So Spotify is paying for music I don't hear and, worse for them, I'm missing their follow-on ads. A little silence is a small price to pay for missing annoying ads, and I'll keep doing it. Either keeps the ads unobtrusive or you'll lose their effectiveness. And I'll probably never engage your service enough to become a customer. posted by ruffin at 2/23/2016 10:45:00 AM |
|||
| 0 comments | |||
| Monday, February 22, 2016 | |||
|
Just got a disappointing sales email from Apple.
I understand that Apple's just trying to jump in and replace carrier subsidies, but when you email me a deal that sounds like it came from my local car dealership, I begin to worry about your bottom line. What's the problem? As I have in the heavily edited image, above, I don't like it when you, first, encourage me to trade in a used device without it hitting the open market. That almost always means you're not going to give me what it's worth. I think I've mentioned how a friend of mine and I have joked that we could just hang out in GameStop and offer anyone in line trading in hardware 50% more than GameStop is going to give them and still make a profit. Similar too is the used car trade-in, where you almost always are taking a least $1000 less than you'd make selling the car yourself on Craigslist or what-have-you. Second is the move to monthly pricing rather than directly listing a fair price for the item. I know Apple's had a number of financing offers in the past, but it's usually in small blue print under the full price of whatever product you're viewing. I also know that Apple's been able to offload the monthly fee in folks' monthly wireless bill, which is also a little nasty, honestly, because what was really happening is that some percentage of people forgot they were financing their phone with that wireless payment and wouldn't upgrade (or find a cheaper provider) once the phone was paid off. What a scam. Either way, though, we've got Apple reaching directly for more cash on the table with adverts like this one. I was originally planning to hold my Apple stock [that I thought I should've sold around $110. What an idiot I am for not doing it], but I don't know now. Not having subsidies might be a bigger deal for the bottom line than I've heard anyone mention. That is, this ad is dirtier than anything I'd seen from Apple -- "Bring us your trade-ins, and we'll get you financed on the lot!". I guess they're losing their saleshumans that used to do the dirty work, but that doesn't make today's tact any less nasty. posted by ruffin at 2/22/2016 02:01:00 PM |
|||
| 0 comments | |||
|
Quick quote from High Performing Agile Teams: An Introduction on the Quality is Speed blog:
Yes, thank you. In other news...
The question in question [sic] is bad news on a couple of fronts, but the one Shackles doesn't like is this bit:
Ooops! Had a similar thing happen to me recently creating the image upload service for my Markdown editor. It was surprisingly easy to set up the call to the API in C#, but it quickly occurred to me that it was also really easy for someone to Fiddler what I was sending, grab the API keys, and use my account to upload as much jive as they wanted. I contacted Mashape to see if there wasn't some way to put a cap on my account, thinking I could just cross that bridge if I ever came to it. I mean, what's the point of limiting exploitation potential if nobody's going to buy the danged app to start with? (I'm an inveterate optimist, as you can see.) Then if I ever, say, hit $20 in a day (which would mean something like 21,250 image uploads in 24 hours), I'd quickly write an API, through it into the cloud, change the API keys, release a new build, and be done with a little egg on my face. Well, Mashape never got back to me, so in an abundance of caution, I wrote the cloud service. Kinda a pain, atc. I eventually settled on a system of requesting an access key, creating a trivial hash that creates the key, giving the key a sunset time, then matching that key to upload requests. If someone hits more than X in period Y, they're shut down. If the whole system receives more than Z in Y, everything shuts down. So I have my own rate limiter, and my API key, like the database connection in the bad SO question, is reasonably hidden. I mean, there's still a chance my cloud gets hacked and the code gets out, but that's a lot more difficult than grabbing Fiddler and sniffing API keys, even if they're SSL'd (which they weren't, initially). Kinda painful how quickly a small feature addition because a pain, but at least I've got a nice cloud-based API presence now. On the down-side, I'm back to thinking I need to figure out how to move my entire website over to Linode eventually, as it's sooooo much cheaper to admin it all yourself. PS -- How in the world did Redis get so popular for small-time hosted app services? I mean, if you have a distributed system, I get it, but if you want an in-memory key-value store for a single box, why would you bother? Just keep a dictionary in memory, right? posted by ruffin at 2/22/2016 01:15:00 PM |
|||
| 0 comments | |||
| Saturday, February 20, 2016 | |||
|
MacRumors recently ran a story titled, Justice Department Calls Apple's Privacy Case Stance a 'Marketing Strategy', which seems pretty interesting on its face. Is Apple's denial to crack an iPhone simply to save face? There has been a sort of conspiracy theory side to this that's well represented by Marco Arment's post on the topic:
And I gotta admit, when I first read it, I thought I bought it. But when you read through the government's motion to compel, you really don't see any of this. They say they don't have any problem with Apple having a clean room where they created fbiOS, and they can destroy fbiOS as soon as the phone's contents are extracted. Which means part of this is a sort of developer's misunderstanding, both on Arment and Apple's parts, potentially. If you write this fbiOS that allows you to try as many passcodes as you'd like without fear of the OS wiping the phone once, and you know the FBI is going to be back asking for you to do it again, why would you destroy it? Wouldn't it take time to write it the right way again? Simple business math tells you to keep it all around for the next time. And there's the only place where we have a backdoor problem. The backdoor fbiOS is going to live at Apple, and if it leaks, well, it's everywhere. Apple's going to have to play cat-and-mouse with its own fbiOS at some point if it leaks. What's strange to me is that the FBI needs Apple to do this. I have to assume they'll compensate Apple for the time it takes to crack the phone, but why don't they already have this expertise in house? I realize iPhone-as-black-box is much tougher to crack than it would be for Apple, but it's scary that the FBI can't get into these things. Imagine what another nation state could do with their data. Our intelligence is pretty obviously going in blind. More interesting to me, perhaps, is how the government flips the EULA that infects shrinkwrapping everywhere [that shrinkwrap still exists, which is, I guess, almost nowhere now]. If you say this software is yours, and you're going to control it to the point that you can change its features at any time, well, then it's still yours, capiche?
Ouch. Clever. I still hate how badly the current FBI director doesn't understand the Internet [in his public comments], but Apple's losing this one, folks. Labels: apple, encryption, privacy posted by ruffin at 2/20/2016 02:11:00 PM |
|||
| 0 comments | |||
| Friday, February 19, 2016 | |||
There are times that the Intellisense for SQL Server Management Studio gets horribly out of sync with what's in the database now, especially when you're creating new databases and/or scads of tables with SQL. I'm not sure why that'd be, as you'd think the Intellisense within a SQL client would be able to keep up with changes made by that same client, for heavens sake, but it often-to-usually doesn't. Wish I'd known about this cache refreshing sooner. Labels: noteToSelf, SQL Server posted by ruffin at 2/19/2016 12:50:00 PM |
|||
| 0 comments | |||
| Thursday, February 18, 2016 | |||
|
From PCMag, but it's certainly not the only one (I caught it on the CBS Evening News last night. I know, I'm an old soul.)
As I posted in a Disqus comment there... It's time to ensure that patient information is not exposed on the Internet. I don't care if the answer is hospitals keeping their own intranet completely separate, moving data via physical device (my preference) or if we somehow come together to pay for a second, wholly physically-distinct "securenet", we've got to stop allowing companies to be so lazy with data and not hold them accountable for the poorly foresight. The is the difference I don't think even James Comey, current head of the FBI, seems to understand when he parallels encrypted data with locked car trunks you can't open. When it's on the Internet, you've commoditized geography. Anyone who gets on the Internet, anywhere, can knock on your Internet networked data's door. Come on, folks. It's past time to move our personal data to a better neighborhood. Labels: encryption, hack, privacy posted by ruffin at 2/18/2016 11:38:00 AM |
|||
| 0 comments | |||
| Monday, February 15, 2016 | |||
|
Good to know. SSL Endpoint is only useful for custom domains. All default appname.herokuapp.com domains are already SSL-enabled and can be accessed by using https, for example, https://appname.herokuapp.com. I'm hard pressed to select heroku, which is $7 a month just to host a service, over Linode, which is $10 a month to essentially administer your own box (Whuuuut?!! What a deal!), but not screwing around with SSL for my own services would be nice. Not that web services supporting apps need more than a simple self-signed cert, though, I suppose. Argh. I guess at some point I'll have to bite the bullet and spend some time setting up Linode. posted by ruffin at 2/15/2016 02:35:00 PM |
|||
| 0 comments | |||
At the beginning of this year, we officially turned off Flash support for VHS, the New York Times video player. Wait, what? Was it April Fools day when they named this one? I mean, it's obviously tongue in cheek, but why? This is nearly as bad as GNU's obsession with recursive acronyms. But I don't see (or want, honestly) the Times having the same flippant, sarcastic culture. Oh well, at least Flash is dying. I guess that's progress. posted by ruffin at 2/15/2016 10:49:00 AM |
|||
| 0 comments | |||
| Wednesday, February 10, 2016 | |||
|
I've noticed recently that Feedly isn't doing a great job keeping what's read up to date across all of my devices, and there are a few. I read largely via browser when I take a break from work, on my iPad mini at home using the first-party Feedly app, and via Phonly on my Windows Phone, which I've been using to test apps and to bridge the time between when I sold my iPhone 5S and when I buy an iPhone 7*. So lately I've seen things marked read reappearing on different devices. That's a pain. I wanted to tell Feedly, or at least see if that's more common recently on the forums. Well, forget it. There's nothing. The "support" link gives you this... ... and that's completely fair. If you can't give $5.41 for support, what's the point? And for less than a fancy burger, I'm getting email and chat support for a month. That's crazy, you know? Recently, I complained that I had too many podcast release announcements show up in my RSS feeds, and Jason Snell of Six Colors not only responded, but did something about it, dang it! An hour later, all the while telling me how useful the posts were, and how I was the only one complaining, he'd made me a custom RSS feed! I wasn't planning on becoming a "patron", but when he requested it, it was difficult to say no. He'd wasted a cool hundred bucks, just to guess, of time on me. Couldn't I afford to give him half that back? Really tough to say no, even though the only thing I supported previously was Trace Ramsey, a great writer from NC. (Now that said, I paid for Overcast back before it was patronware, tipped David Smith for Pedometer++, and purchased all sorts of podcast sponsor jive -- Fracture, Hover... something I forget... and eventually Linode, if I ever get off the tookus.) The bottom line, though, is that Feedly is doing it right. I'm probably going to release the Markdown editor I'm writing as "serious" paidware ($5+) at first, even though -- no, precisely because -- it'll greatly reduce the number of users. I'd rather support 10 serious folks' feature requests than address 100 folks' pet peeves. How invested are your customers, and which ones do you really need to help? If they aren't paying you peanuts, you'll lose more time === money replying to them in an email than you'll ever make back, more than likely. Build your core audience, and start by putting up a very conventional barrier to entry -- cash. It's sort of like the old, "Who is more committed to breakfast? The chicken or the pig?" bit. I want to listen to the pigs, to mix metaphors painfully. Of course I still haven't paid Feedly so I can ask what's up. Or Phonly to get rid of the two banner ads it keeps running (its Twitter feed hasn't updated since 2014, fwiw). And that's the kind of user you don't want to waste your time placating#. ;^) *I've got to say, going six and a half months without an iPhone has been more annoying than I'd thought. I mean, Windows Phone 8.1 is pretty good, much better than I'd expect. And now that it's got Crossy Road, I can't even complain much about games. But if I was a betting man (I'm not), I'd put some cash on me going for the iPhone 5se when it's released in a month. I'd like to think it's because I like the smaller phone (I think I do, especially with the mini to play GIANT phone when I'm at home), but it's probably, admittedly, partially due to impatience and partially to save a few hundred bucks. Still, I'd kinda hope I wait it out and get the "full" iPhone 7 experience. Decisions, decisions, first-world decisions. #Maybe. I mean, you never know how many of those folks will shell out after you help them, a la me and Snell. I used to email one developer about their app when I couldn't tell which to buy, and if they replied quickly, I'd buy theirs. Active support of any kind is worth something. posted by ruffin at 2/10/2016 10:09:00 AM |
|||
| 0 comments | |||
| Tuesday, February 09, 2016 | |||
|
At what point are you checking in too many files as a single commit? I don't know, but I think more than twenty is getting really close. I understand we like to have things working great before checking things in. I'm really bad about creating a "defensively written" feature and not checking it in until "it's at version 1.0". Admittedly, I'm unlikely to change that real soon, as when I'm writing this way, nothing I do impacts any existing code, and I usually maintain an independent repo somewhere with my feature in a testing framework as I develop. Then you add a hook to call it somewhere in existing code, check it in, and profit. But if you're hacking twenty or more places that other folks are hacking too, you could potentially sideline someone for hours before they can reintegrate with whatever mental model you were using to create those changes. You have to make bite-sized changes and check them in to your team's shared repo (so team-dev, if not dev proper) as you finish each mental unit of work. It's lots easier to eat a watermelon (Why watermelon? Well, really, who wants to eat an elephant? You have to draw the line on meat somewhere, right?) when it's cut up into bite-sized chunks. Don't dump a watermelon on your repo, man. Labels: coding, style, version control posted by ruffin at 2/09/2016 01:00:00 PM |
|||
| 0 comments | |||
| Monday, February 08, 2016 | |||
|
One of the serious disadvantages of having alpha software is that you need to already start dogfooding it. So if you're, say, writing a Markdown editor, you need to start using it to write you blog posts. This is great until you find that you'd like to make a change to the app's behavior, which turns a quick 15-30 minute blog post into 15-30 minutes of blogging plus 90 minutes of feature refactoring. Oh well. That's what you've got to do. I didn't like the way I was inserting quoted text or, rather, marking up a block of text as a quote, so I rewrote it for this post. Fun times. But wow, it's nicer. I like having elegant white space in my files, and now the app will ensure you have two newlines before and after a blockquote in your markdown. Simple enough, if it wasn't for insane UWP TextBox newline management. I completely rewrote how I was handling that so that I could access And though this blog's "main" topic is related, let's move on... Was checking out Rachel Andrew's free chapter from her book, The Profitable Side Project (hint #1: A Markdown editor probably isn't going to lead to Hats of Cash), which quoted this MVP (minimum viable product) definition from Jon Radoff from 2010:
Obvious, it seems, but I think it's worth looking at "minimum" and "viable" on their own terms as independent characteristics of a product, and know that mvp isn't some concept that exists on its own. It is the intersection of these two sets, as his Venn diagram depicts: ![]() I think Apple's completely lost the ability to do this, btw. Read through Michael Tsai's run-down of recently reported problems with Apple Music combined with his run-down of Mossberg's post and reactions to see what I mean. Apple's stopped making viable software, and has grossly overemphasized minimum. This bit from Jason Snell that Tsai points out is my "favorite", insomuch as a report of a horrible user experience can be a favorite:
I really do think this is, as I've mentioned before (with all "Apple Fails" I remember to tag here), bad QA work at Apple. Nobody seems to be testing the edge cases. And when QA drops back this far, you won't get viable software. At best, Apple is getting its dogfooding completely wrong. It's really sad how far quality has dropped in the race to be minimum everywhere. They've substituted Jobs', "We'll only support doing it our way, and we don't care who is inconvenienced," which allowed Apple to drop support for legacy techs and hardware at the drop of a hat for, "We simply won't care who is inconvenienced." Folks, it has to be viable first... as Radoff says, that means a product that will "get people to fall in love with you". It's not something "crappy" that "nobody wants to use". The "Apple Way" used to mean they'd do it right -- loveably well -- no matter what. Man, I loved using MacWrite on OS 7 and 8. OS 8.1 was a great OS, even though it was so old you couldn't help looking at it and wondering when you'd have to put it down. But using it was great. That love isn't there with Apple software now for too many of us. Anyhow, back to work before I start fixing bugs on my app again... Labels: apple, apple fail, indie, qa, testing posted by ruffin at 2/08/2016 10:46:00 AM |
|||
| 0 comments | |||
| Friday, February 05, 2016 | |||
|
I replied to a comment on 9to5mac that was embedded in a thread about Phil Schiller on the iPhone's paltry starting storage of 16 gigs. Here are a couple of bits:
... followed by...
I'm not sure what places that comments is trying to say have these pie on the sky unlimited plans... I got the feeling that wasn't true in the UK and France, but could be conflating with overseas temporary SIMs. But this seemed to feed in fairly well with an older post of mine that said Apple wants you to stream tons, because it keeps iPhone use expensive. I said more along those lines on 9to5, and figured I'd put that text here as well.
In other news, this is the first post made by my new Markdown editor. It's not even alpha yet, but we're getting close. posted by ruffin at 2/05/2016 10:08:00 AM |
|||
| 0 comments | |||
| Tuesday, February 02, 2016 | |||
What do you think Stanford's annual operating budget is? ... It's 750 million dollars. Michigan's is over a billion. These are Fortune 500 companies disguised by another name, and a lot of myth. This is from 1988. Wish I'd heard (and then, further, understood). Labels: business, Jobs, Other Stuff posted by ruffin at 2/02/2016 12:15:00 PM |
|||
| 0 comments | |||
|
|
All posts can be accessed here: Just the last year o' posts: |
|||||||||||||||||||||
|
||||||||||||||||||||||
|
|
|
|