Stuff like this drives the push for things like vouchers. I’m lucky to be able to send my kids to a good private school. We chose it after a tour and discussion with the headmaster about exactly how it operates.
The teachers as a group research and plan curriculum. They coordinate across grade levels and determine how to roll out changes in the most effective way possible for students and parents as well. They rolled out common core math over 5 years with great success well before it was forced on public schools.
In other words, they let the people who have studied to be professional educators make decisions about the best way to…educate. There’s no school board, no state level involvement, no federal disruption every time there’s an election.
And it’s fantastic. I see this work and my first instinct is that EVERYONE should have an option like this, not just the people who can afford it.
For that reason, I support some type of voucher program that could achieve these goals. Yet for some reason in the US this is a political hot button, which doesn’t make any sense to me. Currently, the only people who have all the options are people who can afford them out of pocket. Everybody else is stuck with either public school or home school and home school is on the rise.
I'm currently an undergraduate math student, and had similar frustration, but I reached a different solution. I built a cheap chalkboard in my room (hardboard panel that I painted with chalkboard paint – $15 total since I used a trash-picked board). For scanning, I mounted a Raspberry Pi with a camera, and did some basic OpenCV image processing to extract the image. All told, it took a weekend to build and set up, and I have used it every day since.
This same setup could easily be mounted at a different angle for scanning papers laid flat on a desk, and would work with nearly no modification.
The image processing pipeline for me was:
- Gaussian blur
- Brightness/color thresholding
- Finding and simplifying the contours
- Computing the convex hull for each contour (in case the board is partially occluded)
- Using a heuristic to pick the contour most likely to be the chalkboard
- Extracting corners from the contour and doing a "getPerspectiveTransform" followed by "warpPerspective"
- Sharpen the image (subtract Gaussian blurred version)
- Return the image via Flask server so I can pull scans onto my phone or computer over LAN
The same pipeline is reused for a live feed (MJPEG) that I can split-screen with my webcam (via OBS) for collaboratively working on homework problems via video call. The live stream is accessed via a different Flask route that calls many of the same helper functions.
The code is not yet publicly released, but was very straightforward to write; each of the steps mentioned above is pretty much one OpenCV function call. Here is a sample scan and a demo video:
Maybe they don't care about privacy because they're defining it as secrets that people have. Snowden's description of privacy is much more powerful:
"And if we actually think about it, it doesn’t make sense. Because privacy isn’t about something to hide. Privacy is about something to protect. That’s who you are. That's what you believe in. Privacy is the right to a self. Privacy is what gives you the ability to share with the world who you are on your own terms. For them to understand what you’re trying to be and to protect for yourself the parts of you you’re not sure about, that you’re still experimenting with.
"If we don’t have privacy, what we’re losing is the ability to make mistakes, we’re losing the ability to be ourselves. Privacy is the fountainhead of all other rights. Freedom of speech doesn’t have a lot of meaning if you can’t have a quiet space, a space within yourself, your mind, your community, your friends, your family, to decide what it is you actually want to say.
"Freedom of religion doesn’t mean that much if you can’t figure out what you actually believe without being influenced by the criticisms of outside direction and peer pressure. And it goes on and on.
"Privacy is baked into our language, our core concepts of government and self in every way. It’s why we call it 'private property.' Without privacy you don’t have anything for yourself."
What an unimaginable horror! You can't change a single line of code in the product without breaking 1000s of existing tests. Generations of programmers have worked on that code under difficult deadlines and filled the code with all kinds of crap.
Very complex pieces of logic, memory management, context switching, etc. are all held together with thousands of flags. The whole code is ridden with mysterious macros that one cannot decipher without picking a notebook and expanding relevant pats of the macros by hand. It can take a day to two days to really understand what a macro does.
Sometimes one needs to understand the values and the effects of 20 different flag to predict how the code would behave in different situations. Sometimes 100s too! I am not exaggerating.
The only reason why this product is still surviving and still works is due to literally millions of tests!
Here is how the life of an Oracle Database developer is:
- Start working on a new bug.
- Spend two weeks trying to understand the 20 different flags that interact in mysterious ways to cause this bag.
- Add one more flag to handle the new special scenario. Add a few more lines of code that checks this flag and works around the problematic situation and avoids the bug.
- Submit the changes to a test farm consisting of about 100 to 200 servers that would compile the code, build a new Oracle DB, and run the millions of tests in a distributed fashion.
- Go home. Come the next day and work on something else. The tests can take 20 hours to 30 hours to complete.
- Go home. Come the next day and check your farm test results. On a good day, there would be about 100 failing tests. On a bad day, there would be about 1000 failing tests. Pick some of these tests randomly and try to understand what went wrong with your assumptions. Maybe there are some 10 more flags to consider to truly understand the nature of the bug.
- Add a few more flags in an attempt to fix the issue. Submit the changes again for testing. Wait another 20 to 30 hours.
- Rinse and repeat for another two weeks until you get the mysterious incantation of the combination of flags right.
- Finally one fine day you would succeed with 0 tests failing.
- Add a hundred more tests for your new change to ensure that the next developer who has the misfortune of touching this new piece of code never ends up breaking your fix.
- Submit the work for one final round of testing. Then submit it for review. The review itself may take another 2 weeks to 2 months. So now move on to the next bug to work on.
- After 2 weeks to 2 months, when everything is complete, the code would be finally merged into the main branch.
The above is a non-exaggerated description of the life of a programmer in Oracle fixing a bug. Now imagine what horror it is going to be to develop a new feature. It takes 6 months to a year (sometimes two years!) to develop a single small feature (say something like adding a new mode of authentication like support for AD authentication).
The fact that this product even works is nothing short of a miracle!
I don't work for Oracle anymore. Will never work for Oracle again!
Magnet link: magnet:?xt=urn:btih:VUPJHINO4KAWLWVLEKKFWKJVF3DVDDDR
Torrent download: http://www.seedpeer.me/download/linkedin_hashes/ad1e93a1aee2...