Forwarded from Masoud Bahrami
Math: Discovered or invented? And Why It Matters to Dev Guys❗
There's a fundamental question that has puzzled thinkers
for centuries: Is mathematics discovered, or is it invented? This long-standing debate within the philosophy of mathematics isn't just an academic exercise.
For us in software development, as designers, modelers, architects, and developers, understanding this dichotomy, and its nuances, directly impacts how we approach complex problems and build robust systems.
--------------------
✅ The "Discovered" View:
From the perspective that mathematical truths exist independently of human thought, software professionals often find themselves acting as explorers. When I delved into domains like accounting or payroll, I encountered deeply embedded principles and seemingly immutable rules.
The precise logic of financial transactions, the established principles of double-entry bookkeeping, the complex yet consistent calculations for tax liabilities or social contributions, these feel-like inherent truths governing how money and compensation work.
We are accurately modeling fundamental relationships that exist independently, uncovering the mathematical structure of the real world within that domain.
--------------------
✅ The "Invented" View:
Aligned with the view that mathematics is a human-constructed system of symbols and rules we create, much of what we do in software involves invention. While the core accounting principles might be discovered, the way we implement them within a digital system is a creative act of invention. We invent abstract data structures to represent ledgers, design custom algorithms to handle intricate tax rules across different jurisdictions, or devise new abstract models for payroll processing that ensure scalability, auditability, and performance.
Example:
Consider the solution we invent for managing a large-scale accounting ledger. While debits and credits are discovered principles, the invented part is how we represent, store, and process millions of transactions efficiently in software. This involves devising custom data structures for journal entries, creating indexing strategies for rapid querying, and designing algorithms for real-time balance calculations. These aren't just paper-to-digital translations; they're new mathematical constructs and rules invented to harness computational power, ensuring consistency and performance in complex digital environments.
--------------------
✅ The Nuance of the Dichotomy:
Some philosophers, like George Lakoff, argue that this dichotomy is too simplistic, suggesting mathematics emerges from our embodied human experience. From a software professional's perspective, this nuanced view resonates strongly. We are constantly observing and discovering the underlying mathematical nature of the problem space, recognizing the inherent patterns and constraints. Simultaneously, we are inventing abstract tools, languages, and systems, from low-level algorithms to high-level architectural patterns, to articulate, solve, and extend those problems.
🧐For Example:
The recognition of recurring problems in software led to the discovery of design patterns as effective solutions. However, the formalization and naming of these patterns, along with the rules for their application, were distinct acts of invention that codified and communicated this discovered knowledge in a reusable, mathematical way.
--------------------
Understanding this dynamic, knowing when we are accurately reflecting a discovered truth versus when we are inventing a new paradigm, is crucial for making sound design decisions, ensuring system integrity, fostering innovation, and ultimately, building effective software solutions.
- Masoud Bahrami
There's a fundamental question that has puzzled thinkers
for centuries: Is mathematics discovered, or is it invented? This long-standing debate within the philosophy of mathematics isn't just an academic exercise.
For us in software development, as designers, modelers, architects, and developers, understanding this dichotomy, and its nuances, directly impacts how we approach complex problems and build robust systems.
--------------------
✅ The "Discovered" View:
From the perspective that mathematical truths exist independently of human thought, software professionals often find themselves acting as explorers. When I delved into domains like accounting or payroll, I encountered deeply embedded principles and seemingly immutable rules.
The precise logic of financial transactions, the established principles of double-entry bookkeeping, the complex yet consistent calculations for tax liabilities or social contributions, these feel-like inherent truths governing how money and compensation work.
A big confession:
I simply discover that I'm not(and must not!) invent the principle that a debit equals a credit, or that gross pay minus deductions equals net pay.
We are accurately modeling fundamental relationships that exist independently, uncovering the mathematical structure of the real world within that domain.
--------------------
✅ The "Invented" View:
Aligned with the view that mathematics is a human-constructed system of symbols and rules we create, much of what we do in software involves invention. While the core accounting principles might be discovered, the way we implement them within a digital system is a creative act of invention. We invent abstract data structures to represent ledgers, design custom algorithms to handle intricate tax rules across different jurisdictions, or devise new abstract models for payroll processing that ensure scalability, auditability, and performance.
Example:
Consider the solution we invent for managing a large-scale accounting ledger. While debits and credits are discovered principles, the invented part is how we represent, store, and process millions of transactions efficiently in software. This involves devising custom data structures for journal entries, creating indexing strategies for rapid querying, and designing algorithms for real-time balance calculations. These aren't just paper-to-digital translations; they're new mathematical constructs and rules invented to harness computational power, ensuring consistency and performance in complex digital environments.
--------------------
✅ The Nuance of the Dichotomy:
Some philosophers, like George Lakoff, argue that this dichotomy is too simplistic, suggesting mathematics emerges from our embodied human experience. From a software professional's perspective, this nuanced view resonates strongly. We are constantly observing and discovering the underlying mathematical nature of the problem space, recognizing the inherent patterns and constraints. Simultaneously, we are inventing abstract tools, languages, and systems, from low-level algorithms to high-level architectural patterns, to articulate, solve, and extend those problems.
🧐For Example:
The recognition of recurring problems in software led to the discovery of design patterns as effective solutions. However, the formalization and naming of these patterns, along with the rules for their application, were distinct acts of invention that codified and communicated this discovered knowledge in a reusable, mathematical way.
Our work is a continuous cycle of recognizing existing mathematical structures and then creatively constructing the digital scaffolding around them.
--------------------
Understanding this dynamic, knowing when we are accurately reflecting a discovered truth versus when we are inventing a new paradigm, is crucial for making sound design decisions, ensuring system integrity, fostering innovation, and ultimately, building effective software solutions.
- Masoud Bahrami
YouTube
George Lakoff - Is Mathematics Invented or Discovered?
Donate to Closer To Truth and help us keep our content free and without paywalls: https://shorturl.at/OnyRq
Free access Closer to Truth's library of 5,000 videos: https://bit.ly/2UufzC7
Mathematics describes the real world of atoms and acorns, stars and…
Free access Closer to Truth's library of 5,000 videos: https://bit.ly/2UufzC7
Mathematics describes the real world of atoms and acorns, stars and…
Forwarded from Masoud Bahrami
For a long time, I struggled with complex domains like accounting and payroll. My initial mistake🙋♂️? Thinking I had to invent a better double-entry bookkeeping system or a new way to handle credit/debit equality.
But DDD revealed two profound truths:
🟣 Deep Understanding is Key: The more effort I invested in truly understanding the problem domain the more clearly the right solution emerged.
🟣 Needs vs. Wants: What customers or domain experts express are often just wants. My role shifted to using these wants as clues to uncover the real underlying needs.
I realized my job wasn't to reinvent established accounting principles. Instead it was to discover their true essence and the profound ideas behind them.
At the same, for modeling and designing concepts like ledge, my primary goal was to invent the best solution for them.
A financial ledger, for instance, is far more than just a simple database table separated by year; it's a rich, living concept that demands careful, accurate representation.
But DDD revealed two profound truths:
🟣 Deep Understanding is Key: The more effort I invested in truly understanding the problem domain the more clearly the right solution emerged.
🟣 Needs vs. Wants: What customers or domain experts express are often just wants. My role shifted to using these wants as clues to uncover the real underlying needs.
I realized my job wasn't to reinvent established accounting principles. Instead it was to discover their true essence and the profound ideas behind them.
At the same, for modeling and designing concepts like ledge, my primary goal was to invent the best solution for them.
A financial ledger, for instance, is far more than just a simple database table separated by year; it's a rich, living concept that demands careful, accurate representation.
❤3
🎯 اطلاع رسانی پیشثبتنام ورکشاپ دو روزه معماری
📌 عنوان کارگاه: Designing Goal-Oriented Architecture
🧠 با تمرکز بر حل چالشهای پیشرفته DDD Plus
📅 مدت: دو روز — ۱۶ ساعت آموزشی
👥 مناسب برای: برنامهنویسان، معماران نرمافزار، مدیران محصول و CTOها
📍 بهصورت حضوری / ظرفیت محدود: حداکثر ۱۵ نفر
در این ورکشاپ یاد میگیریم چطور معماری سیستم را از «اهداف واقعی» شروع کنیم ، نه از فریمورکها و ساختارهای از پیشفرضشده.
بهجای آموزش تئوری، روی چالشهای واقعی و پیچیده کار میکنیم.
👇 اطلاعات بیشتر و ثبتنام:
https://domaindrivendesign.ir/product/%d9%88%d8%b1%da%a9%d8%b4%d8%a7%d9%be-designing-goal-oriented-architecture-with-ddd-plus-challenges/
👇لینک مستقیم فرم پیش ثبتنام:
کلیک کنید
📌 عنوان کارگاه: Designing Goal-Oriented Architecture
🧠 با تمرکز بر حل چالشهای پیشرفته DDD Plus
📅 مدت: دو روز — ۱۶ ساعت آموزشی
👥 مناسب برای: برنامهنویسان، معماران نرمافزار، مدیران محصول و CTOها
📍 بهصورت حضوری / ظرفیت محدود: حداکثر ۱۵ نفر
در این ورکشاپ یاد میگیریم چطور معماری سیستم را از «اهداف واقعی» شروع کنیم ، نه از فریمورکها و ساختارهای از پیشفرضشده.
بهجای آموزش تئوری، روی چالشهای واقعی و پیچیده کار میکنیم.
👇 اطلاعات بیشتر و ثبتنام:
https://domaindrivendesign.ir/product/%d9%88%d8%b1%da%a9%d8%b4%d8%a7%d9%be-designing-goal-oriented-architecture-with-ddd-plus-challenges/
👇لینک مستقیم فرم پیش ثبتنام:
کلیک کنید
مکتبخانه DDD
ورکشاپ Designing Goal-Oriented Architecture: with DDD Plus Challenges | مکتبخانه DDD
دوره آموزشی دو روزه معماری Goal-Orinted Architecture بصورت عملی و مبتنی بر سناریوهای DDD Plus
کانال مکتبخانه DDD
🎯 اطلاع رسانی پیشثبتنام ورکشاپ دو روزه معماری 📌 عنوان کارگاه: Designing Goal-Oriented Architecture 🧠 با تمرکز بر حل چالشهای پیشرفته DDD Plus 📅 مدت: دو روز — ۱۶ ساعت آموزشی 👥 مناسب برای: برنامهنویسان، معماران نرمافزار، مدیران محصول و CTOها 📍 بهصورت…
✨صبح همگی عزیزان بخیر🌱
ظرفیت پیشثبتنام کارگاه Designing Goal-Oriented Architecture در کمتر از یک روز تکمیل شد! از استقبال شما سپاسگزاریم.❤️ 🙏
به زودی با عزیزانی که موفق به ثبتنام شدن تماس میگیریم تا مرحله بعدی رو تکمیل کنیم.
برای دوستانی هم که جا موندن: داریم بررسی میکنیم که بتونیم ظرفیت رو یه کوچولو بیشتر کنیم! اگه شد، همینجا اطلاع میدیم 💬👀
ظرفیت پیشثبتنام کارگاه Designing Goal-Oriented Architecture در کمتر از یک روز تکمیل شد! از استقبال شما سپاسگزاریم.❤️ 🙏
به زودی با عزیزانی که موفق به ثبتنام شدن تماس میگیریم تا مرحله بعدی رو تکمیل کنیم.
برای دوستانی هم که جا موندن: داریم بررسی میکنیم که بتونیم ظرفیت رو یه کوچولو بیشتر کنیم! اگه شد، همینجا اطلاع میدیم 💬👀
Forwarded from Masoud Bahrami
🚀 Need advanced date/time manipulation in .NET?
I'm excited to announce the release of Quantum.Tempo v1.0.0, a powerful, calendar-agnostic date/time framework for .NET!
🔹 Intuitive string-based API for dates, times, intervals, and durations
🔹 Supports multiple calendars: Gregorian, Persian (Shamsi), Hijri, and custom
🔹 Recurrence rules (RRULE), interval algebra, fuzzy date parsing, and timezone support
🔹 Comes with a handy REPL CLI for interactive exploration
🔹 Fully ISO-compliant and localization-ready
Check it out on NuGet:
👉 https://www.nuget.org/packages/Quantum.Tempo/
🌟 Try it, contribute, and let's make date/time handling in .NET simpler and smarter!
I'm excited to announce the release of Quantum.Tempo v1.0.0, a powerful, calendar-agnostic date/time framework for .NET!
🔹 Intuitive string-based API for dates, times, intervals, and durations
🔹 Supports multiple calendars: Gregorian, Persian (Shamsi), Hijri, and custom
🔹 Recurrence rules (RRULE), interval algebra, fuzzy date parsing, and timezone support
🔹 Comes with a handy REPL CLI for interactive exploration
🔹 Fully ISO-compliant and localization-ready
Check it out on NuGet:
👉 https://www.nuget.org/packages/Quantum.Tempo/
🌟 Try it, contribute, and let's make date/time handling in .NET simpler and smarter!
www.nuget.org
Quantum.Tempo 1.0.2
Quantum.Tempo is a powerful, calendar-agnostic .NET library for intuitive and ISO-compliant manipulation of dates, times, intervals, and durations. It supports Gregorian, Persian (Shamsi), Hijri, and custom calendars using a clean, string-based API. Features…
Forwarded from Masoud Bahrami
💡Sequencer Design Pattern
In my experience modeling and designing complex domains, I've utilized not only existing design patterns and heuristics but also developed a unique perspective on problems.
I’ve observed that many issues inherently possess a sense of repetition and circularity. For example, an hour can be modeled as a sequencer that completes 24 cycles, encompassing minutes that each complete 60 cycles.
Similarly, consider how a dollar is represented in cents; after every 100 cents, it wraps into a dollar.
To address these types of problems, I introduced the Sequencer Design Pattern, which can be beneficial in various situations.
Read the article and see examples here👇
https://masoudbahrami.com/article/introducing-sequencer-pattern/
In my experience modeling and designing complex domains, I've utilized not only existing design patterns and heuristics but also developed a unique perspective on problems.
I’ve observed that many issues inherently possess a sense of repetition and circularity. For example, an hour can be modeled as a sequencer that completes 24 cycles, encompassing minutes that each complete 60 cycles.
Similarly, consider how a dollar is represented in cents; after every 100 cents, it wraps into a dollar.
To address these types of problems, I introduced the Sequencer Design Pattern, which can be beneficial in various situations.
Read the article and see examples here👇
https://masoudbahrami.com/article/introducing-sequencer-pattern/
Masoud Bahrami
Introducing The Sequencer Pattern
Learn the Sequencer Pattern: a behavioral design pattern for bounded, wrap-around progressions (time, currency, buffers). Includes UML, JS examples, test strategy, and composition best practices.
❤1
🎯 ثبتنام عمومی برای ورکشاپ Goal-Oriented Software Architecture (GOA) شروع شده است.
همانطور که قبلاً اشاره شد، این کارگاه دو روزه با تمرکز بر حل چالشهای پیشرفته DDD Plus برگزار میشود و به شما کمک میکند تا:
🟣 یاد بگیرید چطور معماری سیستم را از «اهداف واقعی» شروع کنید.
🟣 به جای تئوری، روی چالشهای پیچیده و واقعی کار کنید و تجربه کسب نمایید.
ظرفیت این دوره به صورت حضوری و محدود است.
📅 مدت: دو روز — ۱۶ ساعت آموزشی. تاریخ 27 و 28 شهریور 1404
👥 اگر برنامهنویس، معمار نرمافزار، مدیر محصول یا CTO هستید، این کارگاه برای شما مفید میباشد.
برای اطلاعات بیشتر و ثبتنام، از طریق لینک زیر اقدام کنید:
https://evand.com/events/masoud-bahrami-goa-workshop
برای آشنایی عمیقتر با مفاهیم، میتوانید مقالههای زیر را مطالعه کنید:
🧠 Goal-Oriented Architecture: https://masoudbahrami.com/article/introducing-goal-oriented-software-architecture/
❓DDD Plus Challenges: https://domaindrivendesign.ir/tag/ddd-plus/
منتظر دیدار شما در این ورکشاپ کاربردی هستیم.
همانطور که قبلاً اشاره شد، این کارگاه دو روزه با تمرکز بر حل چالشهای پیشرفته DDD Plus برگزار میشود و به شما کمک میکند تا:
🟣 یاد بگیرید چطور معماری سیستم را از «اهداف واقعی» شروع کنید.
🟣 به جای تئوری، روی چالشهای پیچیده و واقعی کار کنید و تجربه کسب نمایید.
ظرفیت این دوره به صورت حضوری و محدود است.
📅 مدت: دو روز — ۱۶ ساعت آموزشی. تاریخ 27 و 28 شهریور 1404
👥 اگر برنامهنویس، معمار نرمافزار، مدیر محصول یا CTO هستید، این کارگاه برای شما مفید میباشد.
برای اطلاعات بیشتر و ثبتنام، از طریق لینک زیر اقدام کنید:
https://evand.com/events/masoud-bahrami-goa-workshop
برای آشنایی عمیقتر با مفاهیم، میتوانید مقالههای زیر را مطالعه کنید:
🧠 Goal-Oriented Architecture: https://masoudbahrami.com/article/introducing-goal-oriented-software-architecture/
❓DDD Plus Challenges: https://domaindrivendesign.ir/tag/ddd-plus/
منتظر دیدار شما در این ورکشاپ کاربردی هستیم.
نقطه | جایی که هر چیز آغاز میشود.
سلام دوستان عزیز و گرامی ✨
میخواهیم از «نقطه» بگیم.
نه یک نقطهی ساده؛ بلکه نقطهای که آغازگر همه چیز است.
نقطهای که برای نویسنده اولین واژه است، برای نقاش اولین ضربه قلممو و برای ما برنامهنویسها، اولین خط کد.
همان جرقهای که از دلش معماریها، محصولها و مسیرهای بزرگ ساخته میشوند.
ما باور داریم:
هر ایدهای از یک نقطه شروع میشود.
یک نقطه در ذهن، یک نقطه روی تخته سفید، یک نقطه در اولین commit.
نقطه، جایی برای گردهمآیی ماست.
جایی برای همفکری، برای بازگشت به اصول و برای کشف کردن. جایی که از یک نقطه، یک مسیر میسازیم و از یک ایده، یک جامعهی پویا.
بهزودی با اولین برنامه میایم، تا اولین نقطهی این مسیر رو با هم بگذاریم.
👀 منتظر خبرهای بعدی باشید...
سلام دوستان عزیز و گرامی ✨
میخواهیم از «نقطه» بگیم.
نه یک نقطهی ساده؛ بلکه نقطهای که آغازگر همه چیز است.
نقطهای که برای نویسنده اولین واژه است، برای نقاش اولین ضربه قلممو و برای ما برنامهنویسها، اولین خط کد.
همان جرقهای که از دلش معماریها، محصولها و مسیرهای بزرگ ساخته میشوند.
ما باور داریم:
هر ایدهای از یک نقطه شروع میشود.
یک نقطه در ذهن، یک نقطه روی تخته سفید، یک نقطه در اولین commit.
نقطه، جایی برای گردهمآیی ماست.
جایی برای همفکری، برای بازگشت به اصول و برای کشف کردن. جایی که از یک نقطه، یک مسیر میسازیم و از یک ایده، یک جامعهی پویا.
بهزودی با اولین برنامه میایم، تا اولین نقطهی این مسیر رو با هم بگذاریم.
👀 منتظر خبرهای بعدی باشید...
❤6