3,638 karma · joined August 24, 2009
I've eventually come around to flipping this idea on its head, though. If I design not just some kind of product or solution, but a whole process, starting basically with how I want to run my life and then drilling into specific details from there, the technical knowledge stands on more even ground with other forms of knowledge, and with seeing life itself in a more precious sense.
With that mindset, good scheduling of every day as an end in itself grows vastly more important, and abstraction-for-its-own-sake falls away: All programming problems start by assuming they are solved first with "code that looks like breadboard wiring" [0] and then working up the abstraction ladder from there. Automating the technical parts of the solution won't guarantee that it's right in any other way, but it will ease the pain of changing the specification. Acknowledging that the problem is messy, that breadboard coding is messy, and that I won't know how to solve everything immediately and cannot depend on a silver bullet, all constitute crucial first steps.
Now I always look for really basic groundwork to be laid out early on - typically, transforming the breadboard code into something that uses a new data structure, or generating the code flow from a stack or a list or a tree - and that no shortcut is possible without compromising the ability of a potential future abstraction - that it just takes a lot of layers to get where I want to go. Breadboard code is assumed to be ideal until demonstrated otherwise, while "x in y lines" hype is to be avoided under the assumption that the solution is brittle and over-modeled towards the demo code. I cannot assume that my valuable production code will need x or work in y lines. I don't abstain from adding dependencies, but I will preference towards copy-paste-own when I find a reason to reuse code.
[0] http://www.instructables.com/id/How-to-Build-an-8-Bit-Comput...
Edit: and don't make decisions "when you feel like it", then you fall off schedule. Plan a lot in advance and then try to stick to how you planned the day.
What touchscreen programming needs is a really polished touchscreen UI, and that challenges the whole assumption of a text editor being ergonomically optimal.
Demand for new data models is insatiable and for each one, a software ecosystem can develop around a similar degree of automation, tuned towards the specific domain. It's a very, very black-boxed future.
It is the changes in life that make it lively, and so to live I should strive to maintain some rate of change in myself, so that I never die while still alive.
What Riot is using is a form of integration test where manual user input is emulated to produce a result data set. What you aren't seeing in the test code is "everything else" that was needed to set up a running game state. This technique makes it easy for QA to jump in and see what's happening visually when a failure occurs, eliminating the need to slave away at a checklist.
Yesterday I finally got fed up with my cheap Android phone and flashed it with a modded rom. It took probably 8 hours of reading and downloading and testing and waiting to get it into a working state, because there are so many points along the chain where a little misconfiguration breaks the process, and the people making mods often have working software with poor documentation and inadequate testing.
In the end, there just is never enough time to go around to make it perfect for everyone in every use case. You have to choose carefully when you want to fight the battle - and you can expect to lose, a lot of the time.
https://www.youtube.com/watch?v=eY_YsoR11d8
You might notice that some scenes show more colors onscreen than contemporaries like the C64 - this is all because of the display list interrupt techniques Crawford talks about, combined with clever overlaying of the player/missile sprite system. (The weird term for these hardware sprites is because it's built on the legacy of the 2600's system, which itself was built around the needs of the pack-in games: two players, two projectiles, one ball.)
The A8 series was limited in lifespan in the USA for a number of reasons: poor documentation, platform fragmentation, and price competition. It shipped with very little documentation on how it worked, leaving developers starved for resources for several years(Chris Crawford himself contributed to the unofficial bible, "De Re Atari"). There were the original 8k-upgradeable-to-48k 400/800 models and the newer XL/XE models, which shipped with 64k standard, and additionally, a change partway through the 400 and 800's life to an upgraded graphics chip; although most old software would run on the new machines, the C64 was more straightforward to target and to program, and it led the way in price-cutting the home computer market, which gave it a huge lead in market share. The later life of the A8 was entirely in European markets.
In terms of what the two machines can do when pushed to the limit, though, there's plenty of room for comparison.
The graph is useful for note-taking and exploration, certainly, but it produces a design constraint that isn't always situationally appropriate. Binding things into a narrative can add a lot of value.
Skilled debate in a venue like Reddit requires an understanding of esotericism, of not simply laying out facts and implications based on your own assumptions, but presenting a fascinating puzzle to the reader that leads them to challenge their own assumptions without being challenged by anyone in particular. When successful, such a puzzle glides beneath the surface tropes of the discussion, presenting the perspective without provoking hostilities. The karma system does not reward this very well, as those carefully crafted puzzles tend to get middling scores, while simple agreement, rationalization arguments(why your assumptions are right and the critics are wrong, from Someone Smart), and congratulatory joking trigger the instant upvote response. But putting in the effort into that dialogue is essential to engaging the community.
An internal, interpreted DSL can be written to do similar, but I think the point of this tool is to ease the process of writing the DSL itself, and to make the resulting runtime efficient.
Basically, the console brand, to MS and Sony, is ultimately a tool that can be used to build a potentially bigger empire. Share and revenue prospects come before whether the experience makes sense, and in the echo chambers of such large companies, it's easy to fashion a story where every consumer is hungry for all of this stuff and wants a single source to deliver it.
Kids don't really seem to care too much about a high fidelity experience. Everything is new and different to them to begin with, so that stuff is just window dressing.
What you get from autonomous vehicles is improved flexibility, and that improves all transit modes while only slightly changing the dynamics that make rail vs. bus vs. car interesting.
I do make use of mind-mapping now, though. It's handy for dissecting a big linear text into branches and partitions and not overlooking parts when I try to review.
In apps that need to scale, designing data to be efficiently allocated and freed becomes crucial and the reference by default strategy really falls down.
http://i.imgur.com/sD5IAXP.png
The thread sync is pretty inefficient. It will need to incorporate some "tricky" techniques like what you've described to go faster.
Prime examples of how public pressures escalated the cost of the system are the Berkeley subway and the Ashby Station. After originally approving a combination aerial and subway line through Berkeley, that city later came to oppose the plan in favor of a subway-only line, which was much more expensive. The new plan necessitated redesign of the Ashby Station from an aerial to a subway facility. Extensive controversy and hearings ensued for the next 2 1/2 years, finally to be resolved by Berkeley residents voting to tax themselves additionally to finance the changes they wanted. Next, a Berkeley City Councilman filed a successful suit to redesign the Ashby Station, yet a second time, asserting the use of skylights in the original plans was not a true subway design. [0]
And indeed, the "nicer" stops on BART tend to be underground, while the "inexpensive" ones are mostly aerial alignments adjacent to freeways. (See the history around "freeway revolts" and you get a similar picture of class/race division.)
But places that are a bit outlying and don't have a big job market, like much of Marin, sit in a nebulous zone in between: they aren't really "in demand" right now, and that gives the community leverage to stomp out anything that would change that.
But AR, AR stands a chance. It is not hugely different to our existing uses of media technology - one more screen, in a different location, supplementing the existing experience. And it has good cross-over into VR for the remaining experiences that do work well in immersion mode. That might buy VR time to develop gradually for a few decades, like silent film. There are some things that are worth exploring with VR, but the tech really needs to be in mass adoption first.
Compare with a boss walking up on the floor and bellowing, "so, why is it late???" Now the whole office is cued in to maneuver and deflect blame, not just that one time but throughout the day, every day, until they leave the job entirely.
Really good leadership understands how to maintain the atmosphere for the situation. They can turn up the heat but do so judiciously. They have to do it with care precisely because the individuals tend to be a "bag of emotions", easily swung off track with careless dialogue.
The Reddit thread is cautionary towards a neutral business situation where the goals are simply to maintain trust, gather basic information, and assign tasks and plans. Confrontation in that instance is quite destructive.
As such it's incredibly common to end up with bugs from assigning to "x, y, y" and not "x, y, z" etc. Sometimes a clever compiler will warn you that you have done something odd, other times you'll be left to discover the runtime error.