Thursday, December 30, 2021

Faster than ever Everscale on Rust!

 

Bye FreeTON and welcome Everscale! Recently the project got re-branded and now you can find it under the new name - Everscale, which symbolizes its breakthrough scalability and increadible throughput that was shown on the new Rust-based implementation, reaching 55000 transactions per second

As implementation has changed to Rust, so should change infrastructure that deploys new node in a new way. Thus SuTon project that was started initially with CPP node and participated in the MagisterLudi competition now also changing and supporting Rust implementation as well. Along with that, SuTon was also participating in the RustCup - that's exactly the one that showed 55k TPS. As a side-note, RustCup was actually pretty long and even exhausting journey, it lasted 6 month during which nodes had to be re-deployed and re-configured countless number of times and in timely manner (otherwise you miss rounds), along with that, debugged as you never know whether a node not working cause of configuration mistake or just chain (yet again) collapsed (which happened many, many times). 

However, all in all it was worth it for the Everscale, as in the end RustCup showed incredible 55k TPS and just 3 month later MainNet is also running on the Rust implementation! 

The SuTon project is now also fully ready and supports Rust nodes, and in addition to this has better internal structure, interfacing validation logic as well as supporting both Fift and Solidity based electors. 
Participation in the RustCup help to nail and polish implementation and verify that it actually works under high load and is able to deploy fast and with almost no down-time for the node.

Readme and getting-started guides updated on the github page, so if you are willing to try it out feel free to visit:
jarig/suton: Python and docker based framework to start and provision TON validator node (github.com)


Saturday, August 15, 2020

Managed Identity authentication with Azure WebApp on .Net Core


Would like to share how to make seamless authentication in a WebApp in Azure with Managed Identities (System or User assigned one). 

This approach won't require passing any password/secrets or certificates to WebApp itself, which is pretty convenient thing.

There are 2 type of identities that possible to use - System Assigned, and User Assigned

Wednesday, July 08, 2020

FreeTON Validator Node


FreeTON is inheritor of TON blockchain which effectively got banned due to US court restricted GRM tokens worldwide. However, FreeTON project focuses on new, non-financial, use-cases of TON technologies and strives to bring this unique blockchain back to the world. 

FreeTON also going to have own tokens (as every blockchain) named Rubies and going to distribute those conducting several contests. One of such is Validator contest, where devops skills will come handy and the goal is to rollout own Validator node, as well as bring up logic that going to make stakes via this node and by that participate in Proof-of-Stake validation cycles confirming transactions in the blockchain.

I would like to share own solution that brings up Validator Node (full-node) from scratch as well as deploys application that can communicate with the node and perform staking, along with monitoring the node.

I called it SuTon (kind of short of Sudo Ton), as it ultimately it will allow you to control the node in every possible way. 
Github with code and instructions is here: https://github.com/jarig/suton

The main idea behind the architecture was to make node safe and expose as less as possible number of ports, hiding full-node from the outer world, however at the same time having possibility to control it and monitor.

Wednesday, January 01, 2020

Nested Git repository support for Atom editor

Our 200 repository project for Chef consist of many nested repositories (one 'base' repo with essentials, which in turn contains 'cookbooks'). This was quite big frustration and super-inconvenient to use editors neither of which were supporting nested Git repos in full. Atom has in general good Chef support (via extensions), but nested Git repositories still not supported (at least by the time this article is written).

This is especially frustrating when several cookbooks modified and there are no indicators of what's already committed, what files were touched added, removed or modified in the end.

So, I've modified 'tree-view' component - one of core components Atom has, which is responsible for showing directory view on the left, so that now it shows statuses of all nested repositories (no matter how deep nesting is) giving good overview on the changes being made.

Here is example how it looks:

repo_highlights


Unfortunately Atom maintainers in the end closed suggested Pull Request -
https://github.com/atom/tree-view/pull/469

Reasoning is unclear and vague.
However, I've made release of tree-view from own fork.

Notes:

Works quite well even with >200 nested .git repos, though with some minor limitations:
  1. If there are a lot of nested. git repos then start-up time might noticeably increase(with ~200 repos it was 10 sec). The reason is that GitRepository object seems to be not fully async while refreshing status.
  2. Status refresh of GitRepositry objects on window_focus event is disabled, so if repos changed out of the Atom it might reflect wrong status. But there is option (right-click or assign shortcut) to force-refresh status of a subtree (recursively) or specific repo.

    or via command palette.



Download tree-view:
https://github.com/jarig/tree-view/releases/download/0.228.0-jarig/tree-view.zip

Installation instructions:
  • Unpack contents to ~\.atom\packages\tree-view
    (on windows C:\Users\[username]\.atom\packages\tree-view)
  • Re-open Atom
Atom might show bug icon in the status bar, asking to rebuild packages - do that in this case and tree-view will appear after Atom reload (ctrl+k to toggle tree-view back).




Verified to be working with Atom version 1.42.0


Monday, December 23, 2019

Vue + Electron + TypeORM, nice combo with small tricks


Found very neat combination of modern technologies that makes cross-platform desktop app development much easier:
- VueJS
- Electron
- TypeORM

VueJS actually has tutorial for creation of simple project, quick steps are:

$ npm install -g @vue/cli @vue/cli-init
$ vue init simulatedgreg/electron-vue test-electron-app

However, once I combined all of that together couldn't make TypeORM to work as it appeared it does mocking if thinks it works in 'browser' mode and disables all its drivers.

Symptom of this is the following error:

TypeError: this.driver.connect is not a function

Spent few days on that, and eventually found resolution. You need to change vue.config.js (which is webpack representative for Vue) and mark typeorm + whatever driver package you use as externals in this way -

  "transpileDependencies": [
    "vuetify"
  ],
  configureWebpack: config => {
    config.externals = {
      typeorm: "require('typeorm')",
      mysql: "require('mysql')"
    }
  }
}

After that all those packages combined will work as expected, giving you all flexbility of Vue, cross-platform and desktop support of Electron as well as powerful ORM with whatever database you've.




Sunday, December 08, 2019

Starting Entrepreneur Career, absolutely the must video to see

Tackled the video which is absolutely the must to see for people who want to start own business, well and actually just interesting and educating in general:



There are many of those videos under this profile, really worth to subscribe.