You can pay now or pay later but trust me you’re gonna pay! I’m talking about Technical Debt… Technical Debt like any other Debt has Interest, so you can pay now or pay later but if you pay later it will be much more expensive. See this post on the Increasing cost of Technical Debt for more info.
The short version is defects are said to have a 1x cost at design time but costs increase exponentially as you build, test approaching production. The simple point is that the earlier that we find and resolve issues and defects the less it costs. Anything that we can do simplify or speed up this process of finding and documenting defects reduces our Debt. We want to make a Shift Left in quality by moving quality checks closer to the beginning of the delivery pipeline where defects are cheaper to fix. By creating Test Cases based on the customer requirements and success criteria we can ensure that our tests are mapped to business value. This is no substitute for Unit Tests written at the Function or Method level as used in Unit Testing. Plan for chaos, write test to detect it and buffer team capacity to fix it (more on that in a future post).
We geek out with no limits on Facebook @ProDataMan there will be posts about underwater hotels that have nothing to do with Programming, SQL Sever or DevOps but it will always be cool High Tech stuff…
Follow us on Twitter @ProDataMan to be notified when we add a new video to a Playlist on the YouTube channel. Currently Curating Cucumber Acceptance Testing Videos for a course I’m working on. Twitter follower will get a notification every time I add a new Cucumber Video to the Agile Testing playlist.
The ProDataMan YouTube channel @ProDataManTrains focuses mainly on Information Technology Topics with Demos and How To Videos. ProDataManTrains also Live Streams Agile and DevOps related topics from live courses.
On the ProDataMan blog we try to stick to Information Technology related topics. There will occasionally be a topic too good to pass up like the recent sale of Google Assistant Smart Speakers at Best Buy for $29. The Insignia (Best Buy’s Brand) Smart Speaker with Google Assistant with far better sound and bass response than the $129 Google Home.
While cryptocurrencies in general and Bitcoin in particular are the primary application that brought blockchain into the limelight, the potential of blockchain in the enterprise extends far beyond cryptocurrencies. As we’ll see in subsequent blogs, companies in financial, energy, medical, supply chain management, logistics, cloud computing, etc. are now investing in and launching proof of concepts to get ahead of the coming operations and technology changes in their enterprise systems.
The real power of blockchain will be realized as the technology gets adopted by industries such as:
Banking & Finance
Some of the startups launching Decentralized Applications (Dapps) include Storj, which is a decentralized storage solution. There’s also technical conversation about how to launch domain name server (DNS) on blockchain to prevent denial of service (DoS) attacks.
Blockchain is rapidly gaining adoption in the enterprise. A significant percentage of fortune 500 companies are either building external facing commercial blockchain platforms (Microsoft, Amazon, Oracle, etc) or deploying proof of concept within their operations. This means that –
How to introduce blockchain to your organization especially teams already using DevOps
Knowledge base for blockchain solutions and strategies
Increased demand for blockchain developers
Timeline for blockchain widespread blockchain adoption
We will be exploring these topics in subsequent articles
Blockchains are comprised of single blocks chained together to form a single chain or single main chain and multiple side chains.
Single (Main) Chain
As the name implies is a single on the main chain in the blockchain. Here, the main chain validates and processes all blocks and transactions.
Multi (Side) Chain
Because all transaction or requests must be verified prior to execution, it can put a tremendous overhead on the processing power of the main chain. So, there is a new technology being adopted (Ethereum already has this implemented) that allows a fork in the main chain into a side chain or child chain.
A side chain is usually defined for one specific task. There can be multiple side chains where each is performing a different task. Side chains are implemented in order to maximize transaction (keep in mind that could be requests for action) processing efficiency.
Suppose DevOps requirement is to put change management on the main chain. Side chains can be created to optimize for transactions that require monitoring and immediate response (such as approvals) and another side chain for processes that are time consuming and require team/operational coordination such as testing.
Fig 1. Main chain and side chain
In this scenario, we see that branches can be created from the main chain in the blockchain. Example, if the main chain represents the overall business objective, and the branches or side chains represent processes, business groups or divisions. A transaction in the main chain can call on processes in the side chain to be executed, validated and reported back to the main chain. This methodology can alleviate some of the overhead that can slow down the main chain.
Blockchain is an append-only electronic distributed ledger database technology. The protocol ensures that each block of data is tamper proof, secure, decentralized, verified and fingerprinted (or hashed) before it is appended to the chain.
For example: Currently, most enterprise companies like Facebook, Amazon and Microsoft run a data monopoly, meaning that all user data that are collected are stored in a central database controlled by the entity. The user has little to no control on how that data is used, shared, stored, updated, etc.
Blockchain is an append-only electronic distributed ledger database. While the term “Blockchain” is relatively new, the underlying technologies have been in existence for 20+ years. Blockchain relies on the following existing technologies–
Features At a very high level, blockchain relies on the following existing technologies–
Cryptography – The fact that each blockchain record contains a unique cryptographic hash that is used to track that block, as well as others in the associated chain, means data cannot be modified (immutable). That makes it perfect for record keeping and auditing purposes.
Distributed Ledger Technology (DLT) – What makes a blockchain a special kind of ledger is that instead of being managed by a single centralized institution, such as a bank or government agency; rather, copes of the data are stored on multiple independent computers within a decentralized network. No single entity controls the ledger. Any of the computers on the network can make a change to the ledger, but only by following rules dictated by a “consensus protocol. Any changes made to the ledger are then broadcasted to all the nodes on the network. Then all nodes are updated to reflect those changes.
Consensus Algorithm – a mathematical algorithm that requires a majority of the other computers on the network to agree with the change. Consensus protocol comes in 2 flavors –
Permissioned and Permissionless
Within this general framework are many variations. There are different kinds of consensus protocols, for example, and often disagreements over which kind is most secure. There are public, “permissionless” blockchain ledgers, to which in principle anyone can hitch a computer and become part of the network; these are what Bitcoin and most other cryptocurrencies belong to. There are also private, “permissioned” ledger systems that incorporate no digital currency. These might be used by a group of organizations that need a common record-keeping system but are independent of one another and perhaps don’t entirely trust one another—a manufacturer and its suppliers, for example.
Once a consensus generated by that algorithm has been achieved, all the computers on the network update their copies of the ledger simultaneously. If any of them tries to add an entry to the ledger without this consensus, or to change an entry retroactively, the rest of the network automatically rejects the entry as invalid.
Immutability – As mentioned above, data recorded on each block, once verified and accepted via consensus by all the nodes, cannot be modified or deleted. Any attempt to modify or delete a data on a block will render that block as well as the prior block non-compliant and therefore unacceptable.
Smart Contracts – are programmed instructions that are automatically executed when certain conditions are met. Smart contracts are similar to IF THEN ELSE statements embedded in contracts. Ex- do something (e.g., release code) if something else is true (test of code is completed and approved). Example, an attorney might create a smart contract “will” that is stored on a blockchain. In that case, in the event of an event, then the will is executed automatically, precisely as the owner stipulated without any human intervention or misunderstanding of the intent of the owner.
Trustless – Historically, society has relied on centralized authorities to establish trust between unknown parties in order to facilitate transactions and to execute contracts. These central authorities have served as custodians of trust for the millennia. Just imagine doing any business today without third party intermediaries. This is about to change thanks to blockchain. Because it is decentralized, transparent to all stakeholders and immutable, blockchain has trust built into its operations so it does not rely on a third party with a siloed and centralized database which are often subject to tempering and hacking.
Hashing – Takes the input on a given block in addition to the hash of the prior block and runs it through SHA-256 hashing algorithm and produces a new hash function that is then used to secure its place in the chain of blocks. This is one of the secure features of blockchain that makes it immutable and difficult to hack. If the content on a block is altered, then that block will be rejected by the blocks prior and after that block. So the only way to compromise a block is to solve a complex mathematical problem that alters the particular block and all other blocks before it along with all the decentralized block in the network. All these has to be done in a specific time limit for it to be accepted.
Edit: Interesting how much has changed in just 3 short months Bitcoin is trading today 08/06/2018 at $7,632 ($3,941.67 11/25/2018) compared to August 16th, 2010, when it was trading at $0.07 per coin. Bitcoin actually went up to $15,825 per coin on December 2017. The meteoric rise in Bitcoin value and other cryptocurrencies has led to the misunderstanding that Bitcoin and Blockchain are one and the same thing. That would be similar to assuming that TCP/IP and email are the same thing. While it is true that most people would probably never hear of blockchain without the current bitcoin buzz. The 2 are very different things. Analogous to the early days of TCP/IP and the internet, it requires a compelling application like email or online commerce/payment in order to facilitate widespread adoption. Bitcoin happens to be the first viable application with compelling business disruption potential, investment incentives, financial rewards for investors, and global interests, to run on the Blockchain protocol. While the term “Blockchain” is relatively new, some of the underlying technologies have been in existence for decades.
Historically I have been a Microsoft C# guy but the more I work with non-Microsoft shops with Hybrid environments and Java guys running around everywhere the more curious I have become about open source tool chains for Agile and DevOps.
We use Team Foundation Services for Work Item Tracking, Planning, Continuous Integration, and Continuous Deployment to QA and Stage in Azure. That’s all fine and good for projects built almost entirely on the Microsoft Platform but when there are more Java guys on the team than C# guys the holy wars begin.
I love the deep Integration between the tools on the Microsoft stack obviously born from vendor lock in but I am totally open to a more open-source, vendor agnostic solution. I just haven’t been able to find one that provides the required features I’m looking for.
Base level requirements are as follows:
A tool that provides Epic / Story management and visualization (Kanban / Burndown).
A tool for Source / Version control that integrates well with the work item tracking tool and CI server to allow gated check-ins (reject check in if build or tests fail)
A Continuous Integration server that can notify source control of failed builds and tests so check in can be rejected and notifies the work item tracking tool so that a bug work item can be created and assigned to the user who performed the commit of bad code.
A release automation tool / plug in that can trigger a release based on successful CI build and test.
Does this tool chain only exist in the land of flying reindeer and unicorns?
Git and GitHub work fine for source / version control and integrates with almost everything but gated check-ins and automatic bug creation had been elusive thus far.
Anyone have this working already? Any suggestions?
If you database has no Time or Date table you can use the Dimension Wizard in SQL Server Data Tools (SSDT) to generate your Time Dimension. You can have the tool generate a Time Table either in the data source (if you have permissions) or on the Server. When creating your Time Table using the Wizard you have the option to specify the Time or Date range the Table will include dates / times between your specified start and end points.
See the article on MS Docs below for more details on creating Time Dimensions automatically using the Dimension Wizard
Looking for the best open source tools for running agile projects. The goal of this little experiment is to create a CI / CD pipeline including planning, task management, source control / versioning, triggered build and test and deployment to the cloud.
Today I’m experimenting with Taiga an open source planning and task management tool. So far the interface is intuitive and it has most of the features and data points that I would expect to capture during planning.
For free you can have 3 team members and 1 private project (unlimited public projects). There are Epics, Stories and Sub-tasks to track. There are Sprints, Backlogs and Kanbans to view. It even has an issue tracker and a wiki. You can even link your project timeline to a slack channel to share project updates.
So far this tool is looking pretty good for free. Are there other free tools that I should be looking at? Looking for integration with Git and Jenkins to automate builds and tests. The golden feature is Gated Checkins! If there is a free open source solution that allows association of an assigned sub-task on checkin to version control then triggers a build in Jenkins and creates an issue (bug) in work item tracking if the build or tests fails or deploys to the cloud if successful the contest is over! If you know of this magical free toolset please leave links in the comments.
I’ll post a video and screenshots shortly with a more detailed review.
I have a few smart speakers scattered around my place from both Amazon and Google and both have their strengths and weaknesses. However when it comes to usefulness as a nightstand alarm clock devices from both companies fall short.
First the Google home and Google Mini do not have screens to view the current time so you are left to ask what time it is and hope the volume isn’t so loud that you wake everyone in the house. The Amazon Alexa and Dot devices are no different.
The Google Home Hub and the Echo Show do better as they both have a display to view the time, photo and video content as well as other visual information. However both devices lack what i consider to be a crucial, make or break, deal breaking feature… A USB port to charge my device while I sleep! I would be happy with a wireless charging pad on top or in the back… But no way to charge my phone at all?? This is an absolute requirement IMO for a device to be considered for the nightstand.
This device however has a USB charging port to charge my phone. Charge speed doesn’t matter as I will be asleep for at least 4 hours… It has a screen so I can see the current time. And the alarms can be set with your voice so no need to fumble with buttons. For $25 on sale you can’t beat the price! You can’t buy and Alexa Dot or Google Mini for close to that (double that in most cases)
I’m ordering one now… I’ll update this post once it’s on the nightstand.