Wikipedia:Reference desk/Archives/Computing/2015 July 20

= July 20 =

non-obvious GUI elements
I have always understood that one of the cornerstones of GUI design philosophy was that it was always supposed to be obvious -- visually obvious -- what your choices were. In his seminal book The Design of Everyday Things, Don Norman talks about the duality between "knowledge in the head" versus "knowledge in the world". The Unix command line epitomizes a system where knowledge in the head is paramount -- you can do almost anything, but you have to somehow know the name of the command to type. A GUI, on the other hand, shows you all your choices -- you don't necessarily have to know anything. You just have to find the thing to click on.

More and more, however, I'm seeing graphical applications and web pages that seem to go out of their way to hide your options. Icons are getting smaller, more generic, and less obvious; more and more you have to hover over them so that the mouseover text will tell you what they do. What's even more startling (but also increasingly common) is when there are active elements which don't even appear until they're hovered over. I've noticed this especially with Ubuntu Linux: the menu bar in most windows is blank until you hover over it, at which point the menus magically appear. Most windows don't even have scroll bars, until you hover over the right edge of the window at which point this weird little scroll tool appears. But if you're used to seeing your options, or if you haven't discovered the right spot to hover over, some/all of your options are just about as obscure as if they were Unix commands you hadn't learned the names of yet. I'm reminded of graphical video games where half of the gameplay is just discovering which elements of a scene can be manipulated to do something. (But it's not just Ubuntu that does this; I'm starting to see the same sort of thing even on the Mac.)

So my questions are:
 * 1) Does this pattern have a name,
 * 2) What are the arguments in favor of it, and
 * 3) How do its proponents defend against the criticism that it tends to go against the GUI philosophy of transparent approachability for beginning or casual users?

—Steve Summit (talk) 00:32, 20 July 2015 (UTC)


 * You mention Ubuntu's HUD display on Unity. The apparent goal is to hide stuff you don't use a lot and make stuff you do use more prominent. I've read your posts here and I'm sure you just had a shudder as you remembered how much of a failure that experiment was with Microsoft back in the 90's. Ubuntu development is driven by kids who have no concept of the past, so they repeatedly repeat mistakes others have made in an attempt to be "cool." As for the hidden menu thing, that is actually separate. Apple has a long history of abusing its blindly devoted followers. The rule is form before function. Having a display with no interactivity looks very pretty. It isn't important that the followers can use it. Ubuntu, in another attempt to be cool, copies Apple in what they call a minimalist design. So, it appears to me that you are looking at the convergence of two design styles: HUD (which I feel is a very improper name for that design) and minimalist. They argue that HUD makes computers easier to use by adapting to what you do. They argue that a minimalist design removes clutter so you can focus on the content easier. I believe that history has already proven that the HUD design does not make computers easier to use. It makes them harder to use and troubleshoot. I prefer the minimalist design to cluttered messes with four or five buttons and menus for every function - do you really need a print button, a print menu item, a print shortcut, and a "print this" link all displayed at the same time? However, it is important to know what CAN be done before you hide it. History has also shown that nobody will read the manual to learn what is possible. 209.149.113.45 (talk) 12:35, 20 July 2015 (UTC)
 * Heh. In ~1990 my dad asked how I learned some feature in MS Word 4 (such as the caret as an escape in search for certain special characters). "I cheated: I read the manual." He expressed mock outrage. —Tamfang (talk) 08:35, 25 July 2015 (UTC)


 * One term I hear in design contexts is the "discoverability" of the design. Our article is more about information science and metadata concerns, but it's also applied to user interfaces - see e.g. this article here . SemanticMantis (talk) 14:06, 20 July 2015 (UTC)
 * Other possibly relevant terms are skeuomorphism (making UI elements look like real-life objects), affordance (making UI elements look as if they do something) and flat design (what it says). AndrewWTaylor (talk) 15:40, 20 July 2015 (UTC)


 * As computers get more complicated, more and more features and functions are added, and they cannot be displayed all at once or else GUI clutter would occur. The solution is to hide things away or put them in submenus so you'll see them only when you need them. It's unintuitive and clunky but it's better than the alternative.  Konveyor   Belt   19:18, 20 July 2015 (UTC)


 * Of course, we are basing this on the premise that computers are getting more complicated. That is an opinion, not a fact. It could very well be that computers are less complicated, but users are less capable to comprehend the computer interface. 209.149.113.45 (talk) 19:27, 20 July 2015 (UTC)
 * On the whole, over a history of decades, computers are definitely getting more complicated. The new Mac may look easier to use than a command-line program, but it is also way more complex in terms of what it can do.  Konveyor   Belt   20:27, 22 July 2015 (UTC)

