Posts

Showing posts with the label Architecture

Use Case vs User Story

Image
Allen Holub explains the difference between a use case and a user story  - Bob Martin describes use cases pretty well in his book Clean Architecture :  "A use case is a description of the way that an automated system is used. It specifies the input to be provided by the user, the output to be returned to the user, and the processing steps involved in producing that output." Put another way, a use case describes how a user uses a computer program. A use case describes how to use an existing program, or, if the program can't do everything necessary, it identifies aspects of the program we'll have to create. Use cases live in the implementation space. A user story, on the other hand, is a description of the user's work. It is literally the user's story. The story describes a domain-level problem and, when fleshed out, describes how a user solves that problem when working at the domain level. The story describes the user's work, not ours. A story does not desc...

TOGAF - History and Current Status

Image
Svyatoslav Kotusev explains where The Open Group Architecture Framework (TOGAF) came from, why TOGAF “succeeded” despite being inadequate and what happens with TOGAF now.  He also debunks three other popular misconceptions around enterprise architecture: 1) That enterprise architecture originated only in the late 1980s 2) That current EA frameworks descend from the Zachman Framework 3) That architecture initially was purely technical and only recently expanded into the realm of business The evolution of enterprise architecture planning, started in the early 1960s with methodologies like IBM's Business Systems Planning (BSP) , which laid foundations for current-state, future-state, and action planning.  Numerous consulting firms developed similar approaches, including Arthur Andersen (now Accenture) , Coopers & Lybrand (now PwC) , and Deloitte & Touche (now Deloitte) , but these methods were often laborious, produced incomprehensible deliverables, and were rarely implem...

Grady Booch: A Life in Code – From Fortran to AI, a Software Legend Reflects

Image
Booch's career has spanned several significant eras in the history of computing. His anecdotes from his time working with various companies and technologies provide a unique glimpse into the evolution of the field. Insights The Booch method and C++ developed in parallel and influenced each other. Booch and Bjarne Stroustrup (the creator of C++) even did a lecture series together in the United States. UML was initially conceived as a way to unify three prominent object-oriented methodologies: Booch, Object Modeling Technique (OMT), and Objectory. This led to the collaboration of Grady Booch, James Rumbaugh, and Ivar Jacobson. Booch believes that the shift from UML 1.0 to 2.0, which focused on making UML a precise programming language, was a mistake. He intended UML to be a visual language for reasoning about, visualising, specifying, and documenting software systems, not for generating code . " the entire history of software engineering is one of rising levels of abstraction...

This Week I Learned - Week #49 2024

Image
This Week I Learned -   * “Over time, the architectural diagram is mirrored in the org chart of the organization that designs and builds it.” - James Gosling , the creator of Java, refers to himself as a "Software Engineer"  *  Azure DevOps has been the end-to-end DevOps platform for Microsoft since it replaced Team Foundations Server, but in 2018, Microsoft purchased GitHub and also launched GitHub Actions. This session from PASS Data Community Summit 2023 explains how to set up a CI/CD workflow in GitHub Actions and how GitHub Actions is different that Azure DevOps Pipelines . * Real-time inference means that your deployed model is constantly available on one or several instances, ready to process any data at any moment. Using Batch Deployment rather than processing requests individually in real-time , batch processing can be implemented where data is processed in groups and stored in a database on a regular basis. Open Food Facts processed and spellchecked 10...

This Week I Learned - Week #46 2024

Image
This Week I Learned -   * According to YouTube, over 500 hours of video content is uploaded every minute, and approximately 694,000 hours of video content are streamed per minute. High-level design of a YouTube-like system - Educative.io *  yt-dlp is an open-source and free command-line utility that facilitates downloading videos from a variety of platforms, including Twitter . * With the JavaScript Web Share API, web apps can use the same system-provided share capabilities as platform-specific apps. * Docs as code is a method for creating software documentation with largely the same tools that are used in software development, including : Issue Trackers Version Control (Git) Plain Text Markup (Markdown, reStructuredText, Asciidoc) Code Reviews Automated Tests Microsoft , AWS , Open Food Facts are some organizations that use this technique . * Prometheus was first used in-house at SoundCloud, where it was developed, for monitoring their systems. * Claude swi...

System Design - Learning Resources

