My wife and I were talking about what lamps we had that were LED vs fluorescent vs incandescent; one of the bulbs that we have that is of the latter is in our closet, and has been there since before we bought the house in 2002 (the house was built in 1973).
18 years now, maybe longer, but it still turns on and has yet to burn out. Of course, we don't use it much, and it's only something like 30 watts (clear bulb).
> This would also solve the problem that e.g. NASA has with each President reversing course. No wonder that the last Moon visit was decades ago when the priorities get completely turned over every 4-8 years.
This is also one of the arguments against promoters of so-called "term limits" for congressmen and others; imagine this kind of churn in priorities occurring with major and minor public works projects!
We don't have to wonder too much - we can already see it at the state level with governorships changing; one recent large change of this kind is with California's high-speed rail system. For all of it's "boondoggle-ry" and problems, I don't think the way it's been "axed" lately will be of help to completing it. In fact, it might just be a self-fulfilling prophecy for its opponents.
That's only one example; I'm sure others in other states could be easily found as well if one were to look. Ultimately, that kind of thing would only get worse with term limits on representatives to Congress, because federal funding for such large scale projects is needed - and that would end up likely in flux, and ultimately scuttle projects that depend on steady funding to be completed.
One could argue that individual state projects should only be funded by the state itself, but that notion of state self-sufficiency went out with the end of the Civil War. I also tend to wonder if - under a term-limited system - such a thing as the interstate highway system could have ever been built. It doesn't seem likely.
I'm worried that the (fairly) recent change to the DSM to lump the various forms of autism under the terminology of "autism spectrum disorder" will ultimately lead to more confusion by people as to what autism can be about.
Which is why in the article it was mentioned that many who are "high functioning individuals with autism" hang on to the term "Asperger's" (despite some trolls re-renderings of it) - as it was and is a label that, perhaps incorrectly, has been applied to that particular subset of autism spectrum disorders.
At the same time, we don't want to say that those in that sub-group only have issues with social skills and cues; the issues that such people face are much broader than just that particular area.
Also, we don't want the term "autism" applied only to those who are in that set either.
That is perhaps what the terminology change was about - the idea that by inserting the word "spectrum" into the diagnosis, and removing the individual terms, that people would see it more as a continuum diagnosis, much like Asperger saw it. However, people will likely tend to focus on the first word "Autism" and come to a different conclusion - maybe. Which is again why, I suspect, people have hung on to the "Asperger's" label for their particular subset.
Maybe there's not a good answer or solution for the definition(s)...
I've never been formerly diagnosed, but I'm pretty certain I'm on it somewhere. A decade or so ago, one person, who was a coworker of my wife's, and whom I had met and conversed with - without any prompting or explanation from my wife - gave her a copy of "Mozart and the Whale" to give to me.
I have yet to watch it.
But I've always had certain obsessions: one is things moving in circles - windmills, gears, whatever - all fascinate me; interestingly, even abstract things likes loops and recursion, such as in programming, are easy for me to understand and utilize. Mazes are another thing (which is almost opposite of a loop). Fractals, too.
Recently I sat for a couple of hours coding a bookmarklet to remove extraneous portions of instructables so they could be saved to a PDF or otherwise, without including all the "cruft". It just kinda "sucked me in" after I was trying to clean up one I had just browsed to; at the end, I had to sit for a bit to figure out "now what did I just make this thing for - ah, yes - this tab over here".
My mother (RIP), who was of a different generation (I can't explain it easily - number one, I was adopted, rather late by my parents, who were in the 40s at the time - but technically they fell into an "in-between" generation somewhere between "the greatest generation" and "baby boomers" - much like how GenX is today - of which I am a part), always described me as looking, or being, "sour". It wasn't until my adult years that she likely meant I had a particular RBF, maybe a blank or poor affect that resulted in my countenance being "non-agreeable".
Even today, my wife will sometimes ask me if I am mad at her, because I look or seem angry - when I'm not. It's just the way I look. I have this look of seriousness or something. My current employer/boss has noted the same thing about me; he has often said that he doesn't know how I will react or respond to certain things, and that sometimes I'm surprising in that regard.
Something you may have noticed here - or elsewhere if you've seen my other postings - is my manner of writing, and likely speaking; a coworker of mine once told me that I speak like how Lisp is written (what he meant was that I typically talk parenthetically, nesting explanations and anecdotes within each other down a chain, but that everything was related, and I would eventually "pop things off the stack" and come back up the chain to the original discussion).
All of this underscores why I've never been good in social situations, among other things, but my wife has been very helpful and understanding in that regard (yet, she still has problems with my countenance at times).
As far as your experience with other programmers - well, I admit that at times I can be "that guy"; arrogance and other mal-traits do surface at times. That said, I'm also the first to apologize when I know I am or have been in the wrong. I also make sure not to let whatever led to that situation happen again. Most of the time, though (except when hubris, arrogance, or stupidity attacks me), I have learned that the best way to avoid issues is to not say anything at all - I am often known as "the quiet one" because of that (I then will often play the a-hole and remind them of what neighbors always say about serial killers and mass murderers)...
My brother-in-law went through that with a piece of property he bought in California; it was a house on top of a "hill" (or small mountain?).
Two "neighbors" colluded to shut off all easements to the property, hoping that in 7 years (or whatever) they'd get the right to the property and could fix it and resell it. It was originally owned by investors, who wanted to offload it because they were fighting the same fight, and one of them had a heart attack and was dying, and they just wanted out. Along comes my BIL and he gets it for a song.
And the issues to boot.
The neighbors - one was a known "a-hole" in the neighborhood who would sue anyone and everyone; indeed, if you looked up his name in California, he had a record of using the courts almost as if it were his job. The other guy, he owned a large avocado orchard which bordered the property; he had fenced over one of the plat map easements. The other easement was a road which led to the property, which the first guy lived next to, just down below from the house. He blocked it off with a metal gate. He also owned another house he used as a rental, which was just immediately below the house. So he'd leave the gate open sometimes, and would give a key to the renters, but otherwise it was closed off. He'd also let people in for maintenance and inspection of a water tank which served for water in the neighborhood.
The story is wild and long - they didn't count on the tenacity of the family I married into. They didn't count on my brother-in-law, who works construction - being willing to run his dump truck for 48 hours straight with little-to-no sleep to make money in any way possible so he could pay his lawyer bill every single month (which ran to insane levels). He didn't count on my sister-in-law being willing to live in the house, to establish residency, while her husband worked a state away.
We had to hike up to the house one, using machetes to cut thru the undergrowth. My brother-in-law later ran a bulldozer to cut a path up the side of it, to get past the gate (he came from the avocado side - which the sheriff allowed him to cut past the fence, because of the plat map, and thus had to fight that neighbor in court too) - they then used 4wd vehicles to get up the side to the house.
He never counted on any of this and more. My brother-in-law flew a pirate flag from the flagpole, just to give the other guy the finger during all this.
Eventually, after several years, my brother-in-law won the lawsuit, and got access to the road. The gate was removed. The entire neighborhood rejoiced, and my BIL became the "hero" of their area, because they had long suffered various indignities by that guy.
A few months after my BIL won the case, the guy ended up having a heart attack, and died. The other guy lived a few years longer, but also ended up dying of natural causes.
My brother-in-law's house, now that it has access, instantly shot up in value several times over. He and his wife are now thinking of selling it, and moving on to other things.
I know this info - but just reading it makes me wonder why people go along with the scam.
I get it - I once had a car loan too; it wasn't even a new car (but I bought it from an actual dealer, so it wasn't some weird sketchy loan). Paid it off, had the car for a while, then it died and I moved on. That was the last car I financed, too.
Since then, my wife and I only pay cash for used cars, and spend the extra money normally used for payments, for maintenance and upgrades on the vehicles (upgrades are on my side, mostly - I own a Jeep Wrangler - don't own one unless you like to throw money into a hole - but it's more fun than a boat, so there's that).
We own our cars for as many years as we can, until it becomes more expensive to repair than to buy something else. But, there again, I think my wife will keep hers for as long as parts can be found for it (2013 Outback - solid vehicle), and I'll keep my Jeep until I can no longer get into it from age (then I'll probably just delete the lift and put regular tires on it).
My VehiCROSS on the other hand...I'll cry the day I sell it, unless it's at a car show auction should it ever become a collectible. Heck - I'll still cry - I love that truck.
There's actually two acceptable answers for the question...
I should note that my statements below may be FOC; I do not myself have a CS or EE degree, so take what I say with a modicum of salt...
But first, note that I wrote "function", not "circuit".
It could be argued that CS, on the whole, is a subset of mathematics, particularly that of boolean algebra and logic. As such, the functional equivalency between the abstract of boolean logic/algebra, and its implementation on a physical substrate, could be considered among the most important of CS concepts.
One could also argue (maybe?) that Turing's "equivalency theorem" might be related to such as well. Consider the case of an emulation of hardware done in software; one could consider that - at a base level, it is boolean logic expressed physically, being expressed equivalently as boolean software functions.
The opposite it also true, of course - that it is possible to express software boolean functionality in the equivalent physical form.
What form it physically takes does not matter (other than speed of course), which is why I also didn't ask for an implementation/representation in electrical terms or schematic form, but rather a diagram of something that could be expressed as a physical and mechanical object. If the person were so inclined, they could express it as a series of levers and marbles, or in LEGO, or Meccano, or any other similar option.
EE knowledge is not needed here, I don't believe (Martin Gardner might agree).
> My first thought upon reading this was: "If you don't want to quit your job, then just stay."
Well - that's always what I try to do, but the last several places I've worked, the decision was effectively made for me, either due to a layoff, or because the company closed down, or because it was bought out (and I was given a real stupid offer to stay), etc.
> So, is it you are working on a project, and when the project is finnished there is no work left, or do you think thay you will get fired, or what am I missing here?
> My first thought upon reading this was: "If you don't want to quit your job, then just stay."
Well - that's always what I try to do, but the last several places I've worked, the decision was effectively made for me, either due to a layoff, or because the company closed down, or because it was bought out (and I was given a real stupid offer to stay), etc.
Currently, it's because the client I work for, on behalf of my company (I'm part of a small team here, but the client is international, and the larger dev team they have in place is the same), has made a decision to outsource the work we do here in the USA for a different international team (who likely is cheaper). We will be training our replacements on how the system is designed/working. Once they are "up to speed" (we imagine), our team will be cut loose.
Our boss (owner of the company - it's a small boutique web application business) has assured us that we have an internal project waiting for us, which we've been told about and have discussed, for us to continue on with. It is supposedly fully funded, which I don't have any reason to doubt. The owner is a great guy, and has been up-front about everything going on, and I trust that this will work out. I've told him that so long as the paychecks don't bounce and I still have health coverage, I'll stick around. I really do like our team and environment. I also like the idea and concept of this new internal project.
But I've been doing this long enough that even that may not be enough. Things have a way of turning in business where at one point, things might seem ok, but then overnight a painful adjustment has to be made and you find yourself without a job. I've also told my boss as much, not to sacrifice his business on account of trying to keep us all employed, because I've seen in the past employers with similar small companies I've worked for completely implode because they kept trying to make things work and keep their people employed, when scaling back would have been the better option. It's noble and nice to know when an employer acts that way, but from a business perspective it really is the wrong decision at times. So I've let my boss know that I understand this, because he's that kind of guy - he doesn't want to lose us, we're a good team (talent-wise and such), but I don't want to see him lose the business either.
I'd rather he would stay in business, and maybe I could return in a few years or something when things are looking better.
But so far - there's nothing to indicate that anything like that is going to happen. We're all still employed by this client. The company I work for, itself, has other clients (I am part of a small team tasked to work with this singular client; there are other devs who work with other clients on other web application projects), and this new internal application could turn out to be something wonderful for the company, if we play our cards right.
But I worry because our team lead left for a new position, because he has a family and needed more stability. I worry that the remainder of the team may take that same option, due to similar reasons. I don't have to worry about such issues; I don't have kids - but I do need to be paid to pay my bills, and I need health coverage (more a necessity as I get older).
But there's the possibility - if the rest of my team leaves for "greener pastures" - that the internal project may be shelved, or that I can't work alone on bringing another foreign team up to speed on our current project, or whatever, and at that point, it may be more beneficial for my employer to let me go than to keep me (and, after all, I've told him that he should do as much, right?).
I wouldn't begrudge my employer making that decision, but it doesn't mean I don't worry about it, either. The one thing that keeps me from worrying too much, at least in the short term, is knowing that I am "debt free" (except a mortgage), I have plenty of savings (enough to cover 2-3 years of salary if needed), and that I don't have to provide for a family other than my wife and dogs. In short, I can make things work for a while, until I can find something else or do something else. But it doesn't mean I don't worry about the whole situation...
> They are more likely to have not seen the problem before and have to run the gauntlet with no practice.
The other possibility is that they have seen the problem before, fixed it, but didn't know it was called "calculating the Big-O bullshit of reversing linked lists while merge sorting"...
I have 25+ years of experience; in a month I will turn 46. I don't have a CS degree, nor even a BS. I'm one of those devs who started basically fresh out of high school, and made a career out of it. I'm not even sure that is possible to do any longer.
What I don't have is all of that CS knowledge and terminology. That isn't to say that I could solve all of those problems, or that I have encountered them, or come up with the correct or practical solutions. To be fair, I am always learning something new (and I like it that way). Also, to the "example" you give, I'd have to look up how to reverse a linked list and what a merge sort exactly was. Hopefully, there's some kind of standard library for both in the language I was using, but if I had to do it from scratch, right now off the top of my head, I couldn't do it.
But I would know how to figure out and ask the right questions on how to do it, and go from there.
And that's really one of the best skills as a developer to have, imho. There have been times where I have had a problem, tried to google for it - thinking it was a common issue - found that it was a common issue, with people asking the questions - but either no solutions, or worse:
...and so, by breaking the problem down, figuring out the answer to those questions (with either more googling, or implementing a custom solution), then pulling all those parts back into one coherent answer for the initial problem - that greater issue can be solved.
Then I find a forum or something and post the solution there, so that future coders can at least have one good reference point, for as long as the forum exists. Nowadays, I'd probably put it on my github repo or something.
Ultimately - there are a lot of "senior devs" (both in age and ability) who are currently in my place; people who didn't go the tradition educational route; people who were coding in their bedrooms on 8-bit home computers in assembler and BASIC because that's all we had at the time. We may or may not have run across those CS-level problems. If we did, we didn't know their names (much like not knowing the names for certain "patterns" - yet another similar thing) - but we still may have implemented solutions for them anyhow.
From what I gather, what is most shocking of all is that candidate still fail this test, despite it being so common, despite there being an several github repos devoted to it, as well as other pages and articles about it (somewhere out there was a page or a repo or something I encountered that had it written in almost every programming language out there, include whitespace and brainf*ck).
Even when given as a "take home" challenge, they can't even copy-pasta an example off the internet...
> I disagree if it means, ask them to implement an algorithm on a whiteboard to steer a robot through a maze in a time with optimal algorithmic complexity. This is completely useless and the people that can do this have little overlap with people that can implement easy to read/debug code worthy of production and maintenance.
From an interviewing perspective, asking someone to "solve" this kind of problem on a whiteboard would be interesting to see.
One thing I'd tell them is to not worry about the code; that is, if they just want to write the process in pseudocode or something like that - as long as the logic can be followed, that would be ok. In other words, give them the leeway to not worry about proper coding, knowledge of functions, etc - but instead let them concentrate on the problem.
I wouldn't expect anyone to solve such a question - but it would give a good insight into how they go about solving a problem. Do they ask questions? What happens when they get stuck? Can they explain their reasoning? And so forth.
Let them do what they can, give them 30 minutes or so; if they look lost, ask them some questions, see how they respond, etc.
I think such a question could be very valuable - if presented in the right way.
One place I worked at, the company hired a developer who claimed to have a CompSci masters.
He was completely unable to code anything. I thought it strange.
I started to ask him some basic questions that any actual CompSci degree holder should be able to answer (and I don't have a degree in CompSci at all - everything I know I've learned on my own, from other sources, for the most part); I didn't make it like a grilling session, just polite conversation about a shared interest - but he either had difficulty, or couldn't answer at all.
He only stuck around a couple of weeks.
I've often joked that an interview question should be asked akin to "What basic logic function is needed to implement a computer? Show it's truth table, then design one in 2-dimensions on a whiteboard as a virtual 'rope-and-pulley' system."
Couple that with a random-style fizzbuzz-like challenge, and maybe a more difficult open-ended programming challenge (ie "build a simple CRUD app") - that would give you a good idea on their real skills.
Note: That first question I wouldn't expect many to be able to pass the last part; even the first two parts many perfectly capable developers would have difficulty with. But I would be disappointed if they claimed to have a CS degree and weren't able to at least tell me what it was and the truth table for it.
The best coding challenge for a hiring process I ever had happened, of all places, when I applied for a PHP development position at Fender.
At the time, their marketing department did all of their web development in-house. I don't recall all the specifics; there was a round table meeting between the manager of the unit, the team lead, and one of the senior developers. At the end of it, they sat me in the cubicle area with their other developers, gave me an MBP with MAMP on it, and a piece of paper outlining what they wanted me to code - a simple CRUD app. It didn't have to have any fancy styling, but it had to look ok, and it had to work. It was "open book" otherwise; use google or whatever other resource as you needed it. Also, all this happened while the other devs were in the area; it was basically a time slot from 2:30pm to closing time...
I'm thinking - really? Something this basic...
But given what you had to do - essentially from a blank slate, including the database, set up the tables, build the SQL, code the PHP, integrate the form to talk to the PHP "backend" and update things, refresh and show the updates, etc...
...well, isn't that basically what most software dev work is, at the core? And if you can't do any of that...
Of course I got the position, and worked there for a couple of years; not the easiest environment I've ever been in, but certainly very interesting.
During it, though, I got to experience, from the "other side" what I went through - and I was amazed and dismayed to see how many people were interviewed who couldn't do it. Who had what seemed like great resumes who couldn't even start. Who'd sit there for 2+ hours, and not type a thing. Who didn't even google up something, or ask a question, or...
We had one guy sit for a while, then just got up and walked out without a word.
As I read comments like yours, and others elsewhere, I can see that this is more common than not. You are right to believe that there will be those that will "memorize" fizzbuzz, which I why I think a challenge similar to what Fender asked for is a better test. I know that some developers would balk at it, but I think the time invested may be worth it, to show you are able to do the job, and can come up with your own solution to a problem, and not just some regurgitated answer.
Interesting aside:
A colleague of mine I had worked with prior, unknown to me, applied for the same position at Fender and was given the same laptop as I did. But they had forgotten to wipe it! He saw my code, and didn't know if he was supposed to expand on it or what; he told them "hey, this looks like my friend's code...?" - and they realized what they forgot. They thanked him for his honesty, wiped it, and continued on with the process. He also ended up getting the position as well.
In a little over a month, I'll be turning 46. I've been doing software development professionally since I was 18. I have no formal education in it, except for a couple classes taken at a CC for C++.
Between hearing things like this, the way the internet is going, the way cell phones are becoming more closed up and walled in...just everything about the way the world is going...
...I honestly am beginning to think my best course of action would be to (somehow) change jobs entirely, move out to the middle of nowhere on 40 acres, drop off the internet, build my own cellphone (which I've mentioned), and just go back to hacking on my TRS-80 Color Computer. If I ever accessed the internet again, it would only be for email and maybe the occasional "telnet BBS" - and that would only be after a 50 mile drive into "town".
While I know and understand that despite 25+ years of experience I may not be at the same level as others with fewer years, that time should count for something. In my case, what I lack mostly has been any sort of opportunity for a "management" role; I have never been a team lead, for instance. It pains me. It does nothing for my self-esteem as a software engineer.
But that shouldn't count against me. Nor should being able to solve some rando problem concocted as a gatekeeper. I've worked at places for short periods, and I've stuck around at places far longer than I should have. But lately things have been hovering around jumping at 3 years, and that time seems to be coming up for me at my current place of employment.
The thing is - I don't want to leave. I like it where I'm at. I enjoy the problems. I enjoy my coworkers. I enjoy the development environment. But more often than not, it seems, outside forces seem to conspire to kick me out whether I want to go or not.
Maybe I'll get lucky once more and land a new position. Maybe I can use the fledgling skills I have in ML in some manner. Or I might have to drop my salary requirements down and take something lesser, just to stay employed?
But at some point in the future - the near future - it feels like it won't matter what I do or don't do, I won't be allowed to "make the cut" any longer.
Thank $DEITY I have no debt other than my mortgage...
> are neural nets deterministic at all? Given all their randomness, I'd assume not.
That's actually an interesting question; I'm probably not the person to answer it, since my experience with NNs is admittedly on the "still learning" side of things, and that learning has not been via any credentialed sources...but I'm willing to take a stab at it.
NN models - that is, the thing that results from training a neural network, are typically "fixed", in that once trained, the model doesn't change - at least classically. I imagine that somewhere out there, there may be NN models which can change as data they are processing is run through them, learning on the fly so to speak. I'd have to research it; I'm sure it's something that's done or been done?
But normally, once a NN has been trained, it's model is "fixed" and doesn't change when inputs are presented to it. The training phase is - or appears to be - fairly stochastic. I'm not sure I'd want to call it random, though, because I don't recall any kind of random numbers being used during back-propagation.
But the data that is presented to the neural network is usually randomized in presentation - and sometimes content. That is, say you're training the NN on recognizing horses. You might have several thousand images of horses, but you don't want to show just those. You might want to generate many more - rotate each one just a bit, skew it just a smidge, maybe change the color and/or contrast/brightness, etc - to in effect generate a bunch more positive (and just as many negative - so you don't get bias or overfitting happening) examples to train the NN on what is a "horse" vs what is a "not horse".
So that data is somewhat "random" - but from what I recall, the actual mechanics of training - the algorithms of forward passes and backwards passes (backpropagation) don't have any randomness to them; just to be sure, I checked this - which is a great explanation (not the simplest, but not impossible to follow):
I don't know what your math skill level is here, so don't let any of the calculus and "chain rule" stuff get to you if you aren't familiar with it (tbh - I suck at it), just look at the equations and explanations. It's plain that there is no random number generator to be found in the process.
So - in theory - if the model, after it has been trained and "baked in place" so to speak - is presented with the exact same inputs, it should generate the exact same output.
But the input has to be exactly the same; in the case of an image, the neural network's input layer is usually an "unrolled" 1-dimensional array representing the pixel values of the image (left-to-right, top-to-bottom - as a 1D array - usually). Those values are usually grayscale or color values, presented either as integer data or floating-point values.
As long as that image data is presented exactly the same to the NN model, the output should be the same; for instance, if shown a set of pixels values that represent something, the output of the model will always be the same if shown those exact same pixel values.
But usually, these systems aren't built to take in "exact data" but rather data from sensors of the real world. So - the data that would probably be fed into the NN model likely comes from, say, a camera - and that sensor will not always present the exact same data to the NN model, even if purposefully set up to do so - because all such sensors have noise and aren't perfect (different pixels from the camera's sensor can and will return different values, even if shown a calibrated blank image in a fixed mode, with consistent fixed lighting, with the best camera sensor available, etc - it's just a fact of the real world).
So, because of this - the output of the NN model will in effect be "random" - but only because the input is effectively "random". That's actually ok, because what the model outputs (even if set up as a classifier) are values of probability - percentage values, where (ideally) the "spike" in the overall set of values represents the actual identification for the network, and that any inherent randomness in the system (sensors and whatnot) is filtered out and (hopefully) doesn't effect the outcome.
Though as we know, this too can be exploited; because the model is "baked in", you can show a series of images to the network, and get an identification on the other end, and probably with some statistical analysis you can work out what the layers in between might actually represent (probably not exactly though) - and identify flaws that could cause misidentifications on the output. More or less "hacking the NN model middle layers" and using that information to craft an "exploit" for the input to cause a particular mis-identification on the output side.
As we know - this is possible; at least, we know it's possible to get a network to output a wrong result by simply changing the pixel values of the input image slightly (even subtly that can't be seen by a person looking at the image - basically a steganographic style attack?). Such a "hack" could be used for any number of purposes, but mostly they show how fragile such NN models can be.
Does this mean they are random, or deterministic? I'd argue for the latter at this point, but again, I'm not really the person to ask. Hopefully someone else can answer (or has, by the time I post this).
18 years now, maybe longer, but it still turns on and has yet to burn out. Of course, we don't use it much, and it's only something like 30 watts (clear bulb).
Someday, maybe, it'll get replaced.