552 karma · joined September 7, 2016
Had google glass not stored video and processed everything in real-time it could have avoided the "glasshole" stigma.
People would have likely mocked it for not being able to capture video, something they could have added in later in "response to demand".
The world doesn't need more omni-present recording devices, but solid AR would be a net benefit.
Consider the following pseudo code:
i <- 0;
total <- 0;
while(i < 10) {
total <- total + i
i <- i + 1 }
output total
This program could be done using a range of different instructions.At the most naive it would actually use registers and jump and compare instructions to do the loop.
A different approach would do "loop unrolling" to avoid any jump instructions, instead applying sequentially the addition and comparisons.
The most aggressive approach would simply replace this whole program with
output 45
Without understanding the architecture and program preparation, what hope is there to map functionality to underlying behaviour at the transistor level?It's based off the premise that content and styling are independent. It works very well when that is true. Often they are not.
If I'm designing a "date-picker" component, it will be completely broken without the corresponding styling. There can be no separation of content and style, the content does not make sense without the styling to produce the actual final output.
Such components require style definitions to function.
However, people may be primed for longer delays still seeming instant. e.g. Smartphones for many years had a built-in 300ms delay on any click event, and even without that event typically still have delays on many 'instant' actions.
So while the delay will be registered as being present, it may not be registered as "this site is slow" but "it's just a natural delay".
[0] https://psychology.stackexchange.com/questions/1664/what-is-...
Understand that previous developers might not know what a DOM is have likely written ad-hoc jquery snippets, included 3 different versions of jquery-ui until they happened across the right combinations of versions to get their plugins to play and will have a mentality of "it was working".
Given that, here's some advise on how to stay sane:
1. Read and "Digest Working Effectively with Legacy Code" but accept you'll likely not be empowered to actually implement the changes.
2. Understand you'll have a grace period of ~6 months where you'll be far more empowered to make changes and get suggestions pushed through, after which you'll likely find yourself worn down by the system and more accepting of the status-quo. Leverage this time if you can.
3. Try to identify what caused the product to get to the state it is so it can be avoided for future products. If it's something you're not empowered to change such as "bad hiring policy" try to work out how you can spot that in future interviews.
4. Be pro-active in looking for bugs, particularly security flaws. Finding an IDOR which lets you get cross-account data is usually fairly straightforward in these kinds of environments. Doing so gets you noticed so you're not just another cog in the system and can provide real value. Be careful not to put others' out too much while doing this. It sounds like you only work on the front-end but even what appears to be front-end can have security implications such as template-injection.
5. Draw a line in the sand. Be entire accepting in legacy code but if someone is working on a new part of the product or is fixing a bug in legacy code be absolutely ruthless in what you'll let passed in code review. This may not do you any favours socially but a reputation for harsh code reviews isn't all bad. For one thing you'll have to do fewer code reviews.
6. Don't bite off more than you can chew. Treat it like a giant knot and don't be tempted to pull at threads unless absolutely necessary. Instead wait until given strong reasons for refactoring.
Edit: formatting, because HN doesn't do markdown.
For example "Human resource machine" is entirely visual but if you happen to click 'export' you get a very basic assembly language style output. If you never clicked export you wouldn't even realise you were "programming", you were just solving the problems on screen. The game does at time explain the analogies used. If you prod the people they'll describe linked lists but such understanding isn't required to progress.
Moving across the spectrum a little there are games like TIS-100 and Shenzhen I/O which do involve programming but with very small instruction sets and graphical debugging and feedback.
These aren't aimed at children so are more complex than would be suitable for children but what I'm trying to get across is that they don't specifically teach programming. You won't come out of it knowing python or C. You won't know about stacks or function calls. But they do teach problem solving and the run/explode/debug loop of getting an instruction set to work on different sets of data.
By being games they gameify the process of wanting to reach acheivements while also solving the "what do I build?" aspect of more freeform/creative programming learning which can often be a dead-end without a sense of aiming toward a goal.
I think a Human Resources Machine style game aimed at a younger audience could be greatly impactful on teaching a programming mindset.