Image
 A compilation of learning resources on System Design: ByteByteGo Engineering Blogs of Top Tech Product Companies Dr Milan Milanović High Scalability Educative.io System Design School Dev.to Book:  Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems (2017) by Martin Kleppmann  YouTube has plenty of videos on this topic

This Week I Learned - Week #36 2024

Image
This Week I Learned -  *  Decision tree for Azure Compute Selection in 2018 & 2024 [Image Credit: Microsoft] *  I think EA (and in fact all computing since the very beginning of computing) has always been about “Digital Transformation”.  -  Gideon Slifkin *  How many EAs does it take to change a light bulb ?  None, that's implementation. "EA: We herd the cats to develop the plans."  *  AI is the coming together of two forces that have become more powerful over the last few decades. The first is increasing (and cheaper) computing power, often coming into smaller and smaller packages; our phones are now computationally more powerful than the very first personal computers. The second is the cumulation of data, both quantitative and qualitative, especially with social media accelerating personal data sharing. *  The threat to your job or profession, from AI, will be greater if your job is mostly mechanical, rule-based and objecti...

This Week I Learned - Week #35 2024

Image
This Week I Learned - * The hottest new programming language is English -  Andrej Karpathy. Jan 25, 2023 * The  Top 100 Gen AI Consumer Apps  list by Andreessen Horowitz is updated every 6 months * Claude's Artifacts feature allows developers to make architecture diagrams from codebases * All the useful software architecture tools at one place. * All graphs are charts, but not all charts are graphs . While graphs focus on the mathematical relationship between variables, charts can present data in a more general way, such as through diagrams or tables. * Observable is a platform from the creators of D3 that simplifies building and deploying powerful data dashboards. Observable offers two ways of working: you can build data apps using the open-source Observable Framework to deploy to Observable, or you can work in notebooks. Framework combines the power of JavaScript on the front-end for interactive graphics, with any language on the back-end for data prep...

Thinking Like an Architect - Gregor Hohpe

Image
Author of "The Software Architect Elevator", Gregor Hohpe's reflections on what it actually means to be an architect : Architects aren't the smartest people in the team. They make everyone else smarter. Architects are IQ amplifiers Architects are like the elevator, connecting different levels of the organization "The value of a modern architect is measured by how many floors they can cover." Architects help bridge the disconnect between the people who build things and the folks who make the strategy Architects understand a lot about how organizations work. Architects create alignment across teams and stakeholders. Architects understand layering and its pros and cons Architects understand that the world is not slow-changing, and that layering works well if something is slow-moving Architects understand that the organizational system and the technical system have a lot of similarity Architects use metaphors to invite their audience into the thought process ...

This Week I Learned - Week #29 2024

Image
This Week I Learned -  *  Discourse is an open source platform for community discussion & an alternative to Slack. Open Food Facts uses Discourse, Slack & Wikis for community discussions. *  Guidance for writing text descriptions (alt text) for digital images when creating HTML content *  pyspark.ai  is an English SDK for Apache Spark. It takes English instructions and compile them into PySpark objects like DataFrames. Its goal is to make Spark more user-friendly and accessible, allowing you to focus your efforts on extracting insights from your data. *  Enterprise Architecture on a Page v2.1  [PDF] * IBM's watsonx.ai supports open-source models from Mistral, Saudi Data and AI Authority (SDAIA) & Meta. It includes Mistral's popular Mixtral series of open-source mixture-of-experts models * Claude is now available as an Android app. * Many conversational AI platforms and chatbots require the use of voice datasets. The Vaani projec...

SQL vs NoSQL

Image
Key points from the ScyllaDB technical paper  SQL to NoSQL: Architecture Differences and Considerations for Migration  [PDF] -  While RDBMSs are not fit for distributed deployments, non-relational databases are designed specifically to support such topologies. A number of alternative non-relational database systems have been proposed, including Google’s Bigtable (2006) and Amazon’s Dynamo (2007). The papers for these projects paved the way for Cassandra (2008) and MongoDB (2009).  Despite their origins in a long-forgotten technology cycle, relational SQL databases are by no means ‘legacy’ technology. Some SQL databases, notably PostgreSQL and MySQL, have experienced a recent resurgence in popularity. A new generation of NewSQL databases, notably Google Spanner and CockroachDB, leverage SQL as a query language and offer a distributed architecture similar to that of NoSQL databases yet provide full transactional support. Relational databases are defined in part by...

