The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
But it is the case that sometimes I find myself too lazy to actually get up and find a piece of paper and I try to just bull my way through a problem, where it would probably save me some time if I did a bit of drawing. I find this particularly the case in recursive algorithms where I can get myself lost in my head in terms of keeping up with what the info is at each recursion, and dealing with special case 'prime the pump' issues on the initial entry.
Also, I will commonly 'write' the thing in the header comments, and refine that a number of times before actually writing any code, because having to write out what I think that I think that I'm thinking makes me actually think what I think I'm thinking. But, sometimes that backfires because I miss things that show up in the practical application that my 'in a perfect world' comments version didn't get me to, and that changes the nature of the thing substantially in terms of actual implementation.
Take the screen design for Apple’s phones. The designers at Apple apparently believe that text is ugly, so it should either be eliminated entirely or made as invisible as possible. Bruce Tognazzini and I, both former employees of Apple, wrote a long article on Apple’s usability sins ,which has been read by hundreds of thousands of people. Once Apple products could be used without ever reading a manual. Today, Apple’s products violate all the fundamental rules of design for understanding and usability, many of which Tognazzini and I had helped develop. As a result, even a manual is not enough: all the arbitrary gestures that control tablets, phones, and computers have to be memorized. Everything has to be memorized.
Everyone needs better design
Do not think that thoughtful design is just for the elderly, or the sick, or the disabled. In the field of design, this is called “inclusive design” for a reason: It helps everyone.
Curb cuts were meant to help people who had trouble walking, but it helps anyone wheeling things: carts, baby carriages, suitcases. Closed captions are used in noisy bars. As Kat Holmes points out in her book Mismatch, all of us are disabled now and then. Some of us have permanent disabilities, but all of us have suffered from situational and temporary problems. When outside in the sun, the text message that just arrived is unreadable: wouldn’t it be nice if the display, whether cellphone, watch, or tablet, could switch to large, higher contrast lettering? Are elderly people handicapped? Maybe, but so is a young, athletic parent while carrying a baby on one arm and a bag of groceries in the other (and perhaps trying to open their car door). Ride-share bicycles and scooters cannot be used by people who need to carry bulky packages. Everyone has difficulty hearing people in noisy environments. Noise-canceling headphones are for everyone, not just the elderly. Almost anything that will help the elderly population will end up helping everyone.
When I was first starting with WPF, I heard about Expression Blend. I downloaded and installed it. The app was completely unusable. Monochrome icons and gray text on a darker gray background. I couldn't see anything in the app. Switching themes did no good, as they all had the same low contrast "oh, don't have anything distract from the work" design. I complained on Microsoft Connect about the app's usability. They closed and deleted my issue immediately with no response.
They closed and deleted my issue immediately with no response.
That's interesting because that's the 7th level of pain/annoyance that these kinds of frustrating issues create: you can't even report the issue because they just close them since it cannot be true that their design is terrible.
I don't bother reporting issues to Microsoft any longer. Every time I have they've either responded with a form response ("did you try rebooting?" ), or closed the issue with no comment. My experience has been that they treat most developers with nothing but contempt.
I agree with you. Not sure why they have that attitude about it but that's the same experience I've had in reporting issues to them.
I've reported a couple of real bugs with Visual Studio a couple of times and provided details and screen shots so they can reproduce and they just post back, "not a bug" and close or even delete the issue. The one I had reported was reported by a large number of users and they closed it anyways.
The fun thing about problems like this is to figure out what makes it easy for you. We are really good at categorizing / grouping recursively without thinking, and computers have to be programmed to do this stuff.
So, why is this easy for the brain to figure out? How do you capture that ease in an algorithm?
I've given up on LALR parsing for now because my tables are off - for some grammars - and i can't figure out why.
So instead what I'm doing is improving my LL(1) parser with automatic grammar refactoring so you can use grammars that are not intrinsically LL(1) - LL(1) being very limiting in terms of expressive power.
And this is part of the process. The full process is explained here at the link below, fortunately I got accustomed to understanding heavy Indian accents and Indian-English vernacular while at Microsoft. =)