Why did mathematical notation converge, but programming notation diverge
For example, math has one symbol for equal, =, but programing languages came to different symbols for assignment, sometimes it's =, sometimes :=. Or different ways of marking a block of code.--Scicurious (talk) 01:26, 20 July 2015 (UTC)
 * In mathematics, the equals sign usually means equality, not assignment. Assignment is represented in different ways (for example, you can put an uppercase Delta over the equals sign, or you can use := like Pascal, or you can just use the equals sign and let context take care of it).  So I'm not sure your premise really holds. --Trovatore (talk) 01:38, 20 July 2015 (UTC)
 * The basic reason is that mathematics is meant to be a single international language, but that any particular programming language is meant to be a single language. There isn't any reason why different programming languages should use the same symbols.  Another reason is that, in the earlier days of programming, the language designer was limited by the keyboard.  The 029 card punch, for instance, didn't have 100 symbols.  Also, different languages were designed for different purposes, and with different amounts of overloading.  Basically, there isn't a reason why different programming languages should use the same symbols.  Robert McClenon (talk) 01:45, 20 July 2015 (UTC)
 * Um, Robert, you seem to be repeating the OP's premise, which I have already refuted. --Trovatore (talk) 01:46, 20 July 2015 (UTC)
 * What premise do you claim to have refuted? The OP is stating that in Pascal, := is assignment.  In FORTRAN, = is assignment.  So what are you saying has been refuted?  Robert McClenon (talk) 02:15, 20 July 2015 (UTC)
 * The one about mathematical notation "converging". As I said, the equals sign in mathematics usually means equality, not assignment, and assignment is represented in different ways.  (A complication is whether you consider "equality by definition" to be assignment &mdash; I generally think of it as assignment, but there could be arguments both ways.) --Trovatore (talk) 02:19, 20 July 2015 (UTC)
 * Trovatore is refuting a claim that I did not make. Robert McClenon is answering the question.
 * The concept of equality in math is represented by "=", and this symbol has spread across all mathematics. You don't see mathematicians around using • ¶ or § to represent equality. It does not matter whether the symbol also represents other concepts. In the same way 1/2 and 3+4 have spread as the canonical forms, instead of / 1 2 or + 3 4. In computer languages there has not been such simplification (maybe it's on its way). In programming you find different symbols to express the same concepts, which McClenon's answer above does not see as a problem. However, I see it as a source of confusion, since we don't stick with a computer languages forever. Dealing with the curious design decisions of many is quite tiresome. --Scicurious (talk) 03:07, 20 July 2015 (UTC)
 * Well, then you expressed yourself badly. Assignment and equality are completely different.  If you had expressed your question in terms of equality (for example, == in C versus just = in Pascal) then it might have made more sense. --Trovatore (talk) 05:19, 20 July 2015 (UTC)
 * OK, sorry, that was more aggressive than it needed to be. Just the same, it was confusing to compare notations for assignment in programming languages with notations for equality in math, totally different things. --Trovatore (talk) 05:26, 20 July 2015 (UTC)
 * I agree that the differences in notation are a factor that may complicate learning another programming language. However, after learning several programming languages, a programmer learns what sorts of differences and similarities there are in programming languages.  (Similarly, if one has learned multiple human languages, one learns what features they share and how they differ.)  As to different ways of marking blocks of code, some languages, like FORTRAN, don't have blocks of code in the C sense.  Robert McClenon (talk) 03:33, 20 July 2015 (UTC)
 * I think our OP assumes mathematical notation is "converged" because our OP has not been reading a wide variety of published mathematical literature. There are immense differences in mathematical notation conventions: even simple expressions like addition can be notated in totally different fashions.  Sometimes, different notation represents some detail or nuance; other times, it is a purely arbitrary editorial convention.
 * Here's a great book: Scheinerman's Mathematical Notation. It focuses on the notation you will probably see in undergraduate mathematics for science and engineering.  As the author notes, it is impossible to completely describe all mathematical notation: there are just too many variations.
 * Nimur (talk) 09:53, 20 July 2015 (UTC)


 * Another reason, that I did not see mentioned so far, is parsing. Humans parse mathematical expressions. As has been demonstrated repeatedly, humans don't follow logical or even sensible steps when parsing things. Some start at the end. Some start at the beginning. Some break things up into chunks. Some drown in anything more complex than three items. Overall, math has been designed for humans to learn and understand. Programming languages are parsed by computers. They follow a very discrete algorithm. If a new character is required to mean something, that new character must not break existing rules that the parser has put in place. So, if = already has a meaning to the computer parser, it will require rewriting the parser or using a new character, such as :=. That is how you end up with == and ===. Many times, the goal is to make something new for the parser while easy for programmers to type. 209.149.113.45 (talk) 12:16, 20 July 2015 (UTC)


 * One obvious answer is: give it a few centuries. I'll note that C's conventions have been taken up by younger languages, unlike those of Fortran and Pascal. —Tamfang (talk) 08:40, 25 July 2015 (UTC)