The Ultimate EA Picture

Image
Gideon Slifkin, Global Architecture Lead at Deloitte shares his perspective of Enterprise Architecture through his LinkedIn posts . The recent discussion sparked by his post on ' The Ultimate EA Picture ' makes for interesting reading. EA is broad The Ultimate EA Picture Security impacts all layers at all levels The World of Architecture According to Slifkin , “The” EA is a collection of various artifacts, Blueprints, Tech Standards, Reference Architectures - all sorts of things really - which collectively can be thought of as “The EA.” The following collectively make up “The EA”: 1. Architecture (ie current, future, roadmap) for each Business Portfolio / Segment / Value Chain (as appropriate) focusing on the Business Capabilities, Business Processes, and Applications / Data and Integration  2. Architecture (ie current, future, roadmap) for each Technology Domain / Segment / Platform (as appropriate) focusing on Technology Capabilities, Use Cases, Tools and Platforms etc 3. Arc...

Engineering Blogs

Image
These engineering blogs are great places to learn about creative ideas and gather insights: Netflix TechBlog   Uber Blog   Cloudflare Blog   Engineering at Meta   LinkedIn Engineering  Discord Blog   AWS Architecture   Slack Engineering   Stripe Blog   Canva Engineering Hotstar Blog DoorDash Engineering The Airbnb Tech Blog StackOverflow Blog OpenAI Blog Medium Engineering Also see: A bigger list of Engineering Blogs

This Week I Learned - Week #37 2023

Image
This Week I Learned -  *  ZXing and QuaggaJS are two popular open-source alternatives to commercial barcode scanning libraries like STRICH . Both libraries are open-source and available under a permissive license. * The JavaScript library available at mebjas/html5-qrcode on Github allows users to add a QR code scanner in their web applications. It works cross-platform and across different devices like PC, Mac or smartphones. Try the end to end implementation at Scanapp .  *  ZXing Barcode Scanner sample by Florian Biebel on CodePen * Jupyter AI 1.0 and 2.0 are out, connecting Jupyter notebooks and JupyterLab with powerful #GenerativeAI language models. Jupyter AI connects Jupyter with large language models (LLM) from providers such as AI21, Anthropic, AWS, Cohere, and OpenAI. LangChain to support all popular LLMs and providers * Large Language Models (LLMs) have transformed the field of Natural Language Processing. The improvement from one generation of LLMs ...

This Week I Learned - Week #32 2023

Image
This Week I Learned -  * HTML condenses whitespaces.  Whitespace is any string of text composed only of spaces, tabs or line breaks (to be precise, CRLF sequences, carriage returns or line feeds). The presence of whitespace in the DOM can cause layout problems and make manipulation of the content tree difficult in unexpected ways, depending on where it is located. Most whitespace characters are ignored by CSS, but not all of them. *  Periodic table  of Elements  created with CSS grid * For some time, containerization was a Linux-only feature. Windows applications could not benefit from containers. That changed with Windows containers and their subsequent support in Kubernetes and Google Kubernetes Engine (GKE). *  Free Datasets for Analytics Projects *  Open Government Data (OGD) Platform - India *  Mastodon is free and open-source software for running self-hosted social networking services.  * There are 15,048 public repositories whic...

This Week I Learned - Week #9 2023

Image
This Week I Learned -  *  “The Good and the Bad” series on the Altexsoft blog  details the pros and cons of the popular technologies. *  Outlook uses OST (Offline Storage Table) and PST (Personal Storage Table) file formats to store the mailbox data on the local storage . OST allows offline access to the mailbox data, and thus, users can compose, draft or send new messages even when the system is offline or disconnected from the Exchange server. The changes made, while offline, are synchronized with the mailbox on the server, and messages (if sent while offline) are delivered to the recipients. However, PST doesn't allow access or changes to the mailbox items while the system is offline. OST files are encrypted by default with MAPIEntryID GUID key while PST files are not encrypted. Unlike the PST file, OST files cannot be imported or accessed through any Outlook account other than the original MAPI profile. However, you can access the OST file and convert it to ...