TFA's 2 points about over/under - interest in radio controlled aircraft, I can see it now: "Good morning sir, I'm somewhat interested in radio controlled aircraft and would like to purchase one. Now, don't get me wrong, I do have a interest that sits above just a casual interest, however I'm also not overly interested in them, in fact, I'd say I'm about just the right amount of interested in radio controlled aircraft to buy one, but not so interested that it'd be suspicious.... say, who are you calling?"
Yeah but you're always glad on that idle sunday afternoon when you suddenly realise having a character LCD would be "so cool" for the thing you happen to be hacking together, you walk to the cupboard to find there's one just sitting there... begging to be ripped out of that old equipment.
I often keep old/damaged stuff around just for assorted LED's, switches, connectors, etc. etc... The point is neither the cost nor the time. It's that I never anticipate that random moment I'm going to realise I need it. That's the worst moment to NOT have something.
a) My employer's hardware, and not old at all, but I don't get to pick it, and is supported under linux, because I could get it working. But I've played this game a number of times over the years, I can't say I've noticed much of an improvement, just a proliferation of more layers that make it ever more difficult to solve.
b) I've never met a 'novice' (as mentioned in gp's post) that had ever heard of a HCL.
*I* can get this to work (as I did), but I'm under no illusion that installing a driver on linux "after the fact" is nearly as easy as it is on windows.
I'm not saying Windows always works out the box (even though that's where I've had the most success "out the box"). I'm OK with that, especially if the hardware is a bit "out there". What I'm saying is: in that situation the fix for windows is vastly easier than it is for Linux.
Blame vendors, blame my hardware, call me a noob, blame closed hardware specs, whatever.... That is the reality.
Hey, if only it was so easy on linux, just download an installer, run it and viola! It works!
In my dreams. I'm a Linux fanboy but I do feel sad when my sound goes numb and I have to navigate a minefield of my-special-sound-daemon (un)interacting with other-guys-magical-sound-server using TLA ridden bits and bobs everywhere and my only help being totally incomprehensible forum posts here and there, all of which assume I have a Phd in sound server internals.
"Oh! Of course, what a noob I am! All I had to do was compile a custom kernel module, find the tla.conf file, enable undocumented feature Y, blacklist all the other drivers, and I'm good to go! What a noob, if _only_ windows was this easy!"
Hey, you wanna talk about inconsistency, go look at the plethora of different ways there are to get something as basic as SOUND working on linux. Funnily enough, on the same hardware, dual-boot a windows PC and stand in awe of how it just works. At worst, all I need do is download those evil drivers you speak of and run the installer.
This doesn't make me angry, or long for windows, but be realistic.
Ease of use. I can't plug an Arduino into a monitor and program it on the metal in whatever language I like and run an interactive debugger on the hardware, or get even close to the processing power, or easily store a ton of data on it (or the network), install a firewall on it, make it a file server, the list is endless. I'm sure at this point you have about 5 arduino add-ons you want to mention to me. And that's the point, RPi has all that and more out the box.
Plus: I don't have to learn new instruction sets, or subsets/modified versions of certain programming languages, or completely new programming languages... just to get it to work. And I can use databases on it, web servers, unix tools, bash scripts..... I just can't stop thinking of things I can easily do on a RPi that I cannot do on an arduino.
I agree with you that as a geek gadget watches don't do it as well as phones or PDA's.
But I don't see wristwatches as jewelery. I wear one, usually not a very fashionable or expensive one. I try to get something expensive enough to last. I've found cheaper ones break, rubber straps degrade over time, etc. So when looking for a timepiece I've got very utilitarian guidelines. Stuff like "the strap must be metal" because those last forever. It must be big enough to tell the time quickly but not be so huge as to be in the way - like the fashionable ones - stuff like that. Looking good does count but not as much as other attributes.... Which is why I'd call those the geek criteria for a watch.
I don't buy the (not your, the) "your phone is just as good as a watch" argument and to be blunt I'm a bit dumbfounded by it. Grappling around for a phone in my pocket and unlocking the screen, etc. just to see the time is actually a burden and a clumsy way to get the time.
Thus, I'd say use the unix philosophy: One tool to do one thing well: I'd get a normal everyday timepiece. The point is to be able to lift your arm and tell the time instantly. That's what it's for: glancing. The moment you spend more time than that on your watch with added fancy geekery, I'd say a smartphone is a better tool.
My anecdote would be one time I nodded off for a nap, and woke to orange light outside my window, my watch indicating around 7 o'clock. I suddenly 'realized' I'd overslept and leapt from my bed in a frenzy trying to get ready for work, I rushed into the kitchen going "I'm late!"..... when my stunned S/O pointed out that it's "7 pee em" and my sense of time started to return, I had to completely re-orient myself. I looked down and foolishly realised I was already dressed, and she was making dinner, not breakfast.
I don't think we really are able to track time when asleep, we just assume when we wake up it must be morning because we've been doing it all our lives. At least, that's what happened to me that time.
H3D, no. But after fiddling I got the e-d + iz3d combo to work, only in interlaced mode, significantly slower than my card usually runs, looks not so pretty (because of interlacing obviously). Watched some SC2 cutscenes in 3D, does work and looks coolish. Not what I was used to in the past, but better than nothing.:)
Well I went home yday thinking maybe I should try again, see what's out there...
Downloaded the iz3d driver, and they've dropped support for shutter glasses completely. Hmkay, let's try interleaved.
Then ofc the glasses didn't activate, so I tried the e-d activator and that just made my CRT (the one I've always used) go black and not return until a hard reboot.
Then I downloaded a trial of tridef and found the trial doesn't include page-flipping, and same activation problem with anything else. So I can't even check if it works before I put down my money, and if it's anything like the iz3d driver, it won't.
An example that leaves a particular bad taste in my mouth...
I bought a set of LCD shutter-glasses years ago. I had an nVidia card that had driver support for them. I got these babies, got the special nVidia driver, and I was blown away.
But soon I needed to upgrade my gfx card, and found nVidia no longer supported shutter-glass stereo on any of their new shiny cards. Weird right? All you need is software trickery.... but wait, yes.... Suddenly 3D LCD panels come out and nVidia simultaneously releases drivers that support them. And next thing you know, they have their own shutter glasses that cost way, way more than the ones I'd bought years before.
And still, there's no support for my set. Support that already existed.
My opinion: This is why hardware companies care about drivers, it lets them wrangle money out of people who'd like support for their products.
The way I understand it, is that our immune system usually waxes cells that have gone rogue, and we get 'cancer' all the time except those cells get killed quickly by our immune system.
However 'true' cancer has a mutation that prevents this from happening and this drug turns that mechanism on again, so things can work as usual.
In other words: normal cells should carry on as before.
Poachers who care about licenses, you make me laugh.
I live in Africa, putting a rhino on a piece of land almost transforms it into a war zone. International trade in ivory/rhino horn is a big deal, no mere legal red tape is going to stop these guys. Neither do they mind much if they have to shoot some rangers to get to the animals, and so the arms escalation begins...
Well the horrible truth is they'll get poached out much quicker than they can breed. Keeping something like a rhino alive in such close proximity to the east might be a challenge that outweighs the benefits.
This is a false dichotomy. Do the TCs anyway, it'll probably be on time (if not early) and won't be crap. Unless you are some kind of deity that creates absolutely no bugs during your 2 week scramble that slow you down regardless. Imho a bug highlighted by a tc is orders of magnitude quicker to find and fix, you'll probably discover it while writing the tc and no one will ever even realise it was there in the first place. Doubters: Try it, even if just at home, let it sink in how much time you are actually saving.
I scrolled down just to see if someone suggested Pragmatic Programmer, AC deserves a +1 billion mod. If you read just this one book, and apply it, you'll be head and shoulders above most of the industry in one foul swoop.
Secondly, you already know this answer by the way you phrase your question: Stop doing prints for debugging and use a debugger, that's it's job. You'll remove years of pain and anguish from your working life. Anecdotally: our "debug by print" hire gave up trying to keep up with the "debugger guys" after only a few months and left the company voluntarily, despite our suggestion that his debugging methodology is painfully slow.
Test driven development. Hackers say "but it takes more time to write the tests", I say: "But it saves me a butt-load of time tomorrow, it's a net win that will keep on giving". Moreover, TDD tends to result in cleaner designs anyway. I take this a bit further: If I have to write a new concept into a huge system, be it big or small, the first thing I do is write a smaller test with the new concept, iron out all the bugs and kinks until I understand the problem and solution properly, only then I dig into the "big code". Once again it's about saving myself time and headaches. (and, of course, try to write a module or component I could re-use in a similar situation)
Learn as much as possible about dependencies. Also the difference between library code and application code, and what bits of code go into which of these. (Pragmatic Programmer's "do not repeat yourself")
Basically your thinking has to shift from the short term to the long term: "I have to maintain this, possibly for many years to come, lets save my future self a lot of pain by doing some planning and doing things right the first time" (yet more pragmatic programmer).
Anything you get on this post though, is going to be a bit of a "learn C++ in 21 days" thing. We can tell you all about what we've learned and you can try to assimilate it all, but at the end of the day to get 10 years experience you usually need.... 10 years, but not the kind of 1 year x 10 experience lots of folks have. I found it very hard at first to "catch up" with mountains of information being shoved down my throat all at once, but...
Find a good environment above all else. Work with and for people who are highly experienced, highly critical, and aren't afraid to show it. Work with people who will gladly review all your code and blast it to bits for you. This is emotionally uncomfortable but pushes you up a steep learning curve very quickly. Programming can be a very social and cooperative learning activity in the right environment (look up agile while we're here). I'd say that way you can gain 2 years experience for every 1 on the job, possibly more. The trick is to tell the guys you shouldn't be listening to from the ones you should, and it may take a job-hop or two to find them.
I'm thinking a flexible pcb (search instructibles, requires a bit of work), some surface mount LED's, maybe a smd PIC/AVR or whatnot, and a watch battery. (or chain a couple for appropriate voltage, or supply usb socket, AA socket, etc...)
And hand deliver (someone comments further down about bomb screening of mail).
Guys who are good (desirable to have) should really learn not to roll over and sign the first document that lands in their hands.
You negotiate this stuff, you go "I need you to exclude work I do off-the-clock on my own resources, with a clause that if I do COMMERCIAL work I have to notify you of it to prevent conflict-of-interest". Then you notify them, big whoop, they don't really care about your little pet project imho.
Can't say I've ever seen someone have a problem with this, but I don't job hop so my experience with this may be limited. All I know is, I've asked, and I received. One CTO even indicated that if I wanted to use the company's core library, I was free to, since it could help them iron out bugs.
At worst, you go ask nicely to have your current contract amended. They can say no, but you've tried.
Nope, but I appreciate the compliment. Thanks :)
TFA's 2 points about over/under - interest in radio controlled aircraft, I can see it now: "Good morning sir, I'm somewhat interested in radio controlled aircraft and would like to purchase one. Now, don't get me wrong, I do have a interest that sits above just a casual interest, however I'm also not overly interested in them, in fact, I'd say I'm about just the right amount of interested in radio controlled aircraft to buy one, but not so interested that it'd be suspicious.... say, who are you calling?"
At our dev shop if we get stuck we'll sometimes report that the problem requires a "shower moment" to solve.
We literally mean that often times we dream up the best solutions in the shower.
(yes the plus is it makes a funny bit of on-the-side innuendo)
Yeah but you're always glad on that idle sunday afternoon when you suddenly realise having a character LCD would be "so cool" for the thing you happen to be hacking together, you walk to the cupboard to find there's one just sitting there... begging to be ripped out of that old equipment.
I often keep old/damaged stuff around just for assorted LED's, switches, connectors, etc. etc... The point is neither the cost nor the time. It's that I never anticipate that random moment I'm going to realise I need it. That's the worst moment to NOT have something.
a) My employer's hardware, and not old at all, but I don't get to pick it, and is supported under linux, because I could get it working. But I've played this game a number of times over the years, I can't say I've noticed much of an improvement, just a proliferation of more layers that make it ever more difficult to solve.
b) I've never met a 'novice' (as mentioned in gp's post) that had ever heard of a HCL.
*I* can get this to work (as I did), but I'm under no illusion that installing a driver on linux "after the fact" is nearly as easy as it is on windows.
I'm not saying Windows always works out the box (even though that's where I've had the most success "out the box"). I'm OK with that, especially if the hardware is a bit "out there". What I'm saying is: in that situation the fix for windows is vastly easier than it is for Linux.
Blame vendors, blame my hardware, call me a noob, blame closed hardware specs, whatever.... That is the reality.
Hey, if only it was so easy on linux, just download an installer, run it and viola! It works!
In my dreams. I'm a Linux fanboy but I do feel sad when my sound goes numb and I have to navigate a minefield of my-special-sound-daemon (un)interacting with other-guys-magical-sound-server using TLA ridden bits and bobs everywhere and my only help being totally incomprehensible forum posts here and there, all of which assume I have a Phd in sound server internals.
"Oh! Of course, what a noob I am! All I had to do was compile a custom kernel module, find the tla.conf file, enable undocumented feature Y, blacklist all the other drivers, and I'm good to go! What a noob, if _only_ windows was this easy!"
Hey, you wanna talk about inconsistency, go look at the plethora of different ways there are to get something as basic as SOUND working on linux. Funnily enough, on the same hardware, dual-boot a windows PC and stand in awe of how it just works. At worst, all I need do is download those evil drivers you speak of and run the installer.
This doesn't make me angry, or long for windows, but be realistic.
Ease of use. I can't plug an Arduino into a monitor and program it on the metal in whatever language I like and run an interactive debugger on the hardware, or get even close to the processing power, or easily store a ton of data on it (or the network), install a firewall on it, make it a file server, the list is endless. I'm sure at this point you have about 5 arduino add-ons you want to mention to me. And that's the point, RPi has all that and more out the box.
Plus: I don't have to learn new instruction sets, or subsets/modified versions of certain programming languages, or completely new programming languages... just to get it to work. And I can use databases on it, web servers, unix tools, bash scripts..... I just can't stop thinking of things I can easily do on a RPi that I cannot do on an arduino.
I agree with you that as a geek gadget watches don't do it as well as phones or PDA's.
But I don't see wristwatches as jewelery. I wear one, usually not a very fashionable or expensive one. I try to get something expensive enough to last. I've found cheaper ones break, rubber straps degrade over time, etc. So when looking for a timepiece I've got very utilitarian guidelines. Stuff like "the strap must be metal" because those last forever. It must be big enough to tell the time quickly but not be so huge as to be in the way - like the fashionable ones - stuff like that. Looking good does count but not as much as other attributes.... Which is why I'd call those the geek criteria for a watch.
I don't buy the (not your, the) "your phone is just as good as a watch" argument and to be blunt I'm a bit dumbfounded by it. Grappling around for a phone in my pocket and unlocking the screen, etc. just to see the time is actually a burden and a clumsy way to get the time.
Thus, I'd say use the unix philosophy: One tool to do one thing well: I'd get a normal everyday timepiece. The point is to be able to lift your arm and tell the time instantly. That's what it's for: glancing. The moment you spend more time than that on your watch with added fancy geekery, I'd say a smartphone is a better tool.
My anecdote would be one time I nodded off for a nap, and woke to orange light outside my window, my watch indicating around 7 o'clock. I suddenly 'realized' I'd overslept and leapt from my bed in a frenzy trying to get ready for work, I rushed into the kitchen going "I'm late!"..... when my stunned S/O pointed out that it's "7 pee em" and my sense of time started to return, I had to completely re-orient myself. I looked down and foolishly realised I was already dressed, and she was making dinner, not breakfast.
I don't think we really are able to track time when asleep, we just assume when we wake up it must be morning because we've been doing it all our lives. At least, that's what happened to me that time.
Above-Below in tridef, no such option.
H3D, no. But after fiddling I got the e-d + iz3d combo to work, only in interlaced mode, significantly slower than my card usually runs, looks not so pretty (because of interlacing obviously). Watched some SC2 cutscenes in 3D, does work and looks coolish. Not what I was used to in the past, but better than nothing. :)
Well I went home yday thinking maybe I should try again, see what's out there...
Downloaded the iz3d driver, and they've dropped support for shutter glasses completely. Hmkay, let's try interleaved.
Then ofc the glasses didn't activate, so I tried the e-d activator and that just made my CRT (the one I've always used) go black and not return until a hard reboot.
Then I downloaded a trial of tridef and found the trial doesn't include page-flipping, and same activation problem with anything else. So I can't even check if it works before I put down my money, and if it's anything like the iz3d driver, it won't.
I'll try this h3d thing but my hopes are low.
An example that leaves a particular bad taste in my mouth...
I bought a set of LCD shutter-glasses years ago. I had an nVidia card that had driver support for them. I got these babies, got the special nVidia driver, and I was blown away.
But soon I needed to upgrade my gfx card, and found nVidia no longer supported shutter-glass stereo on any of their new shiny cards. Weird right? All you need is software trickery.... but wait, yes.... Suddenly 3D LCD panels come out and nVidia simultaneously releases drivers that support them. And next thing you know, they have their own shutter glasses that cost way, way more than the ones I'd bought years before.
And still, there's no support for my set. Support that already existed.
My opinion: This is why hardware companies care about drivers, it lets them wrangle money out of people who'd like support for their products.
The way I understand it, is that our immune system usually waxes cells that have gone rogue, and we get 'cancer' all the time except those cells get killed quickly by our immune system.
However 'true' cancer has a mutation that prevents this from happening and this drug turns that mechanism on again, so things can work as usual.
In other words: normal cells should carry on as before.
(If I understand this correctly, IANAD)
Please return your Geek card for a full refund.
He who has the gold, makes the rules.
Poachers who care about licenses, you make me laugh.
I live in Africa, putting a rhino on a piece of land almost transforms it into a war zone. International trade in ivory/rhino horn is a big deal, no mere legal red tape is going to stop these guys. Neither do they mind much if they have to shoot some rangers to get to the animals, and so the arms escalation begins...
Well the horrible truth is they'll get poached out much quicker than they can breed. Keeping something like a rhino alive in such close proximity to the east might be a challenge that outweighs the benefits.
Yeah it's been pointed out. <not an excuse> Second language speaker</not an excuse>, Thanks.
This is a false dichotomy. Do the TCs anyway, it'll probably be on time (if not early) and won't be crap. Unless you are some kind of deity that creates absolutely no bugs during your 2 week scramble that slow you down regardless. Imho a bug highlighted by a tc is orders of magnitude quicker to find and fix, you'll probably discover it while writing the tc and no one will ever even realise it was there in the first place. Doubters: Try it, even if just at home, let it sink in how much time you are actually saving.
I scrolled down just to see if someone suggested Pragmatic Programmer, AC deserves a +1 billion mod. If you read just this one book, and apply it, you'll be head and shoulders above most of the industry in one foul swoop.
Secondly, you already know this answer by the way you phrase your question: Stop doing prints for debugging and use a debugger, that's it's job. You'll remove years of pain and anguish from your working life. Anecdotally: our "debug by print" hire gave up trying to keep up with the "debugger guys" after only a few months and left the company voluntarily, despite our suggestion that his debugging methodology is painfully slow.
Test driven development. Hackers say "but it takes more time to write the tests", I say: "But it saves me a butt-load of time tomorrow, it's a net win that will keep on giving". Moreover, TDD tends to result in cleaner designs anyway. I take this a bit further: If I have to write a new concept into a huge system, be it big or small, the first thing I do is write a smaller test with the new concept, iron out all the bugs and kinks until I understand the problem and solution properly, only then I dig into the "big code". Once again it's about saving myself time and headaches. (and, of course, try to write a module or component I could re-use in a similar situation)
Learn as much as possible about dependencies. Also the difference between library code and application code, and what bits of code go into which of these. (Pragmatic Programmer's "do not repeat yourself")
Basically your thinking has to shift from the short term to the long term: "I have to maintain this, possibly for many years to come, lets save my future self a lot of pain by doing some planning and doing things right the first time" (yet more pragmatic programmer).
Anything you get on this post though, is going to be a bit of a "learn C++ in 21 days" thing. We can tell you all about what we've learned and you can try to assimilate it all, but at the end of the day to get 10 years experience you usually need.... 10 years, but not the kind of 1 year x 10 experience lots of folks have. I found it very hard at first to "catch up" with mountains of information being shoved down my throat all at once, but...
Find a good environment above all else. Work with and for people who are highly experienced, highly critical, and aren't afraid to show it. Work with people who will gladly review all your code and blast it to bits for you. This is emotionally uncomfortable but pushes you up a steep learning curve very quickly. Programming can be a very social and cooperative learning activity in the right environment (look up agile while we're here). I'd say that way you can gain 2 years experience for every 1 on the job, possibly more. The trick is to tell the guys you shouldn't be listening to from the ones you should, and it may take a job-hop or two to find them.
I'm thinking a flexible pcb (search instructibles, requires a bit of work), some surface mount LED's, maybe a smd PIC/AVR or whatnot, and a watch battery. (or chain a couple for appropriate voltage, or supply usb socket, AA socket, etc...)
And hand deliver (someone comments further down about bomb screening of mail).
Welcome, to EVE online.
Guys who are good (desirable to have) should really learn not to roll over and sign the first document that lands in their hands.
You negotiate this stuff, you go "I need you to exclude work I do off-the-clock on my own resources, with a clause that if I do COMMERCIAL work I have to notify you of it to prevent conflict-of-interest". Then you notify them, big whoop, they don't really care about your little pet project imho.
Can't say I've ever seen someone have a problem with this, but I don't job hop so my experience with this may be limited. All I know is, I've asked, and I received. One CTO even indicated that if I wanted to use the company's core library, I was free to, since it could help them iron out bugs.
At worst, you go ask nicely to have your current contract amended. They can say no, but you've tried.
In that case I believe in a deity called "AW FUCK!"
Ridding yourself of simple religious phrases is actually pretty easy when you come to detest all religion.