Microcontrollers Not Allowed – Trolling a college instructor
ultrakeet.com.au
ultrakeet.com.au
"Something is misbehaving, this is annoying!"
vs. "This is literally impossible. How is this happening!?"https://www.youtube.com/watch?v=RkTvDjhImwo https://www.youtube.com/watch?v=lnlRwPgy3NA
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.
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.
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'.
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.
(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):
- 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)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.
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.
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