If the Programmer Won't Go To Silicon Valley, Should SV Go To the Programmer?
The biggest unwritten requirement is if you'd want to spend and interact 40+ hours a week with that person.
This is certainly an important point, and ties into one of the things that really turns me off potential hires: admitting limitations.
I can't tell you how many times I've asked a question like "I see you've listed X, Y and Z as languages you are an expert in, but I don't see anything explaining where you have experience in language Y -- where did you use Y and what did you do with it?" and gotten answers anywhere from "Well, I used it for this one assignment in school" to "Part of the code I worked on talked to the piece written in Y, though I didn't actually work on that myself" to "Oh really? That's not supposed to be there".
Personally, I give absolutely zero craps about the specific languages and whether the job they are being considered for uses them or not: my philosophy is that any reasonable developer can learn any language / toolset necessary. But I do care very deeply that the people I work with are honest. I'd rather someone admit they don't know something than muddle through and not make any progress.
So when someone misrepresents themselves during the interview, this tells me a lot about their character and what it would be like working with them, and someone that doesn't admit their limitations is not someone I enjoy working with.
Seriously, no one knows everything. No one expects everyone to know everything. It's okay to say "I don't know" in an interview. One of two things will happen: The interviewee will get the job anyway, and the company will know they'll either have to invest in training them in the things they don't know or not have them do those things; or the interviewee won't get the job because they aren't qualified and the employer can't train them.
By the way, I've had the opposite response once, from a very junior developer: "Well I did it in school, and then also used it for this personal project, but didn't really think it was relevant for my resume since I didn't get paid". That person got the job (and some resume tips).
Microsoft Introduces .NET Core
.NET Framework is really two parts: the "built in libraries" and the CLR (common language runtime). When you install a Framework version, it installs only the CLR version it depends on, and not earlier ones (at least this is true at time of writing).
.NET Framework 1.0 runs on CLR 1.0, and .NET Framework 2.0 runs on CLR 2.0. Okay, this makes sense and is easy to follow.
Where it gets confusing is .NET Framework 3.0 and 3.5 -- both still run on CLR 2.0.
.NET Framework 4.0, 4.5, and 4.5.1 runs on CLR 4 (they actually just call it "4", not "4.0").
What's makes this stupidly confusing is the compatibility: If you have .NET 3.5 installed, you can run a 2.0 application. If you have .NET 4.5 installed, you can run a 4.0 application, but you can't run a 3.5 application.
IMHO, if they had just used 2.1 and 2.2 instead of 3.0 and 3.5, this could be much less confusing: .NET 4 apps run on .NET 4, and .NET 2 apps would run on .NET 2. Maybe they're doing this from now on, but the fact that 3.x is really 2.0 has screwed this up. I also don't get why they skip to .5 but that's far less of an issue.
That said, this is the company that thinks 95+1 = 98, Vista+1 = 7, and 8+1 = 10.
Microsoft To Open Source .NET and Take It Cross-Platform
Yes: Roslyn. Open sourced back in April. Currently in development for C# 6.
The Roslyn page on MSDN has links to nuget packages and their git repo.
What People Want From Smart Homes
I've done some X10 in the past, but now all my stuff is Insteon (and most dual-band, which actually works quite reliably). I have a few things installed in my house now, which while they are part of an "automation system" I'm not sure I'd call it a "smart home":
* Keypad by the front door
* Has a button that both shows if the garage door is opened/closed and can open/close it
* Has an 'all off' that turns off the kitchen / living room lights
* Can control the outside soffit plug for x-mas lights
* Outside lights
* Turn on to 50% when it gets dark (ISY99 controller that automatically accounts for DST changing of daytime throughout the year), turn off at midnight
* Quickly go to 100% when there's motion outside, OR if the garage door is open, anytime when it's dark out
* All transitions fade: eg, After motion stops, they take ~1min to slowly fade from 100% back to 50%. This is subtle and just a nice touch that's easy because of the system
* Kitchen keypad has 'bright', 'dim', and 'off' buttons, which control the lights over the island, sink, range hood and under-cabinet.
* There's also a button used to indicate if the garage door is open, so we can see from the back half of the house
I haven't installed it yet (change of season made it not important now) but I will be adding a keypad to the bedroom to control the fan/lights. Right now there's just one switch and if you want fan/lights you have to pull the chains. During the summer we are constantly walking into the dark room, turning the switch, and all that happens is the fan turns on.
I think for me, a lot of the use case behind using insteon, is less about 'automation' and more about being able to make virtual 3/4/5-way switches and scene-based lighting without having to rip apart drywall and rewire.
Heck, one really convenient thing is that the switch in the living room controls lights on the other side of the room -- without a plug-in module, I'd either have to adjust those lights manually (meaning they'd be left off and/or on all the time), have an extension cord running in front of my fireplace, or open up drywall to rewire. I didn't build the house or choose to make the switch operate a plug on the same wall 6ft away, but at least I can make our lives easier with very little effort.
A lot of this is really just laziness in way, but at the same time, when you have to use 4 different controls in the kitchen to get all the lights on/off you simply don't turn them on and/or leave them on most of the time. One button gets better use of what's there, and just makes life a tiny bit more pleasant.
One thing I really don't get is the fascination with using smartphones to control. I've tried it, I just don't find it useful or convenient. Assuming I have my phone on me (I don't always, while at home), I have to take it out, swipe to unlock, wait a second for it to load, find the control app, wait a second for it to load, find the lights/scene I want, then change it. How the hell is that more convenient than the switch/keypad that's always on the wall right next to the door that I walk by as I am coming into the room? Seriously, I don't understand.
This whole 'you can control the lights from anywhere' thing is just a non-existent use case, as far as I'm concerned. We accidentally leave the lights on maybe a handful of times a year.. that is not a primary case of why to install these types of systems. I haven't even had my system exposed to the internet for the last couple years (changed my router, and never set up port forwarding again) because I NEVER used it remotely.
I have a wifi-connected thermostat, which is great for exactly 3 reasons: It is miles easier to program than the cheap piece of crap it replaced; I have a linux cron job that turns on the fan a few times through the day that greatly helps balance out the temperature (otherwise the back of the house facing the sun gets significantly warmer than the front), and I could only find this feature on MUCH more expensive thermostats; and lastly, I can adjust the temperature from my bed, particularly handy on holidays when we're sleeping in but the temperature is set as if we're away at work.
The Great IT Hiring He-Said / She-Said
There certainly are people that interview terribly, but there are still ways to see past that and judge their skills. I find the best way is to figure out what they're passionate about and get them to talk about that -- for example "tell me all about the latest technology/framework/language/whatever that has you excited and you've spent time learning about." You can pretty easily tell the difference between people that chase buzzwords and people that actually care and spend time trying things out or learning more than superficially.
There are also some people that have been working in a job where the technology is old, and maybe family life doesn't afford much spare time to always be learning new things in depth. That's fine also -- you can ask things like "What is the worst part about using ? What would you change about it if you code?". There's a HUGE difference between someone that says "Well, it's COBOL, it's old, what more needs to be said? haha" and "As soon as you start to get mildly complex, program flow becomes very difficult to follow and use of global variables leads to all sorts of bugs caused by competing uses of the same name which aren't always obvious".
Apple's App Store Needs a Radical Revamp; How Would You Go About It?
I absolutely love that I can use Google Play from my PC: I read an article about or otherwise find a link to an app that sounds interesting, and I can click "Install" from there, it asks me which device (I have an android tablet and phone) and then .. that's it, it's installed within a few seconds.
With Apple, all I see is a button "Open in iTunes". I barely use my iPod touch anymore, but last I tried you basically had to re-find the app on the store ON THE DEVICE to install it, or plug it in with a USB cable. Is that still the only way to install things?
The Technologies Changing What It Means To Be a Programmer
I'm struggling to understand the point of this article. May as well have titled it "You won't believe these 15 new tricks for programmers. The shocking truth the devops guys don't want you to know"
* "Back to work, slave, the continuous build machine has new tasks for you."
* "You're not a craftsman -- you're a framework-tweaker."
* "It's so much easier, but these IaaS administration Web pages won't buy you a drink after work."
US Nuclear Missile Silos Use Safe, Secure 8" Floppy Disks
The perception of old things being better is also highly influenced by survivorship bias. In short: the crappy old things have already broken and been thrown away and forgotten about. All the old things around that we still see are the ones that survived.
RCMP Arrest Canadian Teen For Heartbleed Exploit
That's an interesting wording. It does seem like a pretty flimsy charge for what actually happened. A copy of the data (SIN numbers) was read from memory. CRA could continue to use that data to process tax returns (or whatever other purpose) regardless of if the data was read or not. The language is around "denied access to a person entitled" as opposed to "granted access to a person NOT entitled" (which is really what happened).
Analogy.. Going into your house and stealing your TV interrupts your ability to watch TV, and alters the state of your house. On the other hand, peeking through your window and taking a picture of your TV does not prevent you from watching TV, and does not change the state of your house. In fact, if you didn't catch me in the act, you'd never even know it happened (just like Heartbleed), and if you didn't know cameras could take pictures through windows you wouldn't even think about this happening (just like before Heartbleed was disclosed). It does not make it right at all, but it also doesn't even remotely seem to align with the definition of "Mischief in Relation to Data".
AMD Unveils the Liquid-Cooled, Dual-GPU Radeon R9 295X2 At $1,500
My last CPU upgrade in my desktop came with a fan that about doubled the noise from my system, and more when the CPU got cranked up. At suggestion of a friend, I installed a closed-loop water cooler on it (which cost me ~$70 IIRC). Night and day.
It actually runs cooler all the time (I was monitoring the temp before/after because I was curious) and the whole computer now makes less noise than before. When the furnace comes on, the sound of the air coming from the vent is actually louder, to put it in perspective.
Also, my computer has no 'window' in the case, extra lights, or any of that 'enthusiast' crap that you'd probably associate with liquid cooling and people that brag about it. In fact, aside from recommending it to another friend once, this is the most I've ever said/typed on the subject.
TL;DR: liquid cooling makes your computer nearly silent, is very effective at cooling, and you don't have to be a fanatic to use it.
New Home Automation?
make sure you include a neutral to all of your wall switch boxes
This is actually required by electrical code now (NEC 2011, 404.2(C)), specifically because of these smarter switches, and even many of the non-communicating switches/dimmers/timers on the market that have LED indicators and such.
Google Buys Home Automation Company Nest
That would beat how long it took them to discontinue selling SageTV by "a few years".
RSA Flatly Denies That It Weakened Crypto For NSA Money
Bruce Schneier had a good write-up on this in 2007:
Problems with Dual_EC_DRBG were first described in early 2006. The math is complicated, but the general point is that the random numbers it produces have a small bias.
This is how it works: There are a bunch of constants -- fixed numbers -- in the standard used to define the algorithm's elliptic curve. These constants are listed in Appendix A of the NIST publication, but nowhere is it explained where they came from.
What Shumow and Ferguson showed is that these numbers have a relationship with a second, secret set of numbers that can act as a kind of skeleton key. If you know the secret numbers, you can predict the output of the random-number generator after collecting just 32 bytes of its output. To put that in real terms, you only need to monitor one TLS internet encryption connection in order to crack the security of that protocol. If you know the secret numbers, you can completely break any instantiation of Dual_EC_DRBG.
The researchers don't know what the secret numbers are. But because of the way the algorithm works, the person who produced the constants might know; he had the mathematical opportunity to produce the constants and the secret numbers in tandem.
Of course, we have no way of knowing whether the NSA knows the secret numbers that break Dual_EC-DRBG. We have no way of knowing whether an NSA employee working on his own came up with the constants -- and has the secret numbers. We don't know if someone from NIST, or someone in the ANSI working group, has them. Maybe nobody does.
We don't know where the constants came from in the first place. We only know that whoever came up with them could have the key to this backdoor. And we know there's no way for NIST -- or anyone else -- to prove otherwise.
This is scary stuff indeed.
Google Ends Internet Explorer 9 Support In Google Apps
Why do you have *restrictions* on using IE9? If your sites/app are built correctly (using standards), then your users should be able to freely upgrade and even use other browsers. If the people that build your sites/apps are not supporting the current versions of browsers, or are doing things that are against standards and only work in IE9, then they're idiots. Or the person preventing testing of anything other than IE9 is an idiot.
It's fine for you you have a requirement of IE9+ support, but ignoring current versions is dumb. You're just recreating the mess of IE6-only apps that the world-at-large is only just getting over. Did you not learn the lesson?
It's slightly more expensive to support more versions today, but it's anywhere from much more expensive to complete-rewrite expensive when you have no choice a few years from now.
If Java Is Dying, It Sure Looks Awfully Healthy
It definitely doesn't help that the JRE installer tries to also install the Ask toolbar. Seriously? Even Microsoft doesn't try to install Bing with the .NET installers, and that's their own property they're desperately trying to push on everyone.
How am I supposed to take a platform seriously if the fundamental piece that has to be installed by all developers AND users to use it is doing the same sneaky things that half the crappy freeware on the internet is doing?
Just how much revenue does Oracle make from Ask anyway?
Students Hack School-Issued iPads Within One Week
On this note.. I'd like to thank the administrators from from I was in high school for going through this. Their (ultimately unsuccessful) attempts at blocking everything gave me one heck of an awesome crash course in TCP/IP, DNS, firewalls, VPNs, and reverse proxies, etc .. knowledge which I've used to some extent at every job I've had for the past 15 years.
Writing Documentation: Teach, Don't Tell
I think the author's tirade against wikis is that many people use a wiki as a magical tool that allows them to forego writing documentation in the hopes it will suddenly appear, written by users that want to write documentation. This obviously isn't what typically happens.
However, I think wikis can be (and often are) a great format for documentation. The author(s) of the software should still be the primary and/or only contributors, but even so good wiki software serves to lower the barrier to writing documentation: creating/editing as simple as clicking edit, and you instantly see the results. You can link between pages, reducing duplication. Some software forces a hierarchy of pages, leading you to create things in a logical, structured way (of course, you can lead a horse to water...).
The key to this of course is that the person/people writing the software must write the bulk of the documentation (eg, like you would without the wiki as well). Don't allow random edits, or at least subject edits to a review process.If your project is big and successful, just as it lowers the barrier for you to write docs it may encourage others to contribute -- but don't rely on this.
Think of the wiki more like a publishing platform or format; not like a way to absolve yourself of the responsibility to write documentation.
Australian Bureau of Statistics Doesn't Like Direct Downloads of Census Data
From the code:
// Also, generate a random number, which we append to the URL, to make it appear as if a complex
//key is required. This is a pathetic attempt to discourage someone from downloading the ZIPs
//directly (ie. without having to login), if they deduce the URL pattern.
Coder: "Here's the census web application."
PHB: "Great. But wait..I can just type in these other names and download them really easily! People will hack us and we'll be out possibly a COUPLE THOUSAND DOLLARS! "
Coder: "It is Creative Commons data, so of course we added no protection. Changing that now will be a massive rewrite and take months."
PHB: "So let's add some random numbers to the end so it looks really complex and people can't guess how to get in."
Coder: "But they still will eventually see the links because they do actually have to download it, so this is not really doing anything."
PHB: "Psh, no one is smart enough to figure that out. I read about this GUID things and they're really hard to guess. It will work. This is your job today."
Coder "..Ok, fine. I'll do it exactly the way you asked."
Ask Slashdot: How To Convince a Company Their Subscriber List Is Compromised?
Many, many years ago when I got my first domain, I set up *@domain.com to forward to me. And about 5 minutes and several spams/garbage from the owner of the domain before me later, I turned it off.
However, I did end up making a subdomain and forwarding everything (*@sub.mydomain.com), and I've been using it exclusively for signing up to sites ever since (I've probably been using it for ~13 years). I can think of about two occasions where I have actually got spam to any of the addresses I used, both were from shady companies that turned on a 'share my address' setting without prompting (or it was so buried that I missed it, I usually spot those). I've never gotten any dictionary-style spam attacks to the subdomain or mail to an address I didn't explicitly use.
Ask Slashdot: Are Timed Coding Tests Valuable?
You've obviously never been involved in hiring developers.
There are a *lot* of bad developers out there. So many it's sickening. Bad developers that have resumes that look like they can do stuff. They may even call themselves senior. They've worked on a team that has successfully produced a product (or at least at a company that has).
One of the memorable interviews I did with was via a referral, and it worked out that I went straight to an in-person interview (skipping my usual weeding-out process). This person had a decent CV. They worked on a project designing a military helicopter training simulator, which basically involved wiring a game (written by another team) up to a 4-person helicopter mock-up that included pieces of real equipment (radios, navigation, etc) so the actual equipment displayed and could interact with the game. I've always had a personal fascination with interfacing real-world hardware with software (and have done lots of industrial control integration), so I had a ton of questions.
Well, despite trying for ~15 minutes, I could not figure out what this person actually had specifically accomplished. The team had successfully built this thing from what I could tell, but this person could not explain to me what *they* actually did. I asked in many different ways, including very bluntly like "What was some piece of functionality/code you wrote yourself?" and the person "could not remember" (they worked there for over a year, and had left less than a year prior). The most technical thing they could say about the integration was that it "involved UDP".. Seriously.