- Aug 2021
-
www.csoonline.com www.csoonline.com
-
We human beings pride ourselves on our ability to reason, but the truth is we use our brains nine times out of ten to justify what our gut wants, not what is rational to do.
-
Seeing what you want to see, and failing to understand the why and the how
-
-
hypothes.is hypothes.is
-
I know that I certainly snuggle doing that.
-
-
www.timeanddate.com www.timeanddate.com
-
In everyday usage, MST is often referred to as Mountain Time (MT) or the Mountain Time Zone. This can add a bit of confusion as the term Mountain Time does not differentiate between standard time and Daylight Saving Time, so Mountain Time switches between MST and MDT in areas that use DST during part of the year.
-
-
-
Now consider we want to handle numbers in our known value set: const KNOWN_VALUES = Object.freeze(['a', 'b', 'c', 1, 2, 3]) function isKnownValue(input?: string | number) { return typeof(input) === 'string' && KNOWN_VALUES.includes(input) } Uh oh! This TypeScript compiles without errors, but it's not correct. Where as our original "naive" approach would have worked just fine. Why is that? Where is the breakdown here? It's because TypeScript's type system got in the way of the developer's initial intent. It caused us to change our code from what we intended to what it allowed. It was never the developer's intention to check that input was a string and a known value; the developer simply wanted to check whether input was a known value - but wasn't permitted to do so.
-
-
dev.to dev.to
-
which looks like complete nonsense if you don't really know what's going on
-
-
github.com github.com
-
There is always a way to work around that by doing expr as unknown as T, but it stops people making basic errors.
-
Search Terms:
-
-
github.com github.com
-
Noticed that with 100+ s, I am not alone here. There are definitely a lot of devs wanting this feature. So I took some time out and decided to give this a go myself. I have created a PR for the same
-
-
english.stackexchange.com english.stackexchange.com
-
The Simplified Spelling Board of the early 1900s in the United States made gauge one of its targets in the early 1920s, urging the replacing of au with a to yield gage. From Simplified Spelling Board, Handbook of Simplified Spelling (1920): Principles Adopted Its [the Board's] recommendations, accordingly, have been based on the following principles : 1) When current usage offers a choice of spellings, to adopt the shortest and simplest. EXAMPLES : blest, not blessed ; catalog, not catalogue; center, not centre; check, not cheque or checque; gage, not gauge; gram, not gramme; honor, not honour; license, not licence; maneuver, not manoeuvre; mold, not mould; plow, not plough; quartet, not quartette; rime, not rhyme; tho, not though; traveler, not traveller.
-
What happens when you look it up in a dictionary rather than as a phrase in Google? Google just catalogues other people's [mis-]uses
-
-
www.lionsroar.com www.lionsroar.com
-
eem intent on building new institutions and traditions rather than maintaining old ones.
YES
-
- Jul 2021
-
stackoverflow.com stackoverflow.com
-
that's why I bolded "same column" with the or query. I can delete the comment altogether, but thought it would be helpful for people perusing "or" query SO questions.
-
-
github.com github.com
-
There is currently no standard for transporting instances of JSON text within a stream protocol
-
-
ramses.blog ramses.blog
Tags
Annotators
URL
-
-
dba.stackexchange.com dba.stackexchange.com
-
For user-contributed data that's freeform and unstructured, use jsonb. It should perform as well as hstore, but it's more flexible and easier to work with.
-
-
askubuntu.com askubuntu.com
-
The shell is responsible for expanding variables.
-
-
wordtothewise.com wordtothewise.com
-
So long as the filters are only using GET requests to pull down links, there’s nothing fundamentally wrong with them. It’s a basic (though oft-ignored) tenet of web development that GET requests should be idempotent; that is, they shouldn’t somehow change anything important on the server. That’s what POST is for. A lot of people ignore this for convenience’s sake, but this is just one way that you can get bitten. Anyone remember the Google Web Accelerator that came out a while ago, then promptly disappeared? It’d pre-fetch links on a page to speed up things if you clicked them later on. And if one of those links happened to delete something from a blog, or log you out… well, then you begin to see why GET shouldn’t change things. So yes, the perfect solution to this is a 2-step unsubscribe link: the first step takes to you a page with a form on it, and that form then POSTs something back that finalizes the unsubscribe request.
-
Two step unsubscribe, where the link in the email goes to a webpage with a prominent “click here to unsubscribe” button is often a good thing for unsubscription. It also gives people an option to not unsubscribe, when they click on the wrong link, or hit “return” with the wrong link focused, in a mail inadvertently, which isn’t that unusual in link-laden emails.
-
-
security.stackexchange.com security.stackexchange.com
-
Arguably any link that performs such an action via GET is fundamentally broken. A proper unsubscribe should direct to a page with a form that requires a POST submission. (Of course, in the real world, few things are proper.)
-
-
test-prof.evilmartians.io test-prof.evilmartians.ioTestProf2
-
That's it! Just replace let! with let_it_be. That's equal to the before_all approach but requires less refactoring.
-
That technique works pretty good but requires us to use instance variables and define everything at once. Thus it's not easy to refactor existing tests which use let/let! instead.
-
-
blog.logrocket.com blog.logrocket.com
-
Looking deeper, you can see a large amount of issues open, bugs taking months to fix, and pull requests never seem to be merged from outside contributors. Apollo seems unfocused on building the great client package the community wants.
-
This sort of behaviour indicates to me that Apollo is using open-source merely for marketing and not to make their product better. The company wants you to get familiar with Apollo Client and then buy into their products, not truly open-source software in my opinion. This is one of the negatives of the open-core business model.
-
-
medium.com medium.com
-
It’s fun but when would we ever use things like this in actual code?When it’s well tested, commented, documented, and becomes an understood idiom of your code base.We focus so much on black magic and avoiding it that we rarely have a chance to enjoy any of the benefits. When used responsibly and when necessary, it gives a lot of power and expressiveness.
-
-
levelup.gitconnected.com levelup.gitconnected.com
-
Give the same task to a junior developer, and they might code it faster because they do not think twice while reading a requirement. Their approach is more like converting English to Java (or whatever programming language they use).
Indeed, not only younger programmers are thinking faster, they have much less mental burden when programming.
-
- Jun 2021
-
www.migrationencounters.org www.migrationencounters.org
-
github.com github.com
-
Ok I'll reopen until the culprit is found
-
-
github.com github.com
-
Happy Third Birthday #24728!
-
-
github.com github.com
-
On existing projects, consider the global effort to change from origin/master to origin/main. The cost of being different than git convention and every book, tutorial, and blog post. Is the cost of change and being different worth it?
-
-
-
Personally, I like having Redis as a dependency as most of my current applications use two Redis instances; persistent store and volatile.
-
-
www.listedtech.com www.listedtech.com
-
Average Lifespan of IT Systems in Higher Education
Interesting analysis about the lifespans of various EDU IT systems.
-
-
evilmartians.com evilmartians.com
-
Disclaimer: This article is being regularly updated with the best recommendations up to date, take a look at a Changelog section.
-
-
pragmaticstudio.com pragmaticstudio.com
-
Note: Instead of storing a user’s ID in the session cookie you could store a JWT, but I’m not sure what that buys you. However, you may be using specific JWT claims that make this worthwhile.
-
-
www.mutuallyhuman.com www.mutuallyhuman.com
-
For me the diagrams make it easier to talk about what the tests do without getting bogged down by how they do it.
Tags
- focus on what it should do, not on how it should do it (implementation details; software design)
- communication: focus on what is important
- describe the what without getting bogged down by how (implementation details; too detailed)
- too detailed
- communication: effective communication
- communication: use the right level of detail
Annotators
URL
-
-
docs.gitlab.com docs.gitlab.com
-
When mocking is deemed profitable:
-
-
stackoverflow.com stackoverflow.com
-
I've seen (and fixed) Ruby code that needed to be refactored for the client objects to use the accessor rather than the underlying mechanism, even though instance variables aren't directly visible. The underlying mechanism isn't always an instance variable - it can be delegations to or manipulations of a class you're hiding behind a facade, or a session store with a particular format, or all kinds. And it can change. 'Self-encapsulation' can help if you need to swap a technology, a library, an object specification, etc.
-
Also, Sandi Metz mentions this in POODR. As I recall, she also advocates wrapping bare instance variables in methods, even when they're only used internally. It helps avoid mad refactoring later.
-
But sure, go ahead and enforce self-encapsulation if you like; it makes it easier to do memoization or whatever later on.
-
-
stackoverflow.com stackoverflow.com
-
Programmers should be encouraged to understand what is correct, why it is correct, and then propagate.
new tag?:
- understand why it is correct
-
Thanks, this was just what I was looking for! This is a perfect appropriate use of instance_eval. I do not understand the nay-sayers. If you already have your array in a variable, then sure, a.reduce(:+) / a.size.to_f is pretty reasonable. But if you want to "in line" find the mean of an array literal or an array that is returned from a function/expression — without duplicating the entire expression ([0,4,8].reduce(:+) / [0,4,8].length.to_f, for example, is abhorrent) or being required to assign to a local, then instance_eval option is a beautiful, elegant, idiomatic solution!!
Tags
- spreading/propagating good ideas
- appropriate use case
- quotable
- I have a differing opinion
- appropriateness
- idiomatic (programming)
- good advice
- combating widespread incorrectness/misconception by consistently doing it correctly
- idiomatic Ruby
- having a deep understanding of something
- programming languages: learning/understanding the subtleties
- annotation meta: may need new tag
- Ruby: instance_eval
- programming: understand the language, don't fear it
- my comments
- where it shines / best application
Annotators
URL
-
-
mkarliner.medium.com mkarliner.medium.com
-
If you do it really right, you’ll find yourself following, not leading because the team culture gets bigger than any one person.
A really good leader, becomes obsolete.fr
-
-
www.w3.org www.w3.org
-
Another problem was the ambiguity of RFC 3066 regarding the generative syntax. The idea of "language-dash-region" language tags was easy enough to grasp; most users didn't read RFC 3066 directly or consider the unstated-but-realized implication that other subtags might sometimes occur in the second position.
unstated-but-realized
-
-
stackoverflow.com stackoverflow.com
-
@7alhashmi: Yes, e.g. the 100 comes from the feature_values table
I guess @7alhashmi deleted their comment that this was in reply to??
-
-
stackoverflow.com stackoverflow.com
-
Your attempt should work. There is a mismatch in column name in your query though. The query uses col2 but the table is defined with col1.
I would actually lean towards making this a comment, at least the typo fix part. But if you remove the typo fix part, all that's left is "should work", which I guess should be a comment too since it's too short to be an answer.
-
- May 2021
-
interpersonal.stackexchange.com interpersonal.stackexchange.com
-
One way to look at your current situation is that you're not paying them enough to tell you the gory details, not that you're not knowledgeable enough.
-
-
stackoverflow.com stackoverflow.com
-
Because constants in Ruby aren't meant to be changed, Ruby discourages you from assigning to them in parts of code which might get executed more than once, such as inside methods.
-
-
nowitmatters.com nowitmatters.com
-
kit.svelte.dev kit.svelte.dev
-
makes your app inaccessible to users if JavaScript fails or is disabled (which happens more often than you probably think).
-
-
github.com github.com
-
or simply install the package to devDependencies rather than dependencies, which will cause it to get bundled (and therefore compiled) with your app:
-
-
hashnode.com hashnode.com
-
But more so, external style cannot be applied to a subsection of a web page unless they force it into an iframe, which has all sorts of issues of it's own which is why external CSS is usually ignored. Inline CSS is often stripped by the tag strippers who don't want you turning things on or off... and media queries shouldn't even play into it since the layout should be controlled by the page it's being shown inside (for webmail) or the client itself, NOT your mail.
-
-
hashnode.com hashnode.com
-
So even if it works for you, you won't know where it breaks.
-
-
documentation.mjml.io documentation.mjml.io
-
MJML has been designed with responsiveness in mind. The abstraction it offers guarantee you to always be up-to-date with the industry practices and responsive. Email clients update their specs and requirements regularly, but we geek about that stuff - we’ll stay on top of it so you can spend less time reading up on latest email client updates and more time designing beautiful email.
-
-
mjml.io mjml.io
-
Write less code, save time and code more efficiently with MJML’s semantic syntax.
-
-
www.reddit.com www.reddit.com
-
Also cross-compatibility with mail clients can be hairy, so you should see what the industry experts are doing.
-
-
www.hteumeuleu.com www.hteumeuleu.com
-
As a conclusion, I’d say that Flexbox in an email unfortunately causes more troubles than it helps solving.
-
- Apr 2021
-
-
via https://stackoverflow.blog/2021/04/23/podcast-332-non-fungible-talking/?cb=1
check if devlop on Ethereum still sucks
-
-
www.youtube.com www.youtube.com
-
Fork Uniswap & Create Your Own Sushiswap
-
-
github.com github.com
-
I don't believe the sprockets and sprockets-rails maintainers (actually it's up to the Rails maintainers, see rails/rails#28430) currently consider it broken. (I am not a committer/maintainer on any of those projects). So there is no point in "waiting for someone else to fix" it; that is not going to happen (unless you can change their minds). You just need to figure out the right way to use sprockets 4 with rails as it is.
Tags
- whether maintainer or contributor should/will implement something
- at the mercy of maintainer
- waiting for someone else to fix it: that is not going to happen
- whose responsibility is it?
- frustrating when maintainers stubbornly stick to opinions/principles/decisions and won't change despite popular user support
Annotators
URL
-
-
stackoverflow.com stackoverflow.com
-
This is definitely not the place to report bugs related to sass, rails, or sprockets. Each project has it's own issue tracker (not on SO)
-
-
github.com github.com
-
can you remove the not a bug label considering that PaperTrail is creating this empty versions even when :updated_at is an ignored attribute?
-
-
rampages.us rampages.us
-
theodicy
theodicy: vindication of God, explains why God would allow evil
-
-
stackoverflow.com stackoverflow.com
-
(Yes, I realize from a technical, end-user perspective this really doesn't matter.)
The word "technical" in this sentence doesn't seem to belong or to clarify anything. I think it would be clearer without it.
But I think I understand what he's saying, which is that technical details don't matter to the end user. They only know/see/care if it works or not.
-
-
www.kickstarter.com www.kickstarter.com
-
We are are continuing our commitment to creating our games that are free and widely accessible anyone that is curious by making our game files available under Creative Commons license BY–NC–SA 4.0. That means we will continue offering a full, free print-and-play kit for Pax Pamir, and later this campaign, John Company! Anyone can use, remix, and share the game, so long as they do not use it for commercial purposes.
-
-
en.wikipedia.org en.wikipedia.org
-
A good heuristic is to not trust the libraries you did not write either.
-
-
-
Of course you must not use plain-text passwords and place them directly into scripts. You even must not use telnet protocol at all. And avoid ftp, too. I needn’t say why you should use ssh, instead, need I? And you also must not plug your fingers into 220 voltage AC-output. Telnet was chosen for examples as less harmless alternative, because it’s getting rare in real life, but it can show all basic functions of expect-like tools, even abilities to send passwords. BUT, you can use “Expect and Co” to do other things, I just show the direction.
-
But in all this incongruous abundance you'll certanly find the links to expect It's just what is wanted: the tool, which is traditionally used to communicate automatically with interactive programs. And as it always occurs, there is unfortunately a little fault in it: expect needs the programming language TCL to be present. Nevertheless if it doesn't discourage you to install and learn one more, though very powerful language, then you can stop your search, because expect and TCL with or without TK have everything and even more for you to write scripts.
Tags
- example: not how you would actually do it (does something wrong/bad/nonideal illustrating but we should overlook it because that's not the one thing the example is trying to illustrate/show us)
- pointing out gaps/downsides/cons in competition/alternatives
- why create/reinvent a new/different way to do it instead of reusing existing way?
- scripting: expect
- unwanted dependency
Annotators
URL
-
-
stackoverflow.com stackoverflow.com
-
The question talks about stdout but the title mentions stdin. I think the title is wrong.
Refers to old title, as seen here
Trick an application into thinking its stdin is interactive
-
-
github.com github.com
-
the famous gas fee problem
still not read yet
-
-
www.metacritic.com www.metacritic.com
-
The game is lame and the main gimmick of writing stuff is being shat on with the horrendous gameplay. If you have a very unique formula, don't try to change it.
-
-
linusakesson.net linusakesson.net
-
This is hard because Apple does not want you to and a failed installation might render the ipad useless.
-
Then who is responsible for the actual rendering?
-
-
unix.stackexchange.com unix.stackexchange.com
-
Although echo "$@" prints the arguments with spaces in between, that's due to echo: it prints its arguments with spaces as separators.
due to echo adding the spaces, not due to the spaces already being present
Tag: not so much:
whose responsibility is it? but more: what handles this / where does it come from? (how exactly should I word it?)
-
-
stackoverflow.com stackoverflow.com
-
It seems inelegant to me to split this into two different modules, one to include, the other to extend.
the key thing (one of them) to understand here is that: class methods are singleton methods
-
include adds instance methods, extend adds class methods. This is how it works. I don't see inconsistency, only unmet expectations :)
-
-
medium.com medium.com
-
“Who cares? Let’s just go with the style-guide” — to which my response is that caring about the details is in the heart of much of our doings. Yes, this is not a major issue; def self.method is not even a code smell. Actually, that whole debate is on the verge of being incidental. Yet the learning process and the gained knowledge involved in understanding each choice is alone worth the discussion. Furthermore, I believe that the class << self notation echoes a better, more stable understanding of Ruby and Object Orientation in Ruby. Lastly, remember that style-guides may change or be altered (carefully, though!).
-
-
store.steampowered.com store.steampowered.com
-
This is a new version of the game and it's actually worse than the one I used to play as a child. Puzzles have been removed, pathfinding is buggier than I remember it to be and you can't aqcuire a specific item at the beginning of the game. It's definitely not worth buying, even for nostalgia's sake.
-
-
store.steampowered.com store.steampowered.com
-
I was almost immediately deflated. This is a cut-down reskin of a 3 year old game from the same company.
-
-
www.youtube.com www.youtube.com
-
Keep it simple.
-
-
stackoverflow.com stackoverflow.com
-
It's a matter of readability I guess.
-
On the other hand, you state that a certain thing behaves_like a shared example group.
-
-
store.steampowered.com store.steampowered.com
-
Not really sure who the audience is... the puzzles are a bit too difficult for kids but won't tax adults very much at all--some bare bones hidden object, match-3 and peg hopping.
-
-
store.steampowered.com store.steampowered.com
-
I would love to ask devs what the ****. It used to be a not bad puzzler with crappy movement, but it had to be at least a bit interesting if my Steam counter shows 5 hours. Now it is a crap.There is nothing left from the previous version - except the fact that the main character is a robot. Earlier the game looked like a bad retro, and now it looks like sweet flood. The robot moves extremely slowly now and, what's worse, it seems that it has the same levels as a game that used to be called "Abrix for kids".Achievements were reset and the new ones are broken, so it is enough to make a step to achieve 1000 steps, move a block one to get a 1000 moved blocks achievement and same with destroying blocks. I think it is even better this way. No one has to play it more than few minutes.It is sad what happened with Abrix. Avoid it.
-
-
www.metacritic.com www.metacritic.com
-
Ultimately, Shelter Generations relies on your capacity to dig into its subtleties. On that overt level it's an obtuse and obviously indie game, and it's really quite demanding of the player; it asks them to figure their own way through the game, and it asks them to really commit to an emotional connection to these hopeless little cubs.
-
-
careerfoundry.com careerfoundry.com
-
Explicit affordances are obvious, perceptual features of an item that clue you in on how it is to be used. With explicit affordances, physical appearance and any accompanying language or text inform the user of how an object is to be used.
-
Many designers strive to create products that are so easy to navigate, their users can flow through them at first glance. To design something with this level of intuitiveness, it’s imperative designers understand affordances—what they are and how to use them.
-
-
css-tricks.com css-tricks.com
-
www.smashingmagazine.com www.smashingmagazine.com
-
However, the reason for these problems isn’t the theory itself, but the way the theory is interpreted - by developers and browsers.
-
-
www.kickstarter.com www.kickstarter.com
-
We also include a large number of detailed picture examples, often with 3D renders, that help you understand the context of the rules. For these reason, we generally don't start laying out the final rulebook until production art is complete. Writing and laying out a 20 page rule book like this generally takes about 3 months from start to finish, usually requiring a complete rewrite or two, and involves dozens of editors.
-
-
stackoverflow.com stackoverflow.com
-
however, if this is relevant to just one spec, you don't necessarily need to include devise helpers to all your controllers specs, you can just explicitly include those helpers in that one controller describe block: require 'spec_helper' describe MyCoolController include Devise::TestHelpers it { } end
-
-
github.com github.com
-
Wasn't sure if this belonged as an issue in Devise or Rails though.
-
-
stackoverflow.com stackoverflow.com
-
This is a great application for using route constraints.
-
- Mar 2021
-
web.cs.iastate.edu web.cs.iastate.edu
-
Application: 3-D Shape RegistrationAn important problem in model-based recognition is to find the transformation of a set of datapoints that yields the best match of these points against a shape model. The process is oftenreferred to asdata registration. The data points are typically measured on a real object by rangesensors, touch sensors, etc., and given in Cartesian coordinates. The quality of a match is oftendescribed as the total squared distance from the data pointsto the model. When multiple shapemodels are possible, the one that results in the least total distance is then recognized as the shapeof the object.Quaternions are very effective in solving the above least-squares-based registration problem.
-
ts geo-metric meaning is also more obvious as the rotation axis and angle can be trivially recovered.
-
-
www.jackfranklin.co.uk www.jackfranklin.co.uk
-
Svelte is there when I need it with useful APIs, but fades into the background as I put my app together.
-
but I like that Svelte comes with a good CSS story out the box.
comes with a good CSS story out the box
-
Svelte is different in that by default most of your code is only going to run once; a console.log('foo') line in a component will only run when that component is first rendered.
Tags
- turning things around / doing it differently
- out of the box
- trying to doing things the same way you did in a different library/framework (learning new way of thinking about something / overcoming habits/patterns/paradigms you are accustomed to)
- opinionated
- getting out of your way / don't even notice it because it just works
- difference
- library/framework should provide this (standard solution) rather than everyone having to write their own slightly different solution (even if it is easy enough to write yourself)
- annotation meta: may need new tag
- unfortunate defaults
- Svelte vs. React
- important point
- Svelte
- opinion
- reasonable defaults
- Svelte: styles
Annotators
URL
-
-
trailblazer.to trailblazer.to
-
With all this “monetization” happening around Trailblazer, we will also make sure that all free and paid parts of the project grow adult and maintan an LTS - or long-term support - status. Those are good news to all you users out there having been scared to use gems of this project, not knowing whether or not they’re being maintained, breaking code in the future or making your developers addicted to and then cutting off the supply chain. Trailblazer 2.1 onwards is LTS, and the last 1 ½ years of collaboration have proven that.
-
-
www.youtube.com www.youtube.com
-
seems a interesting talk on k8s
听了一半,这里的 Builders and Operators 指的是运维而非 k8s controller 里的 operator,以后有机会再看看吧
配合自己用 kubeadm 部署一个 cluster 可能不错
-
-
sandradodd.com sandradodd.com
-
It means "You're about to talk about words, but words don't matter."
-
-
vitalik.ca vitalik.ca
Tags
Annotators
URL
-
-
stackoverflow.com stackoverflow.com
-
If you want to compile youself you can pass the --with-features=huge to the configure script. Note, however, this does not enable the different language bindings because those are mostly optional and also the various GUIs need to enabled specifically, because you can have only one gui.
This explains why the standard vim package on ubuntu doesn't have GUI support (I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.) (maybe because it wouldn't know whether you wanted GUI support at all)
I was going to say because it wouldn't know which GUI you needed, but I think it would based on the Ubuntu variant: GNOME, KDE, etc.
found answer to that: https://hyp.is/NyJRxIgqEeuNmWuaScborw/askubuntu.com/questions/345593/how-to-build-vim-with-gui-option-from-sources
so you have to install a different package with GUI support, like vim-gtk or vim-athena
-
-
gitlab.gnome.org gitlab.gnome.org
-
When one is searching for it on the internet, there are many many people wondering how one can open .desktop files. It seems trivial, since one usually just has to click an item on the launcher so one thinks there must be some way.
-
It sounds like a gnome-open (or the equivalent library call) bug. Reassigning.
-
I agree that it's bad to have to handle this at the application level
-
-
news.sky.com news.sky.com
-
COVID-19 vaccine rollout may be delayed—With IT system ‘failing constantly’. (n.d.). Sky News. Retrieved 2 March 2021, from https://news.sky.com/story/covid-19-vaccine-rollout-may-be-delayed-with-it-system-failing-constantly-12164829
-
-
medium.com medium.com
-
Very often in these monorepos, packages are so incredibly specific in functionality, the question then becomes why even have a separate package at all if it’s tightly coupled? Can you use these packages independently or are they tied to specific versions of other packages in the monorepo? It’ll probably be easier to remove the mask and just work as a monolith.
-
-
blog.izs.me blog.izs.me
-
Focus is better than features.
-
-
www.chevtek.io www.chevtek.io
-
he goes on to say that simple functions should not be packages because they are too small.
-
Write modules for publication, even if you only use them privately. You will appreciate documentation in the future.
-
Write modules that do one thing well. Write a new module rather than complicate an old one.
.
Tags
- for the benefit of future self
- simple solution
- prefer simpler option
- do one thing and do it well
- can it really ever be too _?
- good policy/practice/procedure
- avoid complexity
- write/document it as if it will be published even if only will use privately/internally (for the benefit of future self) (maintain rigor without shortcuts)
- micropackages
Annotators
URL
-
-
tobeagile.com tobeagile.com
-
The number one problem that I see developers have when practicing test-first development that impedes them from refactoring their code is that they over-specify behavior in their tests. This leads developers to write more tests than are needed, which can become a burden when refactoring code.
-
-
en.wikipedia.org en.wikipedia.orgPyPy1
-
There used to be other backends in addition to C: Java, CSharp, and Javascript but those suffered from bitrot and have been removed.
-
-
en.wikipedia.org en.wikipedia.org
-
much software requires continuous changes to meet new requirements and correct bugs, and re-engineering software each time a change is made is rarely practical.
-
-
www.inuse.se www.inuse.se
-
A product’s onceability is, to a certain extent, linked to its usefulness. If it is really useful, we will certainly go to considerable lengths to repair it.
-
-
github.com github.com
-
This is a copy of the "AMD" document in the repo, kept here to maintain historical links. If this document differs from the one in the repo, the repo version is the correct one.
Why not just make this document empty (besides a link) and link/redirect to the canonical version?
That way it is impossible for them to disagree.
Tags
- avoid duplication: impossible for them to disagree/diverge if there's only one version/copy
- I have a question about this
- canonical version
- avoid duplication
- make it impossible to get wrong/incorrect
- maintaining redirect/copy at old URL in order to maintain historical links (broken links)
Annotators
URL
-
-
github.com github.comd3/d32
-
Microlibraries are easier to understand, develop and test. They make it easier for new people to get involved and contribute. They reduce the distinction between a “core module” and a “plugin”, and increase the pace of development in D3 features.
-
Small files are nice, but modularity is also about making D3 more fun.
-
-
github.com github.com
-
Unfortunately, given how widely used concat_javascript_sources is, this required changing a lot of tests. It would be nice if we could remove some of the duplication in these tests (so that similar changes would not require updating this many tests), but that can come in another PR.
-
-
github.com github.com
-
I don't understand why this isn't being considered a bigger deal by maintainrs/the community. Don't most Rails developers use SCSS? It's included by default in a new Rails app. Along with sprockets 4. I am mystified how anyone is managing to debug CSS in Rails at all these days, that this issue is being ignored makes sprockets seem like abandonware to me, or makes me wonder if nobody else is using sprockets 4, or what!
-
Meh... as I said earlier, I think using Webpack is the recommended way now. Another issue is there is no way to generate source maps in production.
-
sprockets 4 makes Chrome browser identification of SCSS css lines _worse_
-
But maybe few are still using sprockets at all, for JS or (S)CSS anymore? Hard to say.
-
If I can't do something to change the sprockets 4 debugging experience I am seeing, I am going to probably downgrade back to sprockets 3. I am finding it impossible to develop CSS the ways I am used to.
-
Is there a PR to... something? sassc-rails? That would make the patch not necessary? (I don't know if there's any good way to monkey-patch that in, I think you have to fork? So some change seems required...) Should the defaults be different somehow? This is very difficult to figure out.
-
Is there a PR to... something? sassc-rails?
Tags
- is anyone even still using it anymore?
- possible response/reaction to lack of maintainance / maintainer absence/silence
- hard to figure out where the problem lies / how to solve the problem / where to even begin
- why aren't the maintainers more concerned about / fixing this?
- official preferred convention / way to do something
- sprockets
- where (which project) do I even report this problem/bug? (whose responsibility is it?)
- annotation meta: may need new tag
- made it worse
- switching/migrating from Sprockets to Webpack (Rails)
- why aren't people talking about/asking this?
Annotators
URL
-
-
github.com github.com
-
I don't even know how to tell if they're working 100%, I'm getting mixed signals ..
-
Should it only contain link* calls?
-
When should I use link, vs dir, vs. tree?
-
but I still have no idea if I'm writing this new file correctly.
-
-
-
If the bug is still there I think that it is better if it is open so others can find it if they run into the same issue.
-
Closing this because it's obviously not going to get fixed and it's cluttering my open issues
-
-
github.com github.com
-
If a company really wanted to invest, I would prefer they dedicated an employee for X hours a week for Y months than money.
-
Money could be good if it is spent to provide some of the above things. Money on it's own is hard because then it means I would have to spend time book-keeping and managing instead of programming.
-
-
-
Any updates on this one? It makes debugging JS and CSS in the web inspector next to impossible when you can't get any help finding the offending code in your own source files.
-
-
math.stackexchange.com math.stackexchange.com
-
An equation is meant to be solved, that is, there are some unknowns. A formula is meant to be evaluated, that is, you replace all variables in it with values and get the value of the formula.
-
-
existek.com existek.com
-
Want to know how to build a taxi app that will become the next Uber or Carb? It is a reasonable question considering how convenient and cost-effective it is to use a taxi instead of maintaining your own vehicle. The best way for a cab company to ensure this convenience for customers is to build a taxi booking app.
-
-
stackoverflow.com stackoverflow.com
-
Usually when people are talking about code being semantically correct, they're referring to the code that accurately describes something.
-
Semantically correct usage of elements means that you use them for what they are meant to be used for.
-
It means that you're calling something what it actually is.
-
-
css-tricks.com css-tricks.com
-
always use real <label for="correct_input"> elements. Just that alone is a UX consideration all too many forms fail on
-
-
stackoverflow.com stackoverflow.com
-
This question was asked over a year ago, but it's a good question that I recently encountered as well...
-
-
-
The HTML5 form validation techniques in this post only work on the front end. Someone could turn off JavaScript and still submit jank data to a form with the tightest JS form validation.To be clear, you should still do validation on the server.
-
-
www.html5rocks.com www.html5rocks.com
-
Therefore client side validation should always be treated as a progressive enhancement to the user experience; all forms should be usable even if client side validation is not present.
-
It's important to remember that even with these new APIs client side validation does not remove the need for server side validation. Malicious users can easily workaround any client side constraints, and, HTTP requests don't have to originate from a browser.
-
Since you have to have server side validation anyways, if you simply have your server side code return reasonable error messages and display them to the end user you have a built in fallback for browsers that don't support any form of client side validation.
-
-
stackoverflow.com stackoverflow.com
-
I know this is old, but I got the same error and I came here from Google, so in case someone does too, this was my solution:
-
-
afarkas.github.io afarkas.github.ioWebshim1
-
Webshim is also more than a polyfill, it has become a UI component and widget library. Webshim enables a developer to also enhance HTML5 capable browsers with more highly customizable, extensible and flexible UI components and widgets.
And now that it's deprecated (presumably due to no longer needing these polyfills), not only do the polyfills go away (no longer maintained), but also these unrelated "extras" that some of us may have been depending on are now going away with no replacement ...
If those were in a separate package, then there would have been some chance of the "extras" package being updated to work without the base webshims polyfills.
In particular, I was using
$.webshims.addCustomValidityRule
which adds something that you can't do in plain HTML5 (that I can tell), so it isn't a polyfill...
-
-
stackoverflow.com stackoverflow.com
-
not all answers pass this tests
-
-
jangawolof.org jangawolof.orgPhrases3
-
Ci taatu guy googu la jigéeni Ajoor yi di jaaye sanqal.
C'est sous ce baobab que les femmes originaires du Kayor vendent de la semoule de mil.
ci -- close; at @, in, on, inside, to.
taat+u (taat) wi -- base, bottom, foundation, buttocks.
guy gi -- baobab. 🌴
googu -- that (closeness).
la -- (?).
jigéen+i (jigéen) bi ji -- sister versus brother; woman as opposed to man. 👩🏽
ajoor bi -- person from Kayor.
yi -- the (plural).
di -- be; mark of the imperfective affirmative not inactual.
jaay+e (jaay) v. -- sell.
sanqal si -- millet semolina. 🌾
-
Peñe, kenn du ko able.
Un peigne, personne ne le prête.
peñe bi -- (French) comb.
kenn -- no one.
du -- to be (negative). ➖
ko -- it.
able v. -- to lend.
-
Sëriñ boobu aj na daaw, doomam a ko wuutu léegi.
Ce marabout est décédé l'an dernier, c'est son fils qui le remplace maintenant.
sëriñ bi -- marabout.
boobu -- this.
aj (Arabic: Hajj) v. -- make the pilgrimage to Mecca. 🕋; deceased ☠️ (for a religious personality).
na -- he (?).
daaw n. -- last year. 🗓
doom+am (doom) ji -- child by descent 👶🏽; doll🪆; to have a child.
-
-
trailblazer.to trailblazer.to
-
This is where all our learnings about semantics, outputs, signals and the DSL come together.
-
Hey, that’s is an imaginary complication of our example - please don’t do this with every condition you have in your app.
-
Knowing about the wiring mechanics in Trailblazer is one thing. However, the real fun starts with nesting activities. That’s when the ideas of encapsulation, interfaces and reducing dependencies really come into play.
Tags
- putting it all together (building, learning, ...)
- example: not how you would actually do it (does something wrong/bad/nonideal illustrating but we should overlook it because that's not the one thing the example is trying to illustrate/show us)
- coming up with hypothetical examples
- trailblazer-activity
- artificial example
- extremes
- where it shines / best application
Annotators
URL
-
- Feb 2021
-
steamcommunity.com steamcommunity.com
-
Do you have collaborators who could have generated keys and sold them on their own? DIG's Steam keys and other stores' Steam keys must have some source, after all. Keys don't generate themselves, and only your accounts should be able to request them.This particular game was in Bunch Keys Indie Wizardry Bundle. I assume you had a proper contract for that. Maybe DIG or an intermediary bought 50-200 copies of it?
-
It isn't stealing because you or an associate must have generated and given them the keys in some way or another?Ideally you would ask a DIG bundle buyer to show you their key for your game, so you can figure out what key request batch it came from, and then you can scratch your head and wonder who you gave those keys to and what journey they took afterwards.
-
-
trailblazer.to trailblazer.to
-
For branching out a separate path in an activity, use the Path() macro. It’s a convenient, simple way to declare alternative routes
Seems like this would be a very common need: once you switch to a custom failure track, you want it to stay on that track until the end!!!
The problem is that in a Railway, everything automatically has 2 outputs. But we really only need one (which is exactly what Path gives us). And you end up fighting the defaults when there are the automatic 2 outputs, because you have to remember to explicitly/verbosely redirect all of those outputs or they may end up going somewhere you don't want them to go.
The default behavior of everything going to the next defined step is not helpful for doing that, and in fact is quite frustrating because you don't want unrelated steps to accidentally end up on one of the tasks in your custom failure track.
And you can't use
fail
for custom-track steps becase that breaksmagnetic_to
for some reason.I was finding myself very in need of something like this, and was about to write my own DSL, but then I discovered this. I still think it needs a better DSL than this, but at least they provided a way to do this. Much needed.
For this example, I might write something like this:
step :decide_type, Output(Activity::Left, :credit_card) => Track(:with_credit_card) # Create the track, which would automatically create an implicit End with the same id. Track(:with_credit_card) do step :authorize step :charge end
I guess that's not much different than theirs. Main improvement is it avoids ugly need to specify end_id/end_task.
But that wouldn't actually be enough either in this example, because you would actually want to have a failure track there and a path doesn't have one ... so it sounds like Subprocess and a new self-contained ProcessCreditCard Railway would be the best solution for this particular example... Subprocess is the ultimate in flexibility and gives us all the flexibility we need)
But what if you had a path that you needed to direct to from 2 different tasks' outputs?
Example: I came up with this, but it takes a lot of effort to keep my custom path/track hidden/"isolated" and prevent other tasks from automatically/implicitly going into those steps:
class Example::ValidationErrorTrack < Trailblazer::Activity::Railway step :validate_model, Output(:failure) => Track(:validation_error) step :save, Output(:failure) => Track(:validation_error) # Can't use fail here or the magnetic_to won't work and Track(:validation_error) won't work step :log_validation_error, magnetic_to: :validation_error, Output(:success) => End(:validation_error), Output(:failure) => End(:validation_error) end
puts Trailblazer::Developer.render o Reloading... #<Start/:default> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:success> #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Left} => #<End/:validation_error> {Trailblazer::Activity::Right} => #<End/:validation_error> #<End/:success> #<End/:validation_error> #<End/:failure>
Now attempt to do it with Path... Does the Path() have an ID we can reference? Or maybe we just keep a reference to the object and use it directly in 2 different places?
class Example::ValidationErrorTrack::VPathHelper1 < Trailblazer::Activity::Railway validation_error_path = Path(end_id: "End.validation_error", end_task: End(:validation_error)) do step :log_validation_error end step :validate_model, Output(:failure) => validation_error_path step :save, Output(:failure) => validation_error_path end
o=Example::ValidationErrorTrack::VPathHelper1; puts Trailblazer::Developer.render o Reloading... #<Start/:default> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> #<Trailblazer::Activity::TaskBuilder::Task user_proc=validate_model> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:validation_error> #<Trailblazer::Activity::TaskBuilder::Task user_proc=save> {Trailblazer::Activity::Left} => #<Trailblazer::Activity::TaskBuilder::Task user_proc=log_validation_error> {Trailblazer::Activity::Right} => #<End/:success> #<End/:success> #<End/:validation_error> #<End/:failure>
It's just too bad that:
- there's not a Railway helper in case you want multiple outputs, though we could probably create one pretty easily using Path as our template
- we can't "inline" a separate Railway acitivity (Subprocess "nests" it rather than "inlines")
-
step :direct_debit
I don't think we would/should really want to make this the "success" (Right) path and :credit_card be the "failure" (Left) track.
Maybe it's okay to repurpose Left and Right for something other than failure/success ... but only if we can actually change the default semantic of those signals/outputs. Is that possible? Maybe there's a way to override or delete the default outputs?
Tags
- example: not how you would actually do it (does something wrong/bad/nonideal illustrating but we should overlook it because that's not the one thing the example is trying to illustrate/show us)
- powerful
- trailblazer-activity
- useful
- example: in order to keep example concise/focused, may not implement all best practices (illustrates one thing only)
- tip
- concise
- helper functions
- feels wrong
- I have a question about this
- semantics
- flexibility
- verbose / noisy / too much boilerplate
Annotators
URL
-
-
github.com github.com
-
Personally, I'm starting to think that the feature where it automatically adds xray.js to the document is more trouble than it's worth. I propose that we remove that automatic feature and just make it part of the install instructions that you need to add this line to your template/layout: <%= javascript_include_tag 'xray', nonce: true if Rails.env.development? %>
-
-
github.com github.com
-
Now that I've thought more about it, I honestly think the auto-adding the script feature is overrated, over-complicated, and error-prone (#98, #100), and I propose we just remove it (#110).
-
-
github.com github.com
-
now that I've thought more about it, I think the auto-adding the script feature is overrated, over-complicated, and error-prone (#100), and ought to just be removed (#110).
-
-
github.com github.com
-
now that I realize how easy it is to just manually include this in my app: <%= javascript_include_tag 'xray', nonce: true if Rails.env.development? %> I regret even wasting my time getting it to automatically look for and add a nonce to the auto-injected xray.js script
-
This is failing CI because CI is testing against Rails < 6. I think the appropriate next steps are: Open a separate PR to add Rails 6 to the CI matrix Update this PR to only run CSP-related test code for Rails >= 6.0.0 Can you help with either or both of those?
Tags
- regret
- removing feature that is more trouble than it's worth (not worth the effort to continue to maintain / fix bugs caused by keeping it)
- removing legacy/deprecated things
- fix design/API mistakes as early as you can (since it will be more difficult to correct it and make a breaking change later)
- removing features to simplify implementation
- wasted effort
- pull requests: can't just throw it over the fence and be done (requires follow-through)
Annotators
URL
-
-
forum.wordreference.com forum.wordreference.com
-
At work, we often mention "throwing something over the fence" and "wrong rock" so there is (to us) a proverbial fence and a proverbial wrong rock.
-
-
www.chemistryworld.com www.chemistryworld.com
-
guides.rubyonrails.org guides.rubyonrails.org
-
Keep in mind that third party code with references to other files also processed by the asset Pipeline (images, stylesheets, etc.), will need to be rewritten to use helpers like asset_path.
-
-
en.wikipedia.org en.wikipedia.org
-
found that using only the Pascal-provided control structures, the correct solution was given by only 20% of the subjects, while no subject wrote incorrect code for this problem if allowed to write a return from the middle of a loop.
-
computers theoretically need only one machine instruction (subtract one number from another and branch if the result is negative)
-
-
sobolevn.me sobolevn.me
-
But why do we return 0? Why not 1? Why not None? And while None in most cases is as bad (or even worse) than the exceptions, turns out we should heavily rely on business logic and use-cases of this function.
-
-
github.com github.com
-
Enforces better architecture
-
-
dry-rb.org dry-rb.org
-
In other words, once you've used Maybe you cannot hit nil with a missing method. This is remarkable because even &. doesn't save you from omitting || "No state" at the end of the computation. Basically, that's what they call "Type Safety".
-
-
jrsinclair.com jrsinclair.com
-
Don’t worry if you get confused at first. Everyone does. I’ve listed some other references at the end that may help. But don’t give up.
-
-
fsharpforfunandprofit.com fsharpforfunandprofit.com
-
This is a useful approach to error handling, but please don’t take it to extremes! See my post on “Against Railway-Oriented Programming”.
-
-
trailblazer.to trailblazer.to
-
provide interfaces so you don’t have to think about them
Question to myself: Is not having to think about it actually a good goal to have? Is it at odds with making intentional/well-considered decisions?  Obviously there are still many of interesting decisions to make even when using a framework that provides conventions and standardization and makes some decisions for you...
-
-
trailblazer.to trailblazer.to
-
What this means is: I better refrain from writing a new book and we rather focus on more and better docs.
I'm glad. I didn't like that the book (which is essentially a form of documentation/tutorial) was proprietary.
I think it's better to make documentation and tutorials be community-driven free content
-
The new 2.1 version comes with a few necessary but reasonable changes in method signatures. As painful as that might sound to your Rails-spoiled ears, we preferred to fix design mistakes now before dragging them on forever.
-
The new call API is much more consistent and takes away another thing we kept explaining to new users - an indicator for a flawed API.
-
Also, the more I use Trailblazer in projects or even in Trailblazer itself, I feel how needed those new abstractions are.
Tags
- finally / at last
- annotation meta: inherit same annotation/tags
- fix design/API mistakes as early as you can (since it will be more difficult to correct it and make a breaking change later)
- pointing out gaps/downsides/cons in competition/alternatives
- how did we ever live without it?
- abstractions
- better late than never
- knowledge commons (information/data/content)
- I agree
- do it right/well the first time because it may be too hard to clean up/fix later if you don't
- if it's incorrect; fix it
- documentation
- free content
- I'm glad they did it this way
- community-driven development
- non-free content
- learn from your mistakes
- focus on the user
- welcome/good change
Annotators
URL
-
-
2019.trailblazer.to 2019.trailblazer.to
-
This creates a win-win situation, you as the user have your peace of mind, and we can continue working with your funds.
-
-
github.com github.com
-
While Trailblazer offers you abstraction layers for all aspects of Ruby On Rails, it does not missionize you. Wherever you want, you may fall back to the "Rails Way" with fat models, monolithic controllers, global helpers, etc. This is not a bad thing, but allows you to step-wise introduce Trailblazer's encapsulation in your app without having to rewrite it.
Tags
- freedom of user to override specific decision of an authority/vendor (software)
- abstractions
- focus on concepts/design/structure instead of specific/concrete technology/implementation
- allowing developer/user to pick and choose which pieces to use (allowing use with competing libraries; not being too opinionated; not forcing recommended way on you)
- focus on what it should do, not on how it should do it (implementation details; software design)
- leaving the details of implementation/integration up to you
- Trailblazer
- making changes / switching/migrating gradually/incrementally/step-wise/iteratively
- rails: the Rails way
- newer/better ways of doing things
Annotators
URL
-
-
-
In Ruby 3 we now have a “rightward assignment” operator. This flips the script and lets you write an expression before assigning it to a variable. So instead of x = :y, you can write :y => x
-
-
github.com github.com
-
compose(Add, x: x, y: 3)
How is this better than simply:
Add.run(x: x, y: 3)
?
I guess if we did that we would also have to remember to handle merging errors from that outcome into self...
-
Why is all this interaction code better? Two reasons: One, you can reuse the FindAccount interaction in other places, like your API controller or a Resque task. And two, if you want to change how accounts are found, you only have to change one place.
Pretty weak arguments though...
- We could just as easily used a plain object or module to extract this for easy reuse and having it in only one place (avoiding duplication).
-
For this one we'll define a helper method to handle raising the correct errors. We have to do this because calling .run! would raise an ActiveInteraction::InvalidInteractionError instead of an ActiveRecord::RecordNotFound. That means Rails would render a 500 instead of a 404.
True, but why couldn't it handle this for us?
Tags
- good point
- I have a question about this
- reusability
- avoid duplication
- software development: code organization: where does this code belong?
- why is it better?
- active_interaction
- library/framework should provide this (standard solution) rather than everyone having to write their own slightly different solution (even if it is easy enough to write yourself)
Annotators
URL
-
-
github.com github.com
-
No one has requested it before so it's certainly not something we're planning to add.
-
I'm sure there will be a few other people out there who eventually want something like this, since Interactions are actually a great fit for enforcing consistency in data structures when working with a schemaless NoSQL store, but obviously it's still a bit of a niche audience.
-
To give a little more context, structures like this often come up in my work when dealing with NoSQL datastores, especially ones that rely heavily on JSON, like Firebase, where a records unique ID isn't part of the record itself, just a key that points to it. I think most Ruby/Rails projects tend towards use cases where these sort of datastores aren't appropriate/necessary, so it makes sense that this wouldn't come up as quickly as other structures.
-
-
github.com github.com
-
I don't think seeing it in Rails PRs naturally means we should do it blankly. Put it another way, what's the justification in those PRs for doing it?
Tags
- understand the ramifications/effects/consequences
- investing time to really understand something
- understand the trade-offs
- rationale
- understand both sides of an issue
- fallacy: doing something because it's popular / everyone is doing it
- justification for existence
- doing something without knowing why/how it works
- why?
Annotators
URL
-
-
github.com github.com
-
The assert method is used by all the other assertions. It pushes the second parameter to the list of errors if the first parameter evaluates to false or nil.
Seems like these helper functions could be just as easily used in ActiveRecord models. Therefore, they should be in a separate gem, or at least module, that can be used in both these objects and ActiveRecord objects.
-
-
davefleet.com davefleet.com
-
From my perspective the onus is on you to consider not just the words coming out of your mouth, but how they are received.
-
-
www.infoworld.com www.infoworld.com
-
Consequently, you act irresponsibly when you adopt any programming practice simply because "that's the way you're supposed to do things."
-
My point is that you should not program blindly. You must understand the havoc a feature or idiom can wreak. In doing so, you're in a much better position to decide whether you should use that feature or idiom. Your choices should be both informed and pragmatic.
-
And just because a feature or idiom is commonly used does not mean you should use it either.
-
-
softwareengineering.stackexchange.com softwareengineering.stackexchange.com
-
The more important point comes from a program design perspective. Here, "programming to an interface" means focusing your design on what the code is doing, not how it does it. This is a vital distinction that pushes your design towards correctness and flexibility.
-
-
-
It makes me happy to see people actually think about things and not just accept a shitty API.
Tags
- "makes me happy when ..."
- can we do even better?
- don't settle for/accept something that's not as good as it can be
- actually consider / think about how it _should_ (ideally) be
- describe the ideal hypothetical solution
- less than ideal / not optimal
- doing something without knowing why/how it works
- intentional/well-considered decisions
Annotators
URL
-