Tuesday, October 14, 2014

Version dependency sucks

Studying MVC. Working through the book and all is well. Unit tests, Ninject, Moq, &etc &etc. Until it discusses [HiddenInput] in chapter 11. It simply doesn't work. I tried several variations of the attribute with (DisplayValue), without it, set to true, nothing changes. The input still shows up. The scaffolded edit form generates exactly as though the attribute weren't there at all.

So I go back to basics. The projects reference MVC and each other, the model object used by the Razor view is the correct class, all the unit tests are fine. So I start casting around Google. Which just gets me a crapton of tutorials on how to use [HiddenInput] (as though it weren't stark obvious when it's working correctly). At this point I'm tearing my hair out. The closest I can come is a hit on StackOverflow for [HiddenInput] hiding the Display functions in Razor. Not my problem.

At wit's end I use the search function on StackOverflow itself to find "hiddeninput mvc" and ... wait, way down the list here is Q: HiddenInput(DisplayValue = false) Works on one dev machine but not another

This isn't quite my issue but it's more promising than anything else I've looked at. As it happens, the OP had issues with the MVC versions that were being referenced on the two machines. Well. All this is on one machine, sooooo... but there are two different projects involved here and of course projects all have their own references. So I dig MVC up in the reference list and look at properties for it in both projects. Bingo. The domain project references 5.2.2 while the web UI project refernces 5.2.0. Score. Of course, if it's possible to specify a version from within VS I don't know how. I have to open the .csproj files in UltraEdit and find the reference entries for MVC. At least it's XML with a readable schema. Update the web UI with the more current version from the domain project (a simple copy/paste) and we're off!

Except we're not. Ninject spews guts all over my dependency injection because it can't find MVC version 5.2.0. DOH! It all becomse clear now. NuGet-ing Ninject into the web UI project forced MVC to version 5.2.0 however I didn't install Ninject in the domain project so it was left defaulted to the more (most?) current version.

The moral(s) of the story? Version dependency (down to the second point level for crying out loud) sucks. And Google can't always find the most relevant answers.

Monday, October 13, 2014

[Desktop|Mobile] first developement

Caveat lector: I'm probably not qualified to ponder this subject nevermind spew my ponderings across the web. But then again, tats wot teh innernet is for innit?

I prefer desktop first. Not because it's easier (mobile dev is still new and will, all things being equal, improve). Not because I'm an old curmudgeon (though I am). Not because I'm a luddite (I'm not). Not entirely because I think 'mobile' everything is overly hyped (that's a whole 'nother post). The reason I feel this way can be summed in one simple analogy.

I'd rather have a van for my family of 5 than a smartcar with a trailer hitched to the back. A smartcar will get one person, maybe two if they're quite friendly, to work and back. Possibly through a small trip to the grocery store. There can't be any significant cargo space in those things; groceries for my family would take up the entire cabin. The smartcar is essentially equivalent to mobile first development. You get the basics (4 wheels, propulsion, steering, safety equipment) done first and eloquently. Then you start bolting on the extras as they'll fit (stereo, sunroof). Then for the things that won't fit on mobile you build out a desktop version. You bolt on a trailer with some seating to carry passengers (still, no cargo space to speak of if you actually want passengers...). Stop right there. The van will do all that with aplomb and grace... while sucking up gas and spewing out fumes like nobody's business. They both have their faults.

