419 karma · joined March 4, 2013
Ho-lee sheee-yt
There simply is no good reason for the port placement.
This. So, so, so, so much this.
I absolutely agree that getting the contours of the tool right (nice analogy there) is (one of) the hardest parts. The main issue I find when using strict, type-driven FP langs for "first draft" style implementations is that I waste time with the unavoidable ceremony that most of these languages require, when what I really want to be doing is probing around to discover the rough edges. The "my last name is Curry" style of FP almost requires you to declare these edges up front as you code.
I actually find that TDD is even more useful in FP contexts than in procedural - mainly because a) it's a good way to help think about the shape of the tool before building it, and b) the FP implementations are often more mentally complex with recursion, pattern matching, and other such things that (IMO) require more brainpower to grok than simple procedures, and to be honest I just find myself needing the tests so I don't go mad trying to be a human compiler. I think even the most staunch TDD fanatics wouldn't try to argue that it's a fast way to prototype.
These days I find myself reaching for dynamic languages with gradual typing for prototypes that might hit production (JS+TS, Python, even PHP). When I'm satisfied with the general shape, I'll add a few type hints here and there to make my IDE friendlier. After a while, usually at the point where there are large additions to requirements, I'll find myself rewriting at least a chunk of the original in a completely different manner, usually in a more type-driven manner, usually with a more FP slant, and often in a different language with more strictness.
I would like to see more mainstream languages support both type-driven FP and simple procedural code without using Haskell-inspired syntaxes or turning into the incomprehensible mess that is Scala. Java is slowly morphing that way, but it still lacks some of the FP fundamentals for when you do want to go full-zealot.
I think that if we're going to have toolkits that support custom, nested widgets, those widgets need to be designed to support the context they are in. There will always arise situations where normally-light widgets need to appear on a dark background, or vice versa. The nested path bar example is exactly this - it's a widget that supports a single context (light background), but is having two contexts forced on it by leaky style cascades (light text, but also light background).
How about we bake the concept of "light" and "dark" into the widgets themselves and take advantage of the cascading nature to switch the theme of a widget depending on the context it is in.
Realistically though, GNOME 3 was rather short-sighted when it came to themes. Windows 95 showed us the way 24 years ago: you can change the colours of anything you want. You can tweak the size of most things. You can change the fonts. You can change the icons. Simple API that gets applied on top of an existing theme. Expand this for 2019 with dark and light variants for each theme, and I bet we'd satisfy almost all users.
The Firefox/Thunderbird example is absolutely ridiculous - it's not up to these application developers to decide what icon or colour the user sees. It's up to them to provide defaults. As you say, it's clearly still Firefox - but even if it weren't, there are several good reasons I can think of that a distribution might want to change it.
What bugs me is the attitude that the solution is to reduce the usage of themes, as opposed to improve the theme engines and app dev toolkits. Why shouldn't the OS be able to impose a global stylesheet for colours, images used for semantic icons, sizes of common elements? If I, as a user, want to starting fiddling with my system theme, is it not likely that I might want all the apps on the system to play ball? Sounds pretty jarring to me to have one or two apps with their stubborn hardcoded "branding". (Oh wait, that's what we already have with Electron apps that don't respect the OS theme or conventions, and they suck!).
Oh, apps can't be restyled without manual work they say. "Until this perception changes..." they say. NO!
In an ideal world, applications could be built easily in such a way that allowed them to be themed without causing major UI bugs. The fact that this is such a large issue with GTK apps is surely further evidence that GTK has a bit of a problem - especially considering that other UI platforms are able to do a better job.
Perhaps - and I'm really pushing it here (/s) - solving the root causes of issues arising from custom themes relating to sizing and spacing might actually have other benefits as well. Like better support for UI scaling. Maybe the scope of themes needs to be reduced a little so it's easier for application developers to support?
For many websites, web fonts have been an improvement, especially considering the sorry state of "web-safe" fonts back in the day.
Are they really? I don't have an extremely deep understanding of Intel's implementation of x86 ISA, but I do know enough to say that so far we've been able to effectively mitigate almost all of these attacks with existing instructions available on the Intel CPUs. That doesn't mean that they are still not open to other variants of these attacks - but at some point you have to assume diminishing returns. Spectre is still very difficult to exploit, for example.
Perhaps this has little to do with Intel and more to do with software authors cutting corners? LFENCE and SFENCE are reasonably well documented, after all...
It's also naive to dismiss the possibility for Intel to have learnt a lot from some of the failures in 10nm that will prove useful in accelerating node development in the future.
Don't forget that Intel CPUs have things that A CPUs are missing like QuickSync, AVX2, massive PCIe interconnectivity.
Whether the A-series CPU could be modified into something competitive on that front is yet to be seen. Whether this actually matters considering the state of our compilers and software development is yet another question.
There are so many places where this can sneak in and become an issue, too:
- The development team can groupthink, underestimate and/or fail to account for technical debt payback in planning poker. They may estimate the cost for the new feature, but not include any time for refactoring to keep the codebase healthy
- The Scrum Master may not shield the development team from pressure to deliver coming from the product owner, which may cause the team to cut the above corners
- Codebase health may be split out from vertical stories into its own tasks that get deprioritised by the product owner
- Even if the development team identifies the need for codebase health, this may not be communicated back to the product owner in a way that makes business sense ("but we can still get this feature out the door quickly and fix the mess later, right?" - yes, once or twice, but the downside is a slowing of velocity)
- Even if the team started well with ground rules the Scrum Master is supposed to enforce surrounding technical quality, the Scrum Master may not be effective in enforcing the process - either because they lack authority or because they lack the ability or knowledge to do so
Among several others.
In your situation, the big red flag is that the team predicted the issue many months prior. The process has failed to extract that information from the team members and deliver a consensus between them and the product owner.
Though ultimately, as with any project, if the product owner has more organisational authority than the development team and chooses to exert this authority, no process will be able to save you.
The alternative is some sort of sub-iteration hybrid where you attempt to fix deadlines for much smaller units of work and constantly revise.
This is OK for some industries. But 2/3rds of a car doesn't quite sell...
It's an easy pass for WCAG AA with 5:1 contrast ratio, but I think it's marginal for WCAG AAA as it's about 20px in size, but not bold.
If you're finding that hard on the eyes it might pay to check your display's brightness with a colorimeter. Most displays are far too bright out of the box.
Also for reference for those unfamiliar with the difference in greys: http://actsofvolition.com/images/screenshots/Display-95-thro...
It does a lot to make the UI feel less dark