Reminds me of the excellent EE-trolling magic circuits by Henryk Gasperowicz[1].
The number of things you could bury a little QFN MCU or similar in to play silly buggers with people is huge, especially if you have the luxury of them providing the 'support components'.
Looks deceive, those are no ordinary LEDs and that's not an ordinary switch. I have a good idea of how this was done but I may be off on the details. The switch contains a coil which is shorted using the switch itself which allows you to detect its presence or absence. That can be used to switch power to an RF oscillator which is connected to another coil, setting up a field over the green paper, relatively close to it. The LEDs contain a flip-flop + some rectification and a cap, each LED can be triggered 'on' or 'off' by completing the circuit between the legs (which otherwise function as antennae, that's why they are bent the way they are, that way they function as a dipole).
It's a really neat hack, the guy must have amazing skills if he really has that much hardware tucked away inside the guts of an LED, you'd basically have to hollow out the whole thing, then put an SMD LED at the tip of the housing and use the remainder of the space for the circuitry.
Time will tell how much of this was right if and when he reveals how this trick was done.
I'm on the phone so I won't google, but this is a very old story and if you go to the guy's website, he has a writeup of exactly how he did it. (and yes, the LEDs are hacked, they contain another hidden component)
So, indeed. Off on the details though, he's managed to sandwich the whole RF generator into that switch package. Mad props and soldering skills way beyond anything I could ever do.
Yeah, he's good at that. In other video I remember him having hollowed LEDs and putting capacitors inside to create a RC circuit and the 9V battery connector had a microcontroller hacked into it.
In the age of 4.5 V 'flat' batteries we did something similar, put an AC generator and another battery inside. (simple sine wave oscillator coupled to a cheap small transformer salvaged from a transistor radio). Watch the local electronics wizz tear their hair out in bafflement how an empty battery (according to the DC volt meter) can power a lamp. Why resort to 4 letter words if you can mess with the laws of physics directly?
I'd love to an electronics related prank in 2015. Just before I went on christmas holiday, I inserted a snippet of JavaScript into our web-based IDE (used by our developers) that flipped images upside down for a few seconds now and then. Their first reactions - this must be a browser issue. Another suspected an issue with the latest OS update.
Too bad the font isn't exactly the same as the real part (look at the 6, 7, and 9 near the end of the video), or maybe that was intentional...
One thing that still amazes people today is just how tiny a component can be, and yet provide so much functionality. I've been working with electronics for many years and the feeling still doesn't go away. The die of that microcontroller is even smaller than the package, and if he had access to the right equipment he could encapsulate one and make it basically identical to anyone who didn't look inside: http://www.bunniestudios.com/blog/?p=208
On a more serious note, this brings up thoughts of surveillance implants and backdoors: He could've made that "simulated" display driver record data into the EEPROM of the MCU, and play it back at a later time. An external EEPROM, if the internal one isn't big enough, isn't much bigger; you can get a 256KB EEPROM in a 2x1mm package.
I work in a printing plant that has a great deal of tech from the 80's and 90's. Nothing amuses me quite so much as pulling out a damaged obsolete board the size of a pizza box and replacing it with a micro-controller board the size of a playing card and a single screen's worth of code.
At about this point, I feel the urge to explain that basically Tony Abbott (our sledging PM) has basically helped kill off TAFE, but that's ok because his government wants to give students loans at high interest rates for private colleges to give an inferior education.
This is the PM whose latest innovation is to setup a ministry for science. Or rather, re setup a ministry for science because he formed the first Australian Federal government in 50 years that had no science ministry.
god, you guys are idiots. would you rather vote for a government that is going to crush business and make it harder for you in the future (but hey, its fine! most labor / greens supporters only think of now).
Relatively new EE here with a quick question. You can, technically, make a system with the same output (spelling penis, etc.), without a microcontroller, correct? With the proper frequency dividers, timers, and logic gates? Or am I wrong here?
Intermediate mode: You could program the discrete logic onto a tiny CPLD and probably still hide it inside the 74'193. That way you'd still technically be complying with the "no microcontrollers" constraint.
Sadly, it's probably a little hard to fit a CPLD in that kind of space without wire-bonding equipment. They also tend to lack the infernal clocks that most microcontrollers have these days.
You could reproduce the whole microcontroller with just those things, if you wanted. So inherently the answer is yes. If you mean to ask if it can be done without software, the answer is still yes.
Definitely. You could make a small hardwired state machine and decode its various states into the behavior you wanted, for example. It would probably take a dozen or so 7400-series logic chips (depending on how complex the easter-egg behavior is).
That kind of small, non-microprogrammed machine is really common, but people don't build them out of discrete logic any more, or probably even design them by hand. They're written in VHDL or something, and synthesized into silicon or a gate array. They're how a programmable controller is implemented (something has to be under the bottom-most layer of microcode), but they're also used for lots of other little peripheral tasks.
I'd guess the student in the article will be formally taught about them in another quarter or two.
Generally if you can pull that off you are way past the course material :-) I had a FORTRAN problem which asked to print the current bowling score given a series of numbers between 0 and 10 (number of pins knocked down) and I had it print out spares as '/' and strikes as 'X' and it didn't print the actual score until you didn't get a strike (as is the custom on bowling.) and the TA complained. (the assignment was to print out the score every frame) but the professor was cool about it and had a nice chuckle so I did get full marks.
It is generally a sign of how good the faculty are at an institution based on how they respond to this sort of exceptionalism.
I had a similar experience with a Visual Basic class at community college (required credit for the degree at the time). Since the class was kind of boring (was already a C programmer, Basic was way in my past at that point), I wanted to make the projects more interesting. So, on a calculator project, we were to make a hand-held calculator emulator. I asked if there were any restrictions on the type of calculator, and was told no -- any one. So I emulated an HP RPN style calculator. But since the instructor never heard of RPN before, and despite an introduction screen explaining it, he still failed the assignment.
It baffles me that there are college-level CS instructors who haven't heard of RPN before -- my high school CS teacher had us write an RPN calculator.
That said, I can see an argument that an RPN calculator "trivializes" the assignment compared to an infix calculator, especially if the latter was supposed to do order-of-operations.
That's the kicker -- order of operations wasn't a requirement (and probably wouldn't have been allowed) either. Maybe I should have put a mode button on it so that you can select the desired mode.
But that experience did teach me a valuable lesson -- always follow the specifications as close as possible, don't try to innovate (unless working on your own projects). And, I've learned to spot (and explain) contradictory / intractable specifications up front.
In a way it is a pity that that was your take home lesson. You deserved an A++ and the take home should have been that going the extra mile gets rewarded.
I did have a couple other classes that were a bit better -- Assembly (BAL on an IBM Mainframe), in which the instructor presented an award to me at the end of the semester, my very own pocket protector. And a C class I took, had a similar calculator project, so I ended up doing a parse tree with recursive evaluation in order to do handle operator precedence and parentheses. In that class, the instructor made handouts out of my homework assignment to go over as an example of good programming technique and an intro to algorithms for the rest of the class. Made me feel special at the time.
You could certainly be a software developer, and a reasonably competent one, without having heard of RPN. I would argue that it's harder to be a computer scientist---and shocking to manage to get to the PhD level in computer science---without having at least a little exposure to RPN: it's a classic example of stack manipulation and has important theoretical relevance to programming language theory and compiler design.
While it is true that for every thing that anyone says "everyone knows" at any given time in the world, 250 people are being born every minute on average. I think you know where I'm going... those people don't know anything, so it's clear that some much larger fraction of the general population don't know that thing.
I am personally doubly surprised as GP to find two people in a discussion about Computer Science at a college level that have not heard of RPN before. For what it's worth!
Back in 2nd year CS we were tasked with making a simple terminal minesweeper game. It would print the whole board state after each move and read coords from stdin to know what square was picked.
I wanted to make it a proper GUI-style board with arrow key movement, randomised mines (the assignment tasked us with reading mine locations from stdin at the start), auto-expanding zeros, varying board sizes...so I did.
However, I knew the assignment would be marked on automated test results. I wanted to show off, but still pass the auto-tests. So I made it ask for game "mode" at the start, implementing both the requested behavior and my desired behavior. But if stdin wasn't a tty, it just did the requested behaviour without asking, thus foiling the tests.
In college, I had to take a 1-credit hour lab course on MS-Office so that I could take an accounting class I wanted.
The first lab featured a typing test app where you had to be able to type 40wpm or they made you drop the class. The app was a DOS app that a) made you type a certain bit of unchanging text every time for the test, and if you finished it type it again until you made a certain number of mistakes.
I wrote a borland basic TSR that pretended to be a keyboard, and typed in the corpus repeatedly.
The instructor apologized repeatedly for making me take the class, and looked utterly terrified of me for the rest of the semester after receiving my 300,000wpm test result.
You got off lightly there, the instructor could have made you his assistant and farm out typing up all the course notes. At that speed that shouldn't have taken more than a few minutes of your time ;)
...did you happen to go to NC State? Just wondering if you took the same class I was supposed to take (placed out after a night of cramming on excel, having never used it before)
...did you happen to go to NC State? Just wondering if you took the same class I was supposed to take (placed out after a night of cramming on excel, having never used it before)
...did you happen to go to NC State? Just wondering if you took the same class I was supposed to take (placed out after a night of cramming on excel, having never used it before)
I took an exam which presented a drawing of a logic chip and a description of its pins and asked us to implement some functionality using this chip plus the minimum number of external gates.
I managed to implement it using only wires, with no extra gates at all. Apparently this surprised the instructors; the best known solution used two extra gates. They gave full marks to me, but also to the many students who used two gates. Given that the exam was designed to not have anyone answer everything correctly in the time allotted and was graded on a curve, I found this distasteful: I had devoted extra time to finding the optimal solution, at the expense of spending more time on other parts of the exam. The instructors were not sympathetic, and I got a B on the exam despite teaching them something new.
That's the kind of thing I tend to reference when talking to students and prospective students about what they should get out of college outside of classes. There is a grade above A+: it's "hey, I've got this project you might be interested in".
I was taking a beginner Java class (had to use up that GI Bill), and the final assignment was to make a simple "gas pump" program that tallied up the total price and printed a receipt.
I wrote up a pretty simple implementation and realized I had 50 minutes left to sit around, so I started refactoring it into classes and writing unit tests. I was pretty happy with the result, but I turned in both versions just in case I would get docked for not following the instructions exactly.
Got a B. Other people in the class who did a straight imperative style got As.
This is what computer science instruction is like at a for-profit college.
Beautiful. If I were teaching the class, you'd get the A and I'd remember when it was time to write recommendations. But I remember some professors who might have failed a student for pulling something like that. Or even accused him of cheating, for "sneaking in an unapproved piece of rogue equipment." You need to pick your spots.
What aspect of identifying them would make it worth it? I can see some potential fringe benefits -- don't take future classes from that prof, etc. But it's hard to imagine that those fringe benefits would actually be worth the drop in GPA, which does matter.
What does GPA matter for? Except special circumstances, like scholarships or visas tied to GPA? I stopped 7th grade and truly dropped out at 10th, so I'm biased. I've just never heard of GPA actually mattering.
Many companies, including the one I work for, use college GPA as a filter. The theory is: you miss some good folks by filtering out people below 3.5, but you save a lot of effort on a group that has a much higher proportion of bad candidates. If there are enough good candidates above 3.5, this can be a worthwhile trade.
Of course, there are ways around this (become famous in the industry, work somewhere else first and do well there, etc.). But most resumes, especially of new grads or people who have only been in the industry for a couple of years, will be run through this filter.
That's an option, but you're going to end up filtering out a lot of the best companies to work for if you go that route. I have personal knowledge that it's a factor at least at Google and Microsoft. As I understand it, Facebook and Twitter use it as well.
All depends on what you value. Personally, it seems like getting a high GPA isn't very difficult, so why not do well in school to keep your opportunities as open as possible? Doesn't seem worthwhile to do poorly for doing poorly's sake. That's just me though. Everyone has their own priorities.
OK. But employee surveys consistently show that people working at these companies are highly satisfied. That doesn't mean you'd be satisfied there, but I don't see how you can say that they are not good companies to work for.
You have to consider what those surveys measure, i.e. people who WORK there, not people who HAVE worked there. Thing to remember about top-tier tech companies is that anyone who CAN get a job with them can also pretty easily get a job somewhere else. This means that people who are unsatisfied don't stay very long.
You imply that innovation is the only thing an employee would want to participate in. I wouldn't have a problem working on a great team making great high quality products that are not innovative.
If you're not the sort of person overly concerned about GPA, then Google, Microsoft, Facebook, and Twitter may not be companies you want to work for anyway.
> I have personal knowledge that it's a factor at least at Google and Microsoft. As I understand it, Facebook and Twitter use it as well.
Nah, even dropouts are welcome at Google. A high GPA is a point in your favour, but not the only thing that matters. (At least once you have some experience. I don't really know how we hire fresh graduates. But as far as I can tell we take everyone who has a pulse and can program.)
Weird. When I interviewed at MS, education never came up at all. Just lots of algorithms questions, from ~9am to 7 in the evening. I was about 24 at the time.
I wouldn't ditch GPA for no reason, but avoiding a bad professor and getting a good one seems far more valuable overall.
Personally no, but I did when graduating college. I mostly found it ridiculous to pretend that if something didn't come up in the interview, it didn't come up in the hiring process at all, as though Microsoft practices the kind of open audition that my local bar ran last week.
When I was asked to send my resume to Google I fired up Emacs, wrote one page of previous positions and what I worked on there, and one page on what my interests are. Both professional and spare time interests. I spent about 15 minutes writing that resume, read through it once and then emailed it to Alan Eustace.
I don't remember if I even mentioned which university I had attended and whether or not I had finished a degree. Nor did I make a single mention of what programming languages I know or any of the tedious stuff people tend to use for bulking up their CV.
(I was told that Jeff Dean, who was one of my interviewers, said that he couldn't wait to meet someone who writes software, races cars, welds and has just finished a course in logging timber using an good old-fashioned chainsaw)
Rather than focus on artificial metrics like GPA you should focus on who you want to become. If you model yourself after the kinds of people who would flunk a student for pulling a prank that both demonstrates a sense of humor and great command of the subject matter, you will lose in the long run. In that way it is useful to identify such people so you can stay away from them, and more importantly, so you can warn your fellow students about them.
Who you look up to and learn from matters a lot.
If you want a life in academia, you need to conform and be obedient. At least until you have established yourself as sufficiently brilliant to be able to behave more rationally. Personally I don't really understand why one would want a career in academia, but hey, for some people merit badges and titles are really important and I'm not judging.
When you are young you think getting a degree and getting good grades matters more than it really does. It matters for those initial few years of your career, but once that phase is over it doesn't matter. And it matters more if you are unremarkable.
What really matters is the people you get to know at university. That's a really big deal because you will run into these people for decades to come. And you will meet people you can learn from, with whom you can collaborate etc.
As for companies like Google, Microsoft etc: there's myth and then there is reality. If you come in the front door, your alma mater and GPA will matter if you are a new graduate. If you spent your career worrying about becoming good at what you do and to collaborate with other people who are good at what they do, you won't be "coming in the front door".
I never finished a degree, but I did get a job at Google. And yahoo before that. And so on.
I got in the door because they knew I worked on things that were very relevant to them and that I probably wasn't a total fuckup. I still had to make it through the interviews though. And I did.
Of course, it should be mentioned that the hiring process at Google at the time put undue emphasis on GPA and what your alma mater was. I saw lots of people get rejected due to the university they went to or even really minor blips in their academic record. I found this disturbing. At the time Google had lots of data showing that certain metrics are not predictors of later performance. Among them GPA and alma mater. But they needed some way of cutting the sheer influx of applications down to a managable size.
If I had focused on getting a degree rather than work on interesting problems I doubt I would have gotten a job at Google. I would have been compared to a much, much larger population of unknowns and I doubt that I would have managed to stand out. Are you aware of how many people out there have good grades and good looking CVs? I do, because as an engineer at Google at the time I spent a lot of my time reading applications and interviewing candidates.
What is important is who you become. You want to find something you love to do and something you have a talent for, and then become good at that.
Not necessarily. obstinate just pointed out that a GPA filter might actually be a reasonable practice for legit companies that would be good to work for.
Gates knew his family was rich enough that he could go back and finish his degree if the business didn't pan out. If you've got that financial cushion and you've got something better to do with your time then sure, drop out. But dropping the GPA "just because" is probably not your best option.
Eh, a compsci degree would have helped me in some cases. I ended up studying algorithms and such by myself anyways. OTOH, I've interviewed people with degrees in cs and they couldn't even explain binary search, let alone implement it.
I dropped out cause my teachers were atrocious. My algebra teacher couldn't explain why absolute value was a function, just that it was and we must learn it, period. Another teacher said "computers just use binary". When I pointed out I often saw hex, instead of pointing out why base 16 is a good fit for writing binary numbers, she just stammered that computers were just binary. Still my fault for giving up, but I had enough reason at the time.
Wow, sounds like the typical heres-the-teaching-plan-dont-ask-me-why, NCBLA, spoon-fed idiocracy. Back in highschool, thankfully we had one honest guy that just let us do whatever the fuck we wanted (which was pretty awesome).
All of the borderline-useless hazing you might have missed at a "top 50" school (one of the UC's):
- Java to MIPS asm compiler in both Java and C++
- Reimplement the major parts of OpenGL pipeline in C++
- Hack on MINIX 2.x kernel, reimplement some *NIX tools
- Gates up superscalar, pipelined, branch-predicting, microcoded integer CPU in VHDL and its own microcode language
- Caching HTTP/1.0 proxy server
- Interface various hardware to PICs, FPGAs and PALs
- Problem sets upon problem sets, ad infinitum
- Coed dorms where the doors are always open, but you won't have time for more than just hooking up
- Sleepless all-nighters (2-5 per week) and all the junk food your meal plan can afford (because you won't have time to cook)
Worse. My parents had a rather religious phase and sent me to a religious school. Science teacher literally said "carbon-14 dating is a lie from scientists that hate god". If I'd have read The Selfish Gene, or even A Brief History of Time as a kid, it'd have saved me a lot of time.
Those things you list seem relatively good, no? Making a microprocessor from gates while " just hooking up " sounds pretty near idyllic.
Maybe pedagogy recapitulates history of mathematics. "What is a function?" is kind of a wrong question, because "function" is just a word (what is it you need a "function" for?), but in a lot of early mathematics the idea tended to describe a sort of physical intuition, that a function was something like the shape that something physical (like a string under tension) - remember that in the early days mathematics was more a branch of physics than a discipline in its own right. In nature things tend to change smoothly - what we now call "analytic functions" - and you wouldn't ever have a sharp inflection point like there is for absolute value at zero.
A more modern notion of a function only really came about after the discovery of the fourier transform, where it turns out that functions like absolute value (and sillier things like the dirac delta) have a fourier transform, and, worse, some perfectly ordinary functions like sin have fourier transforms that come out as these weird things. Eventually (and, I suspect, partially because the tools of fourier analysis were so useful) people started treating "something that can be fourier transformed" almost as the definition of a function.
(The present set-theoretic definition of a function is even more recent; I would assume it comes from Russell/Hilbert/etc.'s efforts to give mathematics a formal foundation by expressing everything in terms of set theory)
Well it was introduced as "absolute value uses lines on each side. It means you drop the negative if there is one". I asked what the point of it was, cause it sounded sorta useless. Instead of saying "OK, well, how would you express distance, x1-x2?", she was just stuck.
I suppose that's what happens when you have general teachers that don't really know maths or science, don't really feel that it's interesting and offers amazing ways to look at the world. In fact, I'd be surprised if she actually knew beyond what she was teaching. It's not like middle grade teachers have to take advanced courses, and they do have a wide workload.
And now we've learned how an adversary might go about hiding an implant in a personal computer. With more sophisticated fab techniques this would be undetectable.
You probably could have done the project for real in less time than routing out the chip and soldering in the other chip but this is pretty sweet... For all of my EE projects I always did the extra stuff and as a result learned a ton.. The concept that engineering professors have to have stretch goals is really clever to motivate the overachievers.
It looks to me like he did do the project for real -- the write up mentions programming the PIC to emulate the other part. Based on that I would guess that you could pull out the hacked chip, and replace it with the 74LS193 and it would work as normal.
Something like http://amzn.com/B00005K86O will get you started and have a good manual with step by step instructions. They're a lot of fun! (Edit: I know it shows a kid in the picture, but its good adult fun too!)
Fun anecdote... the 7447 is a BCD to 7seg decoder not a binary/hex to 7seg, so no A thru F output when A thru F are input.
There are super expensive options like TIL311 and weird unobtanium that no on has ever heard of.
But you can use a PIC in a tight loop checking the 4 inputs, lookup a byte in a 16 byte table, and squirt out 7 bits of LED that display nice A thru F along with the digits.
It'll be enormously slower than TTL so you can't build latches that way but works fine for a nice slow asynchronous UI like a LED decoder / driver.
This has been redone a zillion times online. Its a good "first microcontroller project".
There is at least one ancient 12 or 16 series PIC thats pin compatible with a 7447 with the proper programming although its been 20 years.
I really respect and appreciate that this article addressed pitfalls where mistakes are common and disastrous. The step involving a router to clear a cavity: lots of mistakes were made, because it's hard to do that step. It takes courage to for an instructor to admit mistakes, and the pupil learns all the better from those admissions.
For all of the Instructable, Pinterest, and various other how-to articles on the internet, I believe we could all benefit from instructors being more forthcoming about pitfalls like the author(s) of this article.
106 comments
[ 3.0 ms ] story [ 79.8 ms ] threadThe number of things you could bury a little QFN MCU or similar in to play silly buggers with people is huge, especially if you have the luxury of them providing the 'support components'.
[1] https://www.youtube.com/user/Fredzislaw100
https://www.youtube.com/watch?v=PC55DPXSpr4
I've been watching this video about once a month since 2013 and I still have no idea what's going on!
It's a really neat hack, the guy must have amazing skills if he really has that much hardware tucked away inside the guts of an LED, you'd basically have to hollow out the whole thing, then put an SMD LED at the tip of the housing and use the remainder of the space for the circuitry.
Time will tell how much of this was right if and when he reveals how this trick was done.
https://plus.google.com/+HenrykGasperowicz/posts/dpwCPFDb3XM...
https://plus.google.com/+HenrykGasperowicz/posts/dpwCPFDb3XM...
https://plus.google.com/photos/+HenrykGasperowicz/albums/585...
So, indeed. Off on the details though, he's managed to sandwich the whole RF generator into that switch package. Mad props and soldering skills way beyond anything I could ever do.
https://www.youtube.com/watch?v=RkTvDjhImwo https://www.youtube.com/watch?v=lnlRwPgy3NA
One thing that still amazes people today is just how tiny a component can be, and yet provide so much functionality. I've been working with electronics for many years and the feeling still doesn't go away. The die of that microcontroller is even smaller than the package, and if he had access to the right equipment he could encapsulate one and make it basically identical to anyone who didn't look inside: http://www.bunniestudios.com/blog/?p=208
On a more serious note, this brings up thoughts of surveillance implants and backdoors: He could've made that "simulated" display driver record data into the EEPROM of the MCU, and play it back at a later time. An external EEPROM, if the internal one isn't big enough, isn't much bigger; you can get a 256KB EEPROM in a 2x1mm package.
http://www.keyghost.com/photos.htm
A well funded TLA could make these really hard to find.
The machines have far outlived their electronics.
This is the PM whose latest innovation is to setup a ministry for science. Or rather, re setup a ministry for science because he formed the first Australian Federal government in 50 years that had no science ministry.
Turns out, that's a bad idea. headslap
Make the discrete-component circuit to do this inside the logic gate.
(Especially hard as there are components that physically cannot be made small enough (large caps / inductors, etc))
That kind of small, non-microprogrammed machine is really common, but people don't build them out of discrete logic any more, or probably even design them by hand. They're written in VHDL or something, and synthesized into silicon or a gate array. They're how a programmable controller is implemented (something has to be under the bottom-most layer of microcode), but they're also used for lots of other little peripheral tasks.
I'd guess the student in the article will be formally taught about them in another quarter or two.
It is generally a sign of how good the faculty are at an institution based on how they respond to this sort of exceptionalism.
That said, I can see an argument that an RPN calculator "trivializes" the assignment compared to an infix calculator, especially if the latter was supposed to do order-of-operations.
But that experience did teach me a valuable lesson -- always follow the specifications as close as possible, don't try to innovate (unless working on your own projects). And, I've learned to spot (and explain) contradictory / intractable specifications up front.
I am personally doubly surprised as GP to find two people in a discussion about Computer Science at a college level that have not heard of RPN before. For what it's worth!
If you have taken an introduction to the Unix/Linux shell, you most probably saw the dc command.
I wanted to make it a proper GUI-style board with arrow key movement, randomised mines (the assignment tasked us with reading mine locations from stdin at the start), auto-expanding zeros, varying board sizes...so I did.
However, I knew the assignment would be marked on automated test results. I wanted to show off, but still pass the auto-tests. So I made it ask for game "mode" at the start, implementing both the requested behavior and my desired behavior. But if stdin wasn't a tty, it just did the requested behaviour without asking, thus foiling the tests.
The first lab featured a typing test app where you had to be able to type 40wpm or they made you drop the class. The app was a DOS app that a) made you type a certain bit of unchanging text every time for the test, and if you finished it type it again until you made a certain number of mistakes.
I wrote a borland basic TSR that pretended to be a keyboard, and typed in the corpus repeatedly.
The instructor apologized repeatedly for making me take the class, and looked utterly terrified of me for the rest of the semester after receiving my 300,000wpm test result.
I managed to implement it using only wires, with no extra gates at all. Apparently this surprised the instructors; the best known solution used two extra gates. They gave full marks to me, but also to the many students who used two gates. Given that the exam was designed to not have anyone answer everything correctly in the time allotted and was graded on a curve, I found this distasteful: I had devoted extra time to finding the optimal solution, at the expense of spending more time on other parts of the exam. The instructors were not sympathetic, and I got a B on the exam despite teaching them something new.
Sounds like a good lesson for someone graduating into the workforce ;)
I wrote up a pretty simple implementation and realized I had 50 minutes left to sit around, so I started refactoring it into classes and writing unit tests. I was pretty happy with the result, but I turned in both versions just in case I would get docked for not following the instructions exactly.
Got a B. Other people in the class who did a straight imperative style got As.
This is what computer science instruction is like at a for-profit college.
(Though at the age when you are most likely to be a student at a university it probably would seem better to conform and get a good grade)
Of course, there are ways around this (become famous in the industry, work somewhere else first and do well there, etc.). But most resumes, especially of new grads or people who have only been in the industry for a couple of years, will be run through this filter.
All depends on what you value. Personally, it seems like getting a high GPA isn't very difficult, so why not do well in school to keep your opportunities as open as possible? Doesn't seem worthwhile to do poorly for doing poorly's sake. That's just me though. Everyone has their own priorities.
Consider this they collectively employ ~ 100,000 people and have produced basically zero innovation in the last 3 years.
PS: Though they also have fairly wide side doors so many of their current employes have not gone thorough their screening process.
Nah, even dropouts are welcome at Google. A high GPA is a point in your favour, but not the only thing that matters. (At least once you have some experience. I don't really know how we hire fresh graduates. But as far as I can tell we take everyone who has a pulse and can program.)
I wouldn't ditch GPA for no reason, but avoiding a bad professor and getting a good one seems far more valuable overall.
I don't remember if I even mentioned which university I had attended and whether or not I had finished a degree. Nor did I make a single mention of what programming languages I know or any of the tedious stuff people tend to use for bulking up their CV.
(I was told that Jeff Dean, who was one of my interviewers, said that he couldn't wait to meet someone who writes software, races cars, welds and has just finished a course in logging timber using an good old-fashioned chainsaw)
Who you look up to and learn from matters a lot.
If you want a life in academia, you need to conform and be obedient. At least until you have established yourself as sufficiently brilliant to be able to behave more rationally. Personally I don't really understand why one would want a career in academia, but hey, for some people merit badges and titles are really important and I'm not judging.
When you are young you think getting a degree and getting good grades matters more than it really does. It matters for those initial few years of your career, but once that phase is over it doesn't matter. And it matters more if you are unremarkable.
What really matters is the people you get to know at university. That's a really big deal because you will run into these people for decades to come. And you will meet people you can learn from, with whom you can collaborate etc.
As for companies like Google, Microsoft etc: there's myth and then there is reality. If you come in the front door, your alma mater and GPA will matter if you are a new graduate. If you spent your career worrying about becoming good at what you do and to collaborate with other people who are good at what they do, you won't be "coming in the front door".
I never finished a degree, but I did get a job at Google. And yahoo before that. And so on.
I got in the door because they knew I worked on things that were very relevant to them and that I probably wasn't a total fuckup. I still had to make it through the interviews though. And I did.
Of course, it should be mentioned that the hiring process at Google at the time put undue emphasis on GPA and what your alma mater was. I saw lots of people get rejected due to the university they went to or even really minor blips in their academic record. I found this disturbing. At the time Google had lots of data showing that certain metrics are not predictors of later performance. Among them GPA and alma mater. But they needed some way of cutting the sheer influx of applications down to a managable size.
If I had focused on getting a degree rather than work on interesting problems I doubt I would have gotten a job at Google. I would have been compared to a much, much larger population of unknowns and I doubt that I would have managed to stand out. Are you aware of how many people out there have good grades and good looking CVs? I do, because as an engineer at Google at the time I spent a lot of my time reading applications and interviewing candidates.
What is important is who you become. You want to find something you love to do and something you have a talent for, and then become good at that.
I dropped out cause my teachers were atrocious. My algebra teacher couldn't explain why absolute value was a function, just that it was and we must learn it, period. Another teacher said "computers just use binary". When I pointed out I often saw hex, instead of pointing out why base 16 is a good fit for writing binary numbers, she just stammered that computers were just binary. Still my fault for giving up, but I had enough reason at the time.
All of the borderline-useless hazing you might have missed at a "top 50" school (one of the UC's):
Those things you list seem relatively good, no? Making a microprocessor from gates while " just hooking up " sounds pretty near idyllic.
A more modern notion of a function only really came about after the discovery of the fourier transform, where it turns out that functions like absolute value (and sillier things like the dirac delta) have a fourier transform, and, worse, some perfectly ordinary functions like sin have fourier transforms that come out as these weird things. Eventually (and, I suspect, partially because the tools of fourier analysis were so useful) people started treating "something that can be fourier transformed" almost as the definition of a function.
(The present set-theoretic definition of a function is even more recent; I would assume it comes from Russell/Hilbert/etc.'s efforts to give mathematics a formal foundation by expressing everything in terms of set theory)
I suppose that's what happens when you have general teachers that don't really know maths or science, don't really feel that it's interesting and offers amazing ways to look at the world. In fact, I'd be surprised if she actually knew beyond what she was teaching. It's not like middle grade teachers have to take advanced courses, and they do have a wide workload.
I'm familiar with the concept of getting a swirlie (head flushed), but what in the world is getting your balls greased?
They're held down while someone else grabs a wad of black, filthy engine grease. Then they shove said grease up the guys shorts and onto his balls
...It's really hard to get off, man
There are super expensive options like TIL311 and weird unobtanium that no on has ever heard of.
But you can use a PIC in a tight loop checking the 4 inputs, lookup a byte in a 16 byte table, and squirt out 7 bits of LED that display nice A thru F along with the digits.
It'll be enormously slower than TTL so you can't build latches that way but works fine for a nice slow asynchronous UI like a LED decoder / driver.
This has been redone a zillion times online. Its a good "first microcontroller project".
There is at least one ancient 12 or 16 series PIC thats pin compatible with a 7447 with the proper programming although its been 20 years.
I really respect and appreciate that this article addressed pitfalls where mistakes are common and disastrous. The step involving a router to clear a cavity: lots of mistakes were made, because it's hard to do that step. It takes courage to for an instructor to admit mistakes, and the pupil learns all the better from those admissions.
For all of the Instructable, Pinterest, and various other how-to articles on the internet, I believe we could all benefit from instructors being more forthcoming about pitfalls like the author(s) of this article.