tag:blogger.com,1999:blog-79008406350649937882024-03-14T08:17:05.494+05:30Bits from the software front...Bits and pieces from the software development scene.. things seen, heard and felt first hand...Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.comBlogger66125tag:blogger.com,1999:blog-7900840635064993788.post-37590703606078298142023-10-28T11:59:00.005+05:302023-10-28T12:01:25.007+05:30Destructibility Unveiled: From Artifacts to CosmosPrelude:The concept of destructibility is a universal and profound theme that touches both tangible and intangible dimensions of our existence. It reminds us of the inherent impermanence and transience not only of human-crafted artifacts but also of life itself. To delve deep into this concept, we embark on a journey that starts with exploring its philosophical roots. In particular, we draw Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-15371051710041737572021-06-14T11:37:00.000+05:302021-06-14T11:37:05.405+05:30Event-Trees and data structure selection – (notes) Event chains, a representation of events stored using a Block-Chain/Merkle tree can have many representation strategies. An expansion of the event chains
, which is comparable to a linked list; event trees are comparable with
tree data structure representation of an event chain with many child
nodes and levels.It would be desirable to have a means to dynamically
switch between storage Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-81728432086179767362020-10-19T18:08:00.003+05:302020-10-29T10:46:44.557+05:30Distributed state management — refresherEase of Stateless ServicesDesigning stateless distributed systems are relatively easy. You would have raised an event/message once the service had done processing. You typically are not worried about how the other systems consume your data. In fact in the majority of these scenarios, you don’t care what happens to the message/event after you were done.Think of fire and forget. This could be Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-63693385618437820872020-10-13T12:08:00.001+05:302020-10-13T12:08:26.421+05:30M&A and TOGAFDuring an interesting discussion online on Mergers & Acquisitions, a basic question arose — if we consolidate technologies & tools used across the two merging companies, would it suffice most of the Architecture needs for the new company ?Maybe; but in most cases, No.A more formal approach is required to make sure we do not end up with a half cooked chowder served in a platinum Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-23384242367449441322020-10-13T12:04:00.003+05:302020-10-13T12:04:38.899+05:30EventChainApplying Blockchain to Event SourcingEvent Sourcing pattern at the core requires an event store to maintain the events. What if we add these events as it arrives into a blockchain ? This should effectively make sure the events have not been tampered with. The plan would be to initiate typical blockchain mining after which the event is added to the “block-chain of events” — an “EventChain”.Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-80411831057386713252020-10-12T07:40:00.002+05:302020-10-12T07:41:26.404+05:30Kafka Streams has an edge over Service Fabric ?Compared against the .NET/Azure offerings, the level of abstraction enabled by Kafka Streams for event processing while exploiting underlying Kafka message-topic-queue patterns is pretty neat. Did come across an interesting framework that used C# libraries over Kafka Streams by @tonysneed in GitHub too here : https://wp.me/pWU98-1v2 Hope Service Fabric Mesh Reliable Actor or Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.comtag:blogger.com,1999:blog-7900840635064993788.post-29357619692625527962019-06-29T12:41:00.000+05:302019-06-29T12:41:37.508+05:30Software Engineering lost in the cloud?
It would seem the cloud is making you a lazy software engineer. Engineers these days are now have a ready answer for most of the architectural and design concerns - "its taken care at the cloud". This perception is scary and appears to makes any tom-dick-harry engineer with minimal to zero computer/software knowledge "become" "master" software-engineer overnight.
This halo is bothering. Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-62995110885693201202019-01-12T23:19:00.005+05:302019-01-17T12:21:55.485+05:30ServerFULL deployments
Moving away from Typical service deployments
Rather than have services typically tied to a set of machines and load balanced as-is today in the SOA/SaaS/Microservices world, what if we could just throw a set of servers and get them be assigned/allocated dynamically and more specifically, attain tight packing of services on the same hardware ?
Though mostly exploited on the Cloud with AWS LamdasNitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.comtag:blogger.com,1999:blog-7900840635064993788.post-66962660287966248742018-07-11T10:00:00.001+05:302019-01-17T12:22:28.306+05:30Structural Imbalance - In Software Systems
We come across many instances in the industry where "code-lumps" get deployed as software services/products with a beautiful UI included to cover up all the ugliness underneath. The design document too look fancy with usages of software patterns neatly listed. After all this stunt, these modules end up with a short life-span and before long, there are in-numerous critical issues being raised.&Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-29439597456435423502013-08-09T10:42:00.003+05:302013-08-09T10:42:23.021+05:30Self-optimization in Distributed caches.
Self-optimization in Distributed caches.
Distributed caches are systems where the cache
data/objects are stored across distributed nodes/machine. When a data is
stored/retrieved by the consuming application, one or more of systems in the
distributed system serve the request. This paper attempts to identify self-optimization
techniques that could be applied to this distributed cache. For a Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-51682317211956618612013-05-26T17:09:00.000+05:302013-05-26T17:09:53.870+05:30Need of the hour : Strong mobility in .NET based distributed applications.Typically, distributed application written in .NET are either code distributed (assemblies moved across machines/nodes) or data distributed (data serialized across machines/nodes). What might additionally be required is strong mobility of process/thread/ TPL task/fiber etc. This effectively means serializing a task/thread with its execution context too. Once this is implemented, this means that aNitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-1670122146336792812013-05-25T08:43:00.001+05:302013-05-25T08:43:33.280+05:30Message ReSequencing in a Distributed Publisher-Subscriber System
Message ReSequencing in a Distributed
Publisher-Subscriber System
In a typical cloud based distributed
environment with many message publishers and subscribers, the message could be
processed by any of the subscriber and this is usually not predictable. In
certain scenarios, it could be necessary to have a group of messages processed
in sequence though they reached the subscribers randomlyNitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-35732065794008641682012-11-15T11:23:00.000+05:302012-11-15T11:23:03.794+05:30Tyco Security Products - Bangalore OpeningsTyco Security Product Bangalore team looking out for a lead engineer and a build engineer.
Find details here : http://sdrv.ms/SBx1g1Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-40628534930254829192012-06-11T22:35:00.000+05:302012-06-11T22:35:19.504+05:30Assembly Line Programming - a practise for better code.
With availability of skilled programmers on the decline, software development firms need to look at alternate approaches for quality software release. A possible approach being multi-level-programming/ assembly-line programming(just coined)
Engineers based on their expertise could be placed in a particular level/rank, with any software development task to be picked up by the lowest of the Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-59230492319721120712012-03-29T11:19:00.001+05:302019-01-17T12:23:33.833+05:30Interpreting software capabilities - smartly ?What level of /intelligence/ does a software need such that it can interpret the capabilities / functions of another software?
a. Given the codebase for one software component, can it parse, deduce what the other software is trying to acheive ? (could be called : white-box analysis)
b. Can it watch the way this software component behaves in different situations (inputs) and then deduce behaviorNitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-58003754702059917482012-03-23T08:19:00.000+05:302012-03-29T11:11:34.579+05:30SessionFlow - seamless flow of sessions & context across devices
Typical pain point – you are chatting/composing message/browsing
on your mobile and now that you have reached home, you want to switch to your
iPad/your favorite other device.
Solution – Track mobile device orientation(gyro) change + the
GPS location. If one device is getting tilted clockwise relative with the other
device just below it (think about water flowing Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-23837441531633920822012-03-06T13:46:00.000+05:302012-03-06T13:46:18.140+05:30Copying Images & Hyperlinks from a docx to another.
Copying the textual data from an openxml based docx file was pretty OK - you just had to copy all the child nodes of //body node from the source to the destination.
Conceptually this would be in the lines of :
1.) load the source document's MainDocumentPart.Document to a XmlDocument.
2.) load the destination document's MainDocumentPart.Document to another XmlDocument.
3.) locate //body child Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-54153604049519288322012-02-02T21:59:00.000+05:302018-07-08T12:15:38.306+05:30Humans and Human body as the final Architectural reference point.Its an interesting perspective to consider humans, their means of interaction with others including other humans, animals, machines, their growth, evolution, human anatomy among others as a software architecture reference point.
Given a scenario for high load data transactions that come in, how would a typical single human handle it? How would many humans handle it? In case of multiple Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com2tag:blogger.com,1999:blog-7900840635064993788.post-10760315530802201022012-01-01T15:51:00.001+05:302012-01-01T15:54:30.586+05:30COTS Architectures - sure shot architecture anti-pattern.The typical trend in software architecture definitions of these days appear to be what I prefer to call 'COTS Architectures'. Why 'common-off-the-shelf' ? You take these architecture 'solutions' and it appears to be applicable for nearly all enterprise requirements!. These COTS Architectures appear to be used right from pre-sales proposals and typically would have the following (in a logicalNitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com1tag:blogger.com,1999:blog-7900840635064993788.post-16163800190977012232012-01-01T13:35:00.000+05:302012-03-06T13:56:05.902+05:30Rooting days are here again - custom ROM, S-OFF and some free time -> God ModeIt is definitely quite an experience to root an Android device with all sorts of custom ROM readily available. Reminds one of the early slackware days at college when getting to see the console itself was termed a success. With my HTC Desire HD having seen enough of its stock ROM and with some time at hand , it was yet that time again !
Rooting was pretty straightforward while religiously Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-16975338573990915312011-09-11T08:39:00.001+05:302011-09-11T08:51:29.051+05:30Distributed apps and the browserWondering what the possibilities of exploiting the browser are to execute distributed applications, hopefully extending around http://des.codeplex.com
Would be cool if browser users could voluntarily share their machines computing power for distributed application needs.
Why browser ? Simply because that is the most used app in an internet connected environment.
Possibilities :
1Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-86834885705160039922011-08-16T08:06:00.006+05:302011-08-16T08:06:00.644+05:30ConsistentHash implementation in C# 4.0For those not familiar with ConsistentHash, start here: Consistent Hashing
The following is an attempt to implement the functionality using features of C# 3/4. I needed this functionality for the distributed cache project that I was working on (Available at HoC )
namespace HoC.Common
{
public class ConsistentHash : ICloneable
{
SortedList<string, string> itemCircle = Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-37489193021631078482011-08-10T10:01:00.000+05:302011-08-10T10:01:43.144+05:30Object Pool - Quick and Short in .NET 4.0A simple object pool that could be used to maintain a set of objects readily available in memory, especially if you see that the object creation time is heavy. Eg:- creation of a MemoryStream on a need basis is typically time consuming in a server based app. In this case, it could best to have a set of MemoryStream objects readily available in memory. But, we definitely have to make sure to Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-74352832935704436732011-07-15T21:31:00.001+05:302019-01-17T12:25:45.334+05:30Tree-Of-Trust
Overview
Enterprise applications of today are no longer independent, but dependent on other applications, services and components for completing their functionality. Authenticating/Trusting another application typically requires having a new authentication/identity management module written for each new application that is integrated. With the advent of claims based/token based authentication, Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0tag:blogger.com,1999:blog-7900840635064993788.post-37637817275507748412010-11-20T22:14:00.001+05:302010-11-20T22:19:42.837+05:30Enterprise Architectures - skills, perspectives and insights - Tom Graves repliesTom Graves has given deep insights (bit philosophical, but reality ) on building up skills on enterprise architecture from a professional and personal perspective; a query I had raised him earlier.
Read more here : http://weblog.tomgraves.org/index.php/2010/11/20/creating-a-career-in-enterprise-architecture/Nitin Koshyhttp://www.blogger.com/profile/14545332672510258866noreply@blogger.com0