How to make website
Thus far, all the websites I've created have been either developed through wordpress/drupal software, or downloaded whole off the creator's site and posted to my server. Trying to create a new website now, different to what currently exists, though largely based off chatroom style sites, I find myself unable to do either of these. Instead, I'd like to take this opportunity to learn how to actually work on making a new website for myself, rather than always relying on others. Trouble is, the only language I have any real familiarity with is C, which I suspect is not appropriate here, but I'm not sure what is, or where would be best to go to learn to use it effectively. Any thoughts?

86.24.139.55 (talk) 17:02, 20 July 2015 (UTC)


 * There is a lot of information on the web about making websites. If you want to make one "from scratch", you either need to learn HTML or use a HTML editor. WegianWarrior (talk) 17:14, 20 July 2015 (UTC)


 * HTML, that's the one, couldn't remember what it was called. I had a search online but only found a couple of halfway decent guides to the sort of site I'm aiming for, and both had lots of comments posted saying the instructions given didn't work. 86.24.139.55 (talk) 17:17, 20 July 2015 (UTC)


 * If you like this type of chat, you could create a wiki. StuRat (talk) 17:33, 20 July 2015 (UTC)


 * For modern websites, learn HTML, CSS, and JavaScript. Then, if you want to get more complex with server-side programming, pick one of the common server-side languages, such as PHP or Ruby. If you do that, you will likely want a database. MySQL is a very common choice. Finally, you will likely realize that you need professional looking graphics. Most people can't afford Photoshop and refuse to download a virus-laden "Free" copy of it. Gimp is a free alternative that, in my experience, is more difficult to learn than everything else combined. 209.149.113.45 (talk) 18:32, 20 July 2015 (UTC)


 * I'd been reading over the articles for CSS, PHP and MySQL, from what I've picked up before I thought those were involved somehow, but I'm still not clear on exactly what each does or how they relate to each other. Looks like I've got a lot of work ahead of me. 86.24.139.55 (talk) 19:07, 20 July 2015 (UTC)


 * HTML contains the content. CSS describes how to display the content. JavaScript gives extra functionality to the interface. PHP allows you to create dynamic content. MySQL is a simple data storage application to store and retrieve content. 209.149.113.45 (talk) 19:23, 20 July 2015 (UTC)


 * PHP is a terrible programming language and I would advise you to avoid it whenever possible. MySQL isn't too hot either. I will concede that if you don't have the luxury of choosing your job, you generally don't have a lot of choice over what tools you're forced to use, and there is unfortunately a lot of software using one or the other, but you sound like you're teaching yourself, in which case I exhort you to learn some decent tools first. For one thing, it'll be easier, because you won't have to wrestle with all the brokenness of PHP and MySQL. The first linked article points you towards how to get started with Web programming in Python, and also suggests Ruby and Perl, which together with PHP are the mainstream "Web languages" (although Perl's popularity has waned). Of course you can write a Web backend in any language, including C, or for that matter COBOL, though I wouldn't advise it. --108.38.204.15 (talk) 07:39, 21 July 2015 (UTC)


 * It is important to note that it is not possible for a programming language to be "broken" or "terrible". It may have bugs (which are actually rare in the language and usually found in the interpreter or compiler). It may be a poor choice for a specific task while still perfectly functional for another task. Programmers are far too often broken and terrible and make very stupid choices - and then blame those choices on the programming language. "Why did PHP and MySQL allow me to make my website vulnerable to SQL injection!? It shouldn't allow me to idiotically assume some stranger isn't sending me bad data! It shouldn't allow me to run a query without validating the data! I shouldn't have to learn to program before writing a program! PHP and MySQL are terrible and broken! Boo hoo! Boo hoo!" Therefore, whenever you see someone claim that a programming language is terrible, it is very likely that the programmer is the problem. 209.149.113.45 (talk) 13:47, 21 July 2015 (UTC)
 * Of course it is possible for a programming language to be "broken" or "terrible". Human beings are just as capable of messing up the design and implementation of programming languages as they are of anything else. AndyTheGrump (talk) 05:02, 22 July 2015 (UTC)


 * I am sadly disappointed that "COBOL on Cogs" is not a real development framework, because that would have been awesome. OldTimeNESter (talk) 18:51, 24 July 2015 (UTC)

