Fueling Curiosity, One Insight at a Time
At Codemancers, we believe every day is an opportunity to grow. This section is where our team shares bite-sized discoveries, technical breakthroughs and fascinating nuggets of wisdom we've stumbled upon in our work.
May 20, 2025
pgvector
provides native support for vector similarity search in PostgreSQL. It supports three types of distance metrics, each useful depending on the use case:•
<=>
Cosine distance – Measures the angle between two vectors (ignores magnitude). Great for comparing meaning in text (e.g., NLP). Smaller angle = more similar.•
<#>
L2 (Euclidean distance) – Measures the straight-line distance between two vectors. Takes both direction and size into account. Good when actual value differences matter (like in image or audio data).•
<->
Inner product – Measures how much two vectors point in the same direction and how large they are. If vectors are normalized (length = 1), it works like cosine similarity. Great for ranking similarity when vectors are preprocessed.#pgvector #PostgreSQL #VectorSearch #Embeddings
Nived Hari
System Analyst
May 20, 2025
ClickHouse DB
It is a column-oriented database management system designed for online analytical processing (OLAP). It's optimised for real-time analytics on large volumes of data and is known for being fast, highly scalable, and efficient for read-heavy workloads like metrics, logs, events, and other analytical data.
Key features are -
1. Columnar storage : Stores data by columns instead of rows, enabling efficient compression and faster reads.
2. Works super fast : Designed to process billions of rows per second per server.
3. SQL-compatible.
4. Materialized views : For real-time aggregation and data transformation.
#databases #click_house_db #analytics
It is a column-oriented database management system designed for online analytical processing (OLAP). It's optimised for real-time analytics on large volumes of data and is known for being fast, highly scalable, and efficient for read-heavy workloads like metrics, logs, events, and other analytical data.
Key features are -
1. Columnar storage : Stores data by columns instead of rows, enabling efficient compression and faster reads.
2. Works super fast : Designed to process billions of rows per second per server.
3. SQL-compatible.
4. Materialized views : For real-time aggregation and data transformation.
#databases #click_house_db #analytics
Puneeth kumar
System Analyst
May 7, 2025
Validating date and time field in Rails
1. Check if a date is valid (e.g., "2025-02-30" is not a valid date).
2. Make sure a date is before or after a certain time as needed.
3. Restrict a field to only accept dates, times or datetimes.
4. Works well with user input in different formats.
For example :
This makes sure start_time is not in the past.
#CU6U0R822 #date_time_validation
validates_timeliness
gem helps us to check if a date or time field is valid and meets certain conditions — like being in the past, in the future, or within a specific range. It can do following things.1. Check if a date is valid (e.g., "2025-02-30" is not a valid date).
2. Make sure a date is before or after a certain time as needed.
3. Restrict a field to only accept dates, times or datetimes.
4. Works well with user input in different formats.
For example :
class Event < ApplicationRecord
validates_timeliness :start_time, on_or_after: :now, type: :datetime
end
This makes sure start_time is not in the past.
#CU6U0R822 #date_time_validation
Puneeth kumar
System Analyst
May 5, 2025
friendly_id
is a Rails gem that lets you use secure, human-readable slugs instead of record IDs in URLs.https://github.com/norman/friendly_id
it updates the url
from this :
https://localhost:3000/employer/job_posts/2/job_applications/new
to this:
https://localhost:3000/employer/job_posts/frontend-developer-37b70ea4-761e-4369-832e-f5b373f7f00b/job_applications/new
#CU6U0R822
Mohammad hussain
System Analyst
Apr 29, 2025
rails_representation_url
in Rails is used to generate a URL for a variant of an Active Storage image, not the original blob. It's especially useful when we want to apply transformations like resizing or converting image formats on-the-fly.
rails_representation_url(
image.variant(resize_to_limit: [300, 300], saver: { quality: 80 }, format: :webp).processed,
only_path: true
)
•
image.variant(...)
creates a variant of the image, resizing it to a maximum of 300x300 pixels, converting it to WebP format, and reducing its quality for optimization.•
.processed
ensures the variant is actually processed before generating the URL.•
rails_representation_url(...)
then generates the URL for this transformed version.•
only_path: true
returns a relative path (instead of a full URL), which is often preferred in views or frontend routing.This is a great way to deliver performance-optimized images for the UI
#rubyonrails
Syed Sibtain
System Analyst
Apr 28, 2025
Rails provides a https://api.rubyonrails.org/classes/ActiveRecord/TokenFor.html#method-i-generate_token_for|generates_token_for method on Active Record models, which can generate unique tokens for records — including support for expiration. This is useful for scenarios like creating unique unsubscribe links in emails. You can later retrieve a record using the generated token with the corresponding https://api.rubyonrails.org/classes/ActiveRecord/TokenFor/RelationMethods.html#method-i-find_by_token_for|find_by_token_for method.
The Rails Authentication generator utilizes this feature in its password reset flow. It uses https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html#method-i-has_secure_password|has_secure_password, which by default enables password reset functionality for the user model. When you call the
By default, https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html#method-i-has_secure_password|has_secure_password uses the password attribute, but you can customize this by specifying a different attribute via the
#rubyonrails #ror #authentication #token #password
The Rails Authentication generator utilizes this feature in its password reset flow. It uses https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html#method-i-has_secure_password|has_secure_password, which by default enables password reset functionality for the user model. When you call the
password_reset_token
instance method on a user, it internally uses generates_token_for
to generate a unique token. You can then find the user record later using find_by_password_reset_token
.By default, https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html#method-i-has_secure_password|has_secure_password uses the password attribute, but you can customize this by specifying a different attribute via the
attribute
option. If you want to disable password reset functionality, you can pass reset_token: false
to has_secure_password
(it is enabled by default). Similarly, you can disable password confirmation validations by passing validations: false
(validations are enabled by default).#rubyonrails #ror #authentication #token #password
Aditya Vishwakarma
System Analyst
Apr 23, 2025
In recent versions of Rails, the default host for the test environment has changed from https://www.example.com|www.example.com to https://example.com|example.com. However, Capybara continues to use https://www.example.com|www.example.com in most cases, which can cause URL assertions in ActionMailer tests to fail when relying on the default settings. To resolve this inconsistency, you can explicitly set default_url_options[:host] to https://www.example.com|www.example.com in test.rb.
#RubyOnRails #ROR #ActionMailer #Capybara #TDD
#RubyOnRails #ROR #ActionMailer #Capybara #TDD
Aditya Vishwakarma
System Analyst
Apr 16, 2025
SEO Best Practices:
• Meta titles should be between 50–60 characters long (including spaces).
• Meta descriptions should be between 120–160 characters (including spaces).
• Use a single H1 tag per page, followed by a clear and consistent hierarchy of H2 and H3 tags across all pages.
• All images should have meaningful
• Ensure there are no broken links; tools like Screaming Frog can help detect them.
• Include canonical tags to avoid duplicate content issues.
• Add social meta tags (Open Graph, Twitter Cards) for better link previews.
• The site should have a robots.txt file and a sitemap.xml for better crawling and indexing.
#SEOBestPractices #SearchEngineOptimization
• Meta titles should be between 50–60 characters long (including spaces).
• Meta descriptions should be between 120–160 characters (including spaces).
• Use a single H1 tag per page, followed by a clear and consistent hierarchy of H2 and H3 tags across all pages.
• All images should have meaningful
alt
tags for accessibility and SEO.• Ensure there are no broken links; tools like Screaming Frog can help detect them.
• Include canonical tags to avoid duplicate content issues.
• Add social meta tags (Open Graph, Twitter Cards) for better link previews.
• The site should have a robots.txt file and a sitemap.xml for better crawling and indexing.
#SEOBestPractices #SearchEngineOptimization
Mohammad hussain
System Analyst
Apr 14, 2025
In Rails,
When we define a
Example:
This ensures a consistent ordering across the app without needing to manually add
It's especially useful when displaying comments, messages, tasks, or anything that should appear in the order they were created.
Caution:
In that case, we would need to call
#rubyonrails
default_scope
is a way to automatically apply a query condition to every query for a model.When we define a
default_scope
, it always gets added unless we manually remove it.Example:
default_scope { order(created_at: :asc) }
This ensures a consistent ordering across the app without needing to manually add
.order(created_at: :asc)
every time.It's especially useful when displaying comments, messages, tasks, or anything that should appear in the order they were created.
Caution:
default_scope
can sometimes be annoying if we want a different order temporarily.In that case, we would need to call
.unscope(:order)
to remove it manually.#rubyonrails
Syed Sibtain
System Analyst
Apr 11, 2025
Instead of manually checking if a key exists in a hash, you can just say:
Now whenever you do:
Ruby will assume
#ruby
counts = Hash.new(0)
Now whenever you do:
counts[:apple] += 1
Ruby will assume
counts[:apple]
starts at 0
, so no errors — just clean, readable code.#ruby
Nived Hari
System Analyst
Showing 1 to 5 of 78 results
Ready to Build Something Amazing?
Codemancers can bring your vision to life and help you achieve your goals
- Address
2nd Floor, Zee Plaza,
No. 1678, 27th Main Rd,
Sector 2, HSR Layout,
Bengaluru, Karnataka 560102 - Contact
hello@codemancers.com
+91-9731601276