So I have a van to tote my groceries and family around with. The passenger and cargo space is important  to me so I want it done right the first time around. All you people with smartcars are going to understand when you build a family (or you already have a family and multiple vehicles, patience I'm getting to that). In the same way if I care about the functionality of the software (in other words, if I would actually give someone money for it) then I want the broadest functionality built in the most efficient, eloquent fashion. Desktop first. For those pieces of software that I don't really care about mobile first is fine. The key point, just like the analogy, is that I don't need the desktop quality experience or functionality for those packages, and indeed I probably don't want to have all those additional features taking up resources or mental energy. MSPaint works great for the vast majority of the graphics editing tasks I have. On the other hand Notepad is not a sufficient text editor for me (for the vast majority of computer users it is more than sufficient) and so I pay for UltraEdit. Note that although I have MSWord it is not a text editor :P

Now, here's where the analogy breaks down. People that need a van will often have a second vehicle to use when they don't need the full capacity of the van. On the other hand typically you'll only use one software package for any given purpose (for a number of important reasons). If you routinely use Photoshop (or GIMP) then you probably won't bother to open MSPaint. I rarely open Notepad because text formats are associated to UltraEdit in the OS and UE is my instinctive go-to in all other cases. There's the rare moment, equivalent to renting or hailing a cab, when I'll open Notepad from the Run... dialog just to act  as a backup clipboard but those are outlying cases. You'll note that in those cases I'm not paying for the mobile-first software package.

There are, of course, cases where the mobile platform has inherent value that makes up for it's reduced capability, again those are outliers. Yet it seems like most mobile developers bewail the fact that they can't get a user to pay $0.99 for their mobile app while for some reason people still pay for desktop apps (and a lot more than a mere $0.99 in most cases). Is it perhaps because reduced functionality apps are used mostly by people that don't need the functionality enough to pay for it on any platform?

Saturday, October 11, 2014

On privacy

Yeah. I'm listening to Glenn Greenwald on TED in Brazil. I quite thoroughly disagree with him though I suspect it's a different kind of disagreement than he's used to.
I value privacy but I value it not as itself (that is, being private from the rest of the world) but as information. Let's face it. In the 'Information Age,' or whatever the hell they're calling it now, privacy is the gold in Fort Knox. The internet and the computing systems we, as a world of people, have built have effectively leveled the walls and we're desperately trying to patch them while yelling and screaming at the looters to stop.

It won't work. The walls can't be rebuilt (and they shouldn't be) and the looters will never stop because, really, who would? People are making money by the boatload on our information. There isn't a force on Earth that can stop them. Look at any pre-digital major corporation; they're all still making money, pretty much the same as they always have.

I have a different proposition. Let the NSA do all their petty spying. Let Google, Faceplant.... er, book, LinkedIn, et al do their tracking. Let them have our webcam feeds. Let everyone correlate to the big 3 credit bureaus if they like and perform statistical analysis with all our Amazon purchases. I frankly don't give a damn. BUT. Not because I have nothing to hide. But because I have one simple stipulation for all the data whores. It's incredibly simple in word (implementation is another story but we're all of us blue-skying here because it's still very new discussion). Let your data free. Publish it; let the public search it (using the same internal mechanisms you use).  Scary? No.

What people fear isn't that the NSA knows you bought a dildo or whatever. It's that you have nothing on the NSA (other than they're a bunch of lying, spying, sneaky creeps). You're worried that your nosy neighbor can search through your ... search queries? But you could look at theirs too in such a world. Because the real value of information to an individual or entity is inversely dependent on how many other entities know that information. Let's look at this side for a bit longer. If everyone knew what was in the diplomats' emails that the NSA snooped (which everyone does now, sincerest thanks Mr. Snowden) then the value of that information to the NSA is roughly nil. Similarly in the reciprocal world I envision (and reciprocity is the key here) the same memos are worth just about nothing to any government because all their emails are public also. Before anyone mentions the 'chilling effect' allow me to say that the full effects global freedom of information won't be apparent until the second generation. The same way nobody grokked the internet until people grew up with it. Global freedom of information will force everyone to realize and accept that everyone is human, that everyone makes gaffes, has some opinions we disagree with, that everyone gets naked, and nearly everyone has sex sometimes. It's only when there's an imbalance of information that privacy matters.

Any schoolchild can tell you this about secrets.
Value = Information/(how many people know it)

Bringing this monologue back to Mr. Greenwald's talk let me address his very valid point about black and white. There are, indeed, no Good people. There are people that are good, but everyone has 'dirt'. Everyone is, when considered completely, Grey. We are imperfect, flawed, weak, and corrupt in our own individual ways. When everyone is forced to acknowledge that about themselves and everyone else then knowing someones weaknesses ceases to be something of value. Indeed, it becomes a strength because we would no longer need to guess which politician is the most corrupt.

Mr. Greenwald goes on at some length about passwords but I'm afraid he's missed the point there. Passwords are not privacy. Passwords are authentication. No, you may not have my bank password; not because i wouldn't want you to see my purchases (again assuming reciprocity, I will not give you an imbalance of power either) but because I don't want you to make purchases in my name. Ditto email. That whole section of his talk made my head ache and if I'd been in the audience I'm afraid I would have gotten thrown out for screaming at him that he's an idiot.

However he was trying  to make the point that people who claim privacy is dead are hypocrites. He does make that point effectively about Eric Schmidt and Mark Zuckerberg. However I stand by my view. But it is a reciprocal view and cannot be implemented by one individual. To give away my privacy while others refuse to give away theirs (and every entity with the wherewithal is spying on us all and hoarding the data to themselves) is ludicrous. Yes, I make some small measures to maintain my privacy. Not because I don't believe my own rhetoric but because nobody else is willing to reciprocate and freedom doesn't work unilaterally

Meh. I'm tired of properly composing my thoughts, and I've other things I need to do as well. I'm not a journalist either. So I'll just jot down some oneliners during the rest of his talk as I listen to it.

Shame? Judgemental eyes of others? Reference the above about humanity becoming more understanding (even compassionate? O.O ) when everyone can know everything about everyone else.

So there's a correlation between being observed and the actions that one is willing to take. But is the mere observation the cause? If you video yourself (you, observing yourself) do you act differently? I submit that it is the imbalance of being observed while making a choice but not being able to observe the other while the other makes that choice that is the root cause of the behavioral change. But then, I'm not a [psych|soci]ologist.

Panopticon? Holy hell. Can we say imbalance of power and observation? My point still stands.

Oh, yes. The Abrahamic god. Still. Every example he gives posits an imbalance of observation.

I do agree about the destructive lessons in the phrase "only people with something to hide fear surveillance."

Dissidents. Yes, they could be tracked by the government. He follows that immediately with the measure of freedom of a government by how it treats its dissidents. Treatment that, if everyone was watched by everyone else, everyone would know. Catch22.

I will take the 1 or 2 generations of suppressed freedom of choice due to mass observation in order to break through to a more idealized humanity that accepts itself for what it is. Sadly, such informational freedom is unlikely to ever happen for emotional, political, and admittedly practical reasons.

I dislike the ad hominem agains Snowden as well. However the mirror accusation is scathing and probably isn't as universally applicable as it's stated. Of course, it feels as good in my gut as it apparently did to the majority of the audience but one has to vomit those feelings out of the gut and examine them thoroughly or you're going to have a hell of a lot of indigestion when those ideas curdle later.

Closing with a pair of personal definitions:
observation: knowledge of events shared among all entities
surveillance: knowledge of events kept secret by one or a few entities

Tuesday, October 7, 2014

No. You don't understand genetics

Unless you're a geneticist anyway. And even then it seems understanding is a quite limited word.

You're a smart, technically apt, curious person? You don't believe me and want proof? Here's a single statistic.
The wheat genome consists of 17 billion (yes, with a 'b') bases. That is, apparently, 5 times more than the human genome. What, you thought you were more complex than wheat? Not at the genetic level, bub.

Friday, September 26, 2014

Code break

I need a break from the fractal project. So... hm. Looks like I have a project in my ToDo list to see if file sizes on a harddrive (in this case, my personal C:/D:/etc) obey Benford's Law. So here we go.

Analogies

I love a good analogy. I love finding an aesthetic analogy with great depth. I love crafting them and plumbing them to see how far it can be taken before it breaks down.

In that vein, I feel like I've been playing my life so far as Pachinko. I'm moving to the poker table people. GTFO of my way.

Trading and other things

Yuck. Account looks like crap but i haven't been focusing on it like I should.
On the other hand, October is looking net positive which will be the first in a long number of months. I think the problem has been a lack of focus on acceptable risk for my size and lack of mechanical implementation. Both stemming from there just not being any opportunities.

In the rest of life. I've been working to transition from my current systems admin job into something with a future. Not that this position couldn't be a career with a progression but it won't be for me because it simply doesn't interest me. I'll never excel at it because, frankly, I hate the work. So I'm transitioning to development, which was my original intent and where my (lackadaisical and overall pretty abysmal) education is.

To the present and future, I've been studying Pro C# (I could link the book but I'm lazy and at work) and building a WPF app for rendering and manipulating fractals. I've tried MOOCs and a few books, and I always get bored. I bloody well know what a loop is. Variables are dull. I comprehend OOP, inheritance, multiple inheritance (and the lack thereof), interfaces, blah blah blah. Thankfully, C# has been just different enough (with language features I'm not familiar with) throughout the process that I've been able to skim this book in spots without either missing anything or getting fed up and skipping whole chapters then getting frustrated at having to go back and look up some minutia 3 chapters later.

Or maybe it's just that I have some level of external accountability in the relationship I've been cultivating with a prospective employer. That always helps focus.

Anyway. Enough of this. I have a meeting in 5 and one more unrelated topic I need to post on.