My PC is spontaneously rebooting
Windows 7, 32 bit.

Is there a log I can check that will tell me why ? It's intermittent, but doesn't seem to be due to overheating, and I checked the power cord to make sure it wasn't loose. StuRat (talk) 17:39, 20 July 2015 (UTC)


 * You can check the event viewer like so . You can disable automatic restarting like so . This user had a similar problem . SemanticMantis (talk) 19:12, 20 July 2015 (UTC)


 * Yes, you should disable automatic rebooting to see the actual BSoD. Ruslik_ Zero 19:15, 20 July 2015 (UTC)


 * If you cant find the reason in software, check hardware issues like dried out thermal grease, dust on heat sinks, damaged fans or failed bearings of the fan motors. Take a closer look on capacitors of power supply and mainboard. Careful, the psu keeps hazardous voltage when power plug is removed. To discharge those capacitors, turn the computer on. Then you see the BIOS or UEFI or see the fans beginn blowing, remove the power plug from the wall before the the operating system is booting up. Without turning off and cutting the power grid from computer the capacitors become discharged. -- Hans Haase (有问题吗) 20:06, 20 July 2015 (UTC)


 * Yes, I may have been premature in thinking it wasn't overheating. I took off the cover, pointed a big box fan at it on full blast, and it stopped rebooting.  StuRat (talk) 03:34, 21 July 2015 (UTC)


 * In case you don't know, this probably means you need to clean the dust off the cooling fan inside the computer. Looie496 (talk) 13:06, 22 July 2015 (UTC)


 * Yep, I will give that a try. StuRat (talk) 13:38, 22 July 2015 (UTC)


 * The computer stopped booting up when covering a fan? It can not overheat within a minute from cold. Something else is wrong. -- Hans Haase (有问题吗) 09:09, 23 July 2015 (UTC)


 * I think you misunderstood me. Previously it kept rebooting intermittently, not continuously.  With the box fan pointed at the innards, it stops doing that. StuRat (talk) 03:47, 24 July 2015 (UTC)


 * A computer certainly can overheat within a minute from being cold. All it takes is a processor that puts out a lot of heat and a CPU heat sink that came loose on one edge so that there is an air gap. Or something drawing way too much power and driving a voltage regulator into shutdown. StuRat is on the right path; clean out all of the dust, make sure none of the fans have stopped spinning, and then try to figure out what is getting hot. Selectively shielding parts of the computer from the box fan might be a useful exercise at this point.
 * Or you can always use the problem as an excuse to spend too much on a new computer.... (smile) --Guy Macon (talk) 02:43, 24 July 2015 (UTC)