- Sep 2024
-
english.stackexchange.com english.stackexchange.com
-
I've been a UK resident for over 70 years, have two degrees from a very well known university, and find both zeros and zeroes quite acceptable as the plural form. So our perceptions are different. Do we toss a coin, or see who can shout the louder? ... Dictionaries are less open to subjective bias than individuals because of the averaging effect of carefully controlled large surveys (and acceptability is usage driven). It's good to realise that personal preferences may not be the best basis for judging correctness.
-
Note that dictionaries document the (current, at the time of going to press) usage of language, they aren't authoritative. 'Correct' is what is in common usage and largely understood to be correct, even if that contradicts a dictionary (in which case the dictionary is probably out-of-date).
-
-
-
github.com github.com
-
Looks well-written, but probably not needed in a Rails project, which already has ActiveSupport for dealing with duration and periods
-
This functionality is used by LSync for performing backup rotation (i.e. deleting old backups).
Looks like LSync was renamed to synco https://github.com/ioquatix/synco
Tags
Annotators
URL
-
-
github.com github.com
-
seems to auto-add this header:
header['List-Unsubscribe'] = "<#{Caffeinate::UrlHelpers.caffeinate_subscribe_url(mailing.subscription)}>"
-
-
-
:
-
-
after_commit on: :create do OnboardingDripper.subscribe!(self) end
-
drip engine for managing, creating, and performing scheduled messages sequences
-
What's wrong with this?
-
You're checking state in a mailer
-
It's going to be so fun to scale when you finally want to add more unsubscribe links for different types of sequences
-
If you have anything like this is your codebase, you need Caffeinate:
-
Is this thing dead? No! Not at all! There's not a lot of activity here because it's stable and working!
Tags
- key source code
- description
- illustrating problem before showing solution
- documentation
- comparing one's project/product with competition/alternatives
- fallacy: just because it hasn't changed much doesn't mean it's no longer useful/relevant/maintained
- scalability
- what's wrong with _?
- Ruby library
- e-mail: List-Unsubscribe
- example
- list of similar projects
Annotators
URL
-
-
-
-
Fingerprint Integration
-
rotate
-
prune
-
Synco is a tool for scripted synchronization and backups. It provides a custom Ruby DSL for describing backup and synchronization tasks involving one more more system and disk. It is designed to provide flexibility while reducing the complexity multi-server backups.
-
-
github.com github.com
-
Unfortunately, each of these systems is highly complex and can inflict all kinds of damage on data, much of the damage undetectable to humans.
-
Fingerprint is a general purpose data integrity tool that uses cryptographic hashes to detect changes in files and directory trees. The fingerprint command scans a directory tree and generates a fingerprint file containing the names and cryptographic hashes of the files in the tree. This snapshot can be later used to generate a list of files that have been created, deleted or modified. If so much as a single bit in the file data has changed, Fingerprint will detect it.
-
-
In cases where I've been concerned about the migration of data (e.g. copying my entire home directory from one system to another), I've used fingerprint to generate a transcript on the source machine, and then run it on the destination machine, to reassure me that the data was copied correctly and completely.
-
-
www.youtube.com www.youtube.com
-
-
-
-
Designed for both content-based websites and applications. Does not depend on a database.
-
Utopia is a website generation framework which provides a robust set of tools to build highly complex dynamic websites. It uses the filesystem heavily for content and provides functions for interacting with files and directories as structure representing the website.
-
-
crypto.stackexchange.com crypto.stackexchange.com
-
The terminology is used a little loosely
-
\begingroup This conflates general-purpose hash functions as used in e.g. data structures, which do indeed just aim to create 'buckets' of things, with cryptographic hash functions, whose aim it is to not allow finding any two documents with the same hash value.
-
hash digest returns an alphanumeric message which is the digest. that is incorrect, this alphanumeric message is a representation of the digest. The digest itself is a string of bits with a fixed length
-
-
en.wikipedia.org en.wikipedia.org
Tags
Annotators
URL
-
-
en.wikipedia.org en.wikipedia.org
-
-
# Plural is preferred, as in "1 or more days". def initialize(count = 1, unit = :days)
-
-
-
gems.rb
Why is it called gems.rb instead of Gemfile? I do like that it has an .rb extension.
-
-
-
-
platform built on top of Utopia and Relaxo.
-
-
socketry.github.io socketry.github.ioUtopia1
-
-
socketry.github.io socketry.github.io
-
-
xnode view layer
-
-
socketry.github.io socketry.github.io
-
Utopia is a content-centric web application platform. It leverages the file-system to provide a mapping between logical resources and files on disk.
-
-
-
developercertificate.org developercertificate.org
-
-
github.com github.com
-
My long term vision for Falcon is to make a web application platform which trivializes server deployment. Ideally, a web application can fully describe all its components: HTTP servers, databases, periodic jobs, background jobs, remote management, etc. Currently, it is not uncommon for all these facets to be handled independently in platform specific ways. This can make it difficult to set up new instances as well as make changes to underlying infrastructure. I hope Falcon can address some of these issues in a platform agnostic way.
-
As web development is something I'm passionate about, having a server like Falcon is empowering.
-
-
github.com github.com
-
-
Relaxo is a transactional database built on top of git.
-
Relaxo uses the git persistent data structure for storing documents. This data structure exposes a file-system like interface, which stores any kind of data.
-
-
www.codeotaku.com www.codeotaku.com
-
www.codeotaku.com www.codeotaku.com
-
-
In practice, forks and threads are at odds with each other. If you try to fork while there are active threads, you will very likely run into bugs. Even if you didn't create the thread, some other library might have, so it can be very tricky in practice.
-
-
en.wikipedia.org en.wikipedia.org
-
The small prefixes were also added, even without such a driver, in order to maintain symmetry.
-
-
en.wikipedia.org en.wikipedia.org
-
Multithreading is a widespread programming and execution model that allows multiple threads to exist within the context of one process. These threads share the process's resources, but are able to execute independently.
Tags
Annotators
URL
-
-
github.com github.com
-
mailer
Should this be mailing ?
-
This looks at Caffeinate::Mailing records where send_at has past, skipped_at is nil, and the associated Caffeinate::CampaignSubscription is has empty ended_at and unsubscribed_at values.
-
AbandonedCartDripper
-
-
Tags
Annotators
URL
-
-
-
For example, if you are Netflix and have a Subscription and a WatchHistory object. If a user does not finish watching a video, you may want to remind them that they can finish watching it. If their subscription lapses, you may want to also remind them in a separate campaign.
-
-
It has two relations that are similar, but different: subscriber, and user. The concept here is that a User may have many objects that are relevant to warrant their own Campaign. For this reason, we include this as a default. For example, if you are Netflix and have a Subscription and a WatchHistory object. If a user does not finish watching a video, you may want to remind them that they can finish watching it. If their subscription lapses, you may want to also remind them in a separate campaign. So, you'd have separate Caffeinate::CampaignSubscription objects where the subscriber is the relevant Subscription object or the WatchHistory object, and the user is the User.
-
-
en.wikipedia.org en.wikipedia.org
-
the terms allowance and tolerance are used inaccurately and are improperly interchanged
Tags
Annotators
URL
-
-
www.omsmeasure.com www.omsmeasure.com
-
“Accuracy” indicates the closeness of a measurement to the true value but it cannot be quantified because it is not possible to know the true value.
-
-
bugs.ruby-lang.org bugs.ruby-lang.org
-
Updated
-
Sure, it is not needed, we can always write things in a different way. As a matter of fact, with such an argument, hardly any improvement should be accepted.
-
In practice when people use ||, they do mean ?? (whatever its spelling). It just so happens that most of the time, it does what you want, because you happen to not be dealing with Booleans. But the semantics you mean to express is not about "truthness", but about "nilness". And occasionally you get bitten because false does exist, and behaves differently.
-
Here's example code which works around the lack of a ??= operator in the wild:
Tags
- rationale
- Ruby: has no undefined type
- works correctly by chance/luck / happy coincidence
- rationale for implementation choices
- overlooked a subtle bug/case but by chance/luck it still works most of the time
- +1.0
- criteria that must be met for a new feature be considered for inclusion/addition
- good point
- programming languages: feature proposals
- sighting
- my comments
- missing feature leading to less-than-ideal workarounds
Annotators
URL
-
-
en.wikipedia.org en.wikipedia.org
-
In comparison, Perl/Python/Javascript, which also have the latter property, have other false-like values (0 and empty string), which make || differ from a null-coalescing operator in many more cases (numbers and strings being two of the most frequently used data types). This is what led Perl/Python/Javascript to add a separate operator while Ruby hasn't.
-
Examples by languages
-
-
en.wikipedia.org en.wikipedia.org
-
the first operand evaluated to a value likened to logically false, in other words, a falsy value
-
f that operand evaluates to a value likened to logically true (according to a language-dependent convention, in other words, a truthy value)
Tags
Annotators
URL
-
-
github.com github.com
-
And, of course, I'm grateful to be reunited with my long lost friend, false.
-
However, this idiom is only an approximation, and introduces subtle bugs when we try to allow false values:
-
Ruby, as a community, unfairly discriminates against false, and it needs to stop.
-
false is a perfectly non-nil object, and you're excluding it out of convenience!
-
-
en.wikipedia.org en.wikipedia.org
-
Decimals are commonly used to approximate real numbers. By increasing the number of digits after the decimal separator, one can make the approximation errors as small as one wants, when one has a method for computing the new digits.
Tags
Annotators
URL
-
-
en.wikipedia.org en.wikipedia.org
-
For example, the bathroom scale may convert a measured extension of a spring into an estimate of the measurand, the mass of the person on the scale. The particular relationship between extension and mass is determined by the calibration of the scale.
imperfect / not exact / not directly measured
-
-
en.wikipedia.org en.wikipedia.org
-
The resolution is related to the precision with which the measurement is made, but they are not the same thing. A sensor's accuracy may be considerably worse than its resolution.
-
-
en.wikipedia.org en.wikipedia.org
-
with stating it as the implied uncertainty (to prevent readers from recognizing it as the measurement uncertainty)
-
Round half to even, which rounds to the nearest even number. With this method, 1.25 is rounded down to 1.2. If this method applies to 1.35, then it is rounded up to 1.4. This is the method preferred by many scientific disciplines, because, for example, it avoids skewing the average value of a long list of values upwards.
-
For example, if the length of a road is reported as 45600 m without information about the reporting or measurement resolution, then it is not clear if the road length is precisely measured as 45600 m or if it is a rough estimate.
-
-
-
That right there almost works. It'd be incredible if it did because I love the way that reads.
-
The snag is that when the top-level match grabs the published_at value and applies it to the be_within(...), it is working with a string representation of the timestamp. We first need to parse that into a date object and there is no affordance for that here.
-
RSpec gives us the tools to make custom matchers so that we can preserve all the expressiveness while adding specialized or even domain-specific matchers.
-
-
www.rubydoc.info www.rubydoc.info
-
ruby-doc.org ruby-doc.org
-
docs.ruby-lang.org docs.ruby-lang.org
-
github.com github.com
-
If you'd like another method to do the waiting for you, e.g. Kernel.select, you can use Timers::Group#wait_interval to obtain the amount of time to wait. When a timeout is encountered, you can fire all pending timers with Timers::Group#fire
This is another way of achieving concurrency (progress made while waiting for other things) besides wrapping the timer's sleep in a separate thread like https://github.com/rubyworks/facets/blob/main/lib/standard/facets/timer.rb does.
-
-
You can also schedule a block to run immediately and periodically with Timers::Group#now_and_every
-
-
www.rubymotion.com www.rubymotion.com
-
I'm a company
-
I'm a developer
-
-
youmustreadthis.com youmustreadthis.com
-
-
The Starfish and the Spider: The Unstoppable Power of Leaderless Organizations Ori Brafman, Rod A. Beckstrom How do you build teams and organizations that are sustainable over time? How can you be the most adaptable? Forget everything you know about leadership and organization, be completely transformed. A must for anyone wanting results.
Tags
Annotators
URL
-
-
en.wikipedia.org en.wikipedia.org
-
A concurrent system is one where a computation can advance without waiting for all other computations to complete.
-
-
streamtimer.app streamtimer.app
-
-
github.com github.com
-
new tag: display/view for audience
-
-
www.gertgoet.com www.gertgoet.com
-
Envfile
Like the concept but don't like how you have to have a separate Envfile. (Maybe you don't and can use it directly?)
-
# booleans # simple: providing any value for ENV['FORCE_SSL'] means `true`: force_ssl = !!ENV['FORCE_SSL'] # more advanced: # only when we provide 'true' will `force_ssl` become true. force_ssl = ('true' == ENV['FORCE_SSL'])
-
variable :FORCE_SSL, :boolean, default: '1'
-
-
-
You can define a coercion to some type via definition
-
fiels :tags, Array, of: String
-
But nothing of them supports all features I need for:
-
I've explored these projects: Reform Mutations Interactor dry-rb
-
But you're able to remove (usually inherited) fields by: class ChildForm < ParentForm remove_field :field_from_parent end
-
Fields and nested forms are filling in order of their definition. But sometimes you want to change this order, for example, if you have a nested forms in ancestors which depends on data in children forms. For such cases you can use :depends_on option, which accepts fields and nested forms names as Symbol or Array of symbols. They will be filled (and initialized) before dependent.
-
-
And if I need for simple service object without validation? You can use Formalism::Action, a parent of Formalism::Form.
Tags
- how it is different from others
- missing feature
- powerful
- form validation
- allowing developer/user to pick and choose which pieces to use (a la carte, not all or nothing)
- features
- form libraries
- inheritance (programming)
- service workers
- coercion (types)
- form objects
- Ruby library
- formalism (Ruby library)
- list of similar projects
- type conversion
- customizable
Annotators
URL
-
-
-
Looks really nice. May switch to this from Memoist. This alt is much more configurable.
-
memoize :call, condition: -> { environment == 'production' }
-
Such gems like Memoist override methods. So, if you want to memoize a method in a child class with the same named memoized method in a parent class — you have to use something like awkward identifier: argument. This gem allows you to just memoize methods when you want to.
-
It's a fork of Memery gem. Original Memery uses prepend Module.new with memoized methods, not touching original ones. This approach has advantages, but also has problems, see discussion here: tycooon#1
Tags
- how it is different from others
- unofficial workaround/fork due to problem getting ignored, neglected, or not timely fixed upstream
- memoization
- comparing one's project/product with competition/alternatives
- conditionals (programming)
- forking to add a desired missing feature/change
- differences of opinion
- Ruby library
- configurability
Annotators
URL
-
-
github.com github.com
-
-
but PR is not updated somewhy
Did he just make up a new word? :)
I get what it means though, pretty easily: somewhy = for some reason
(by non-native English speaker)
-
Unfortunately, $ method_name -s doesn't work in Pry, but I hope that some day it will get fixed. Just a ref to issue: pry/pry#1756
-
-
Tags
Annotators
URL
-
-
github.com github.com
-
You can require plugins for Filewatcher, which extends core functionality.
-
If you have questions, problems or suggestions about plugins system — please, don't hesitate to create a new issue.
-
-
Lightweight file watcher weighing about 300 LOC. No runtime dependencies and no platform specific code. Works everywhere.
-
Monitors changes in the file system by polling.
-
-
web.archive.org web.archive.org
-
while true; do waitforsave assignment.ly; lily assignment.ly; say "done"; done
-
-
github.com github.com
-
mount IndexController do # all methods will be mounted automatically, it's just an example of refinement get '/hello', :hello_world end
-
-
github.com github.com
-
alexwayfer.name alexwayfer.name
Tags
Annotators
URL
-
-
github.com github.com
-
It looks like bucket just returns a start time for the given period. - For a :day period, takes the starting time and goes to the beginning of the day - etc.
-
-
-
.time {|timer = Timer.new.start| ... } ⇒ Object Takes a block and returns the total time it took to execute.
-
-
socketry.github.io socketry.github.io
-
you may want to implement a fan-out or map-reduce.
-
Unless you need fan-out, map-reduce style concurrency, you can actually use a slightly more efficient Kernel#Sync execution model.
-
When should I use Async? ¶ You should use Async when you desire explicit concurrency in your program. That means you want to run multiple tasks at the same time, and you want to be able to wait for the results of those tasks.
-
-
en.wikipedia.org en.wikipedia.org
Tags
Annotators
URL
-
-
en.wikipedia.org en.wikipedia.org
-
A programming model is an execution model coupled to an API or a particular pattern of code.
-
-
en.wikipedia.org en.wikipedia.org
-
Modern parallel languages have much easier to use execution models. The thread model was one of the original parallel execution models, which may account for why it has persisted despite being difficult to use.
-
The complication comes from the fact that the execution model does not have any means for the execution of "give up ownership of the lock" to have any influence over which execution of "gain ownership of the lock" in some other timeline (thread) follows. Very often, only certain handoffs give valid results. Thus, the programmer must think of all possible combinations of one thread giving up a lock and another thread getting it next, and make sure their code only allows valid combinations.
-
a common synchronization construct is the lock
-
The execution model is the definition of the behavior, so all implementations, whether in-order or out-of-order or interpreted or JIT'd etc.. must all give the exact same result, and that result is defined by the execution model.
-
-
socketry.github.io socketry.github.io
-
socketry.github.io socketry.github.io
-
A task can be in one of the following states
-
- Aug 2024
-
docs.gitlab.com docs.gitlab.com
-
docs.gitlab.com docs.gitlab.com
-
A change in the minor component signifies a non-breaking change, and that the consumer can safely use the new version without breaking, although the consumer might need to be updated to use its new functionality. For example, adding a non-mandatory feature column with a default value to the model is a minor bump, because when a value for the added column is not passed, inference still works.
-
Using semantic versioning facilitates model deployment, by communicating which if a new version can be deployed without changes to the application:
-
-
www.anthropic.com www.anthropic.com
-
When a user asks Claude to generate content like code snippets, text documents, or website designs, these Artifacts appear in a dedicated window alongside their conversation. This creates a dynamic workspace where they can see, edit, and build upon Claude’s creations in real-time, seamlessly integrating AI-generated content into their projects and workflows.
Tags
Annotators
URL
-
-
-
The architecture covers both easy unsubscribe options, mailto and URL. This is because not all mailbox providers support the List-Unsubscribe-Post header.
-
Offering an easy unsubscribe method allows recipients to indicate which type of email they would like to receive and not receive based on topic or category.
Not necessarily. Simply providing an easy unsubscribe method does not in itself give you that (by default, I would think the unsubscribe would unsubscribe the entire account from future e-mails.)
Only if you program in the support for topic/category-based preferences and provide in the header the URL to a page that only subscribes from that one category....
Oh, I see. If one keeps reading, it seems to be implied that AWS provides some of that support. For example:
The unsubscribe email address and URL contain the recipient’s email address and email subject parameters, which are encrypted using AWS Key Management Service. These parameters are used later on to identify and unsubscribe the recipient from a specific topic.
-
Amazon SES unsubscribe method: The Amazon SES subscription management feature, which provides subscription management via the List-Unsubscribe header and ListManagementOptions footer links.
-
Unsubscribe method header: A hyperlink that is rendered by the mailbox provider based on the List-Unsubscribe email header. Recipients can use this link to unsubscribe from that sender.
-
Unsubscribe method footer: An unsubscribe link in the email footer, which redirects recipients to a landing page, where they can unsubscribe or edit their communication preferences.
-
Custom-built unsubscribe method: A custom-built unsubscribe link in the email footer and manually added List-Unsubscribe header.
-
-
github.com github.com
-
This is the most simulative version of a controller. It will try and mimic real user behaviour. It's the recommended version to use when the goal of the load-test is finding out how many concurrently active users the target instance supports.
-
-
www.gnu.org www.gnu.org
-
I'm often asked to describe the “advantages” of free software. But the word “advantages” is too weak when it comes to freedom. Life without freedom is oppression, and that applies to computing as well as every other activity in our lives.
-
-
-
-
A proprietary program puts its developer or owner in a position of power over its users. This power is in itself an injustice.
-
Of course, the developer usually does not do this out of malice, but rather to profit more at the users' expense. That does not make it any less nasty or more legitimate.
-
Power corrupts; the proprietary program's developer is tempted to design the program to mistreat its users.
-
-
Yielding to that temptation has become ever more frequent; nowadays it is standard practice. Modern proprietary software is typically an opportunity to be tricked, harmed, bullied or swindled.
-
Software designed to function in a way that mistreats the user is called malware.
-
Microsoft is using malware tactics to get users to switch to their web browser, Microsoft Edge, and their search engine, Microsoft Bing. When users launch the Google Chrome browser Microsoft injects a pop up advertisement in the corner of the screen advising users to switch to Bing. Microsoft also imported users Chrome browsing data without their knowledge or consent.
-
-
docs.mattermost.com docs.mattermost.com
-
The commercial license prohibits reverse engineering and tampering with our license key mechanism unlocking paid features so that we can run a compliant and fair commercial business.
-
-
www.kickstarter.com www.kickstarter.comAkkad1
Tags
Annotators
URL
-
-
www.kickstarter.com www.kickstarter.comMØBEE1
Tags
Annotators
URL
-
-
www.kickstarter.com www.kickstarter.comYonder1
-
stackoverflow.com stackoverflow.com
-
ELECT DISTINCT ON (customer) id, customer, total FROM purchases ORDER BY customer, total DESC, id;
-
-
The perfect index for the above query would be a multi-column index spanning all three columns in matching sequence and with matching sort order:
-
-
en.wikipedia.org en.wikipedia.org
-
WITH recursive temp (n, fact) AS ( SELECT 0, 1 -- Initial Subquery UNION ALL SELECT n+1, (n+1)*fact FROM temp WHERE n < 9 -- Recursive Subquery ) SELECT * FROM temp;
-
-
dba.stackexchange.com dba.stackexchange.com
-
dba.stackexchange.com dba.stackexchange.com
-
-
GROUP BY 1
What does this do?
-
-
www.intrepidcoder.com www.intrepidcoder.comMonopoly1
Tags
Annotators
URL
-
-
www.reddit.com www.reddit.com
-
Monopoly is not played on a cartesian plane. It's played on a directed circular graph. Therefore, it is inappropriate to use the Euclidean distance metric to compare the distances between places on the board. We must instead use minimum path lengths. Example: If we used Euclidean distance, then you would have to agree that the distance between, say, Go and Jail is equal to the distance between the Short Line and the Pennsylvania Railroad. Clearly, this is not the intention. In your example, the "nearest railroad" would be the railroad square having the shortest path from wherever you stand. With the game board representing a directed graph, there are no "backwards" paths. Thus, the distance from the pink Chance square to the Reading railroad is not 2. It's 38.
-
-
github.com github.com
-
This seems to be more than just a thin wrapper like https://github.com/rainerschuster/final-form-material-ui was. I kind of prefer the simplicity of focus of final-form-material-ui.
This appears to be attempting to do too much. Though if it gives you exactly what you want, great.
-
-
github.com github.com
-
mui.com mui.com
Tags
Annotators
URL
-
-
github.com github.com
-
However, in order to tell InheritedResources that it really failed, you need to add errors to your model.
-
- Jul 2024
-
gitlab.com gitlab.com
-
Does this mean they are held back until their LC "unlocks" P1 for them? (i.e. They're not able to proceed on their own. They have to ask permission. Which I generally try to avoid and prefer to empower people to proceed.)
-
-
nation.marketo.com nation.marketo.com
-
it really depends on how the organization's legal counsel interprets the laws and how risk-averse they are. Some organizations might say only Germany requires double opt-in, while others also include Austria and Switzerland. Some organizations might say the US operates under "everyone is opted in until they opt out" while others might say everyone needs to opt in, regardless of country.
.
-
-
-
It’s also worth pointing out that an unfriendly unsubscribe experience is also a major driver of spam complaints. Half of U.S. consumers say they’ve reported a brand’s emails as spam because they couldn’t easily opt out, according to our Adapting to Consumers’ New Definition of Spam report. So putting up opt-out barriers not only jeopardizes your legal compliance but can also hurt your deliverability as well.
-
ensure you’re following unsubscribe best practices:Don’t charge a fee.Don’t require any other information beyond an email address.Don’t require subscribers to log in.Don’t ask subscribers to visit more than one page to submit their request.
-
-
getanewsletter.com getanewsletter.com
-
Keep a clear record of how you obtained consent from your current subscribers When, how, and why (what for) you obtained their data – timestamp, wording, source.
-