Programming Leftovers

-
Four P2P distribution tools for Git repositories compared
Git is a version control system that is decentralized by design. Anyone can run git daemon in a repository to start a Git server. You can also host your repository using a regular web server and HTTP infrastructure. More commonly, though, repositories are distributed through centralized hub services like BitBucket, GitHub, and GitLab. It’s quick, easy, and free to “throw your code up on GitHub” and call it a day. However, there is also a growing number of peer-to-peer (P2P) distributed options to consider as well.
What if you could distribute your Git repository using the BitTorrent P2P protocol without the need for a central server? Without having to depend on a commercial business’ hosting-generosity and infrastructure. That’s the idea behind GitTorrent, an experimental Git helper and overlay protocol for transferring Git repositories over the popular P2P protocol.
GitTorrent does away with the idea of a central code distribution server. Instead, it relies on the people who’re using and participating in the project to contribute bandwidth and handle its distribution.
Similar concepts have popped up around other peer-to-peer protocols including Dat Protocol and IPFS. Each implementation has made different implementation choices and ended up with systems that appear similar at first glance but have fundamentally different trade-offs and priorities. In this article, I’ll explore these differences in-depth and do a comprehensive comparison.
-
Enforcing locking with C++ nonmovable types
It is a common mistake that when code is changed, someone, somewhere forgots to add a lock guard. The problem is even bigger if the variable is a full object or a handle that you would like to "pass out" to the caller so they can use it outside the body of the struct. This caller also needs to release the lock when it's done.
This brings up an interesting question: can we implement a scheme which only permits safe accesses to the variables in a way that the users can not circumvent [0] and which has zero performance penalty compared to writing optimal lock/unlock function calls by hand and which uses only standard C++?
-
Why developers are becoming the AI implementation powerhouse
I always thought application developers and software engineers would be great in implementing data science and AI. They can code, they know how to think logically, and they are driven to solve difficult problems. We also see skilled developers working in the marketplace, while data scientists and machine learning engineers are in short supply comparatively speaking. With automated AI lifecycle management tools and the proliferation of cloud AI environments, today’s developers are given an easier onramp to get data science into their skillset arsenal.
Upkar Lidder has transitioned from a full stack developer to a developer advocate who is focused on data science and AI. We had a conversation on how a developer can benefit from learning about data science and expanding the scope of his or her role.
-
Improve Git Diffs for Structured Data
Git has functionality to use alternate programs to produce diffs. Typically this is used to make diffs of non-text, like word documents. There are three things you need to configure for these attributes:
The attribute on the file
The handler for the attribute
The program to do the diffingThe attribute should go in either .gitattributes or .git/info/attributes in your checkout, or whatever core.attributesFile is configured to point at. Here’s what mine looks like:
thedata.js diff=thedata
Very simple. Could easily be based on extension (so the prefix would be *.js) but that would cause more problems in my case.
-
Deploy, track, and roll back RDS database code changes using open source tools Liquibase and Jenkins
Customers across industries and verticals deal with relational database code deployment. In most cases, developers rely on database administrators (DBAs) to perform the database code deployment. This works well when the number of databases and the amount of database code changes are low. As organizations scale, however, they deal with different database engines—including Oracle, SQL Server, PostgreSQL, and MySQL—and hundreds or even thousands of databases. This creates a huge load on the DBAs to deploy, track, and perhaps roll back the database changes as and when developers need them to. Moreover, waiting for DBAs to make changes for the developers in an agile environment creates a bottleneck.
-
T^4: Adding Some Color to the Shell
The first proper video (following last week’s announcement) is up for new T^4 series of video lightning talks with tips, tricks, tools, and toys. Today we just to a little enhancement for the shell enabled color output (if not already on by default).
-
ttdo 0.0.5: Reflect tinytest update
A maintenance release of our (still small) ttdo package just arrived on CRAN. As introduced last fall, the ttdo package extends the most excellent (and very minimal / zero depends) unit testing package tinytest by Mark van der Loo with the very clever and well-done diffobj package by Brodie Gaslam to give us test results with visual diffs:
tinytest has an extension mechanism we use, and as tinytest was just upgraded to version 1.2.0 changing, among other nice extensions, one interface by allowing for a new error class argument, we had to rebuild as well in order to document the new argument.
The release was actually prepared three days ago when tinytest itself was updated, but we waited for the binaries at CRAN to be updated and rebuilt to take advantage of the fully automated submission and test process at CRAN.
-

- Login or register to post comments
Printer-friendly version- 4588 reads
PDF version
More in Tux Machines
- Highlights
- Front Page
- Latest Headlines
- Archive
- Recent comments
- All-Time Popular Stories
- Hot Topics
- New Members
digiKam 7.7.0 is released
After three months of active maintenance and another bug triage, the digiKam team is proud to present version 7.7.0 of its open source digital photo manager. See below the list of most important features coming with this release.
|
Dilution and Misuse of the "Linux" Brand
|
Samsung, Red Hat to Work on Linux Drivers for Future Tech
The metaverse is expected to uproot system design as we know it, and Samsung is one of many hardware vendors re-imagining data center infrastructure in preparation for a parallel 3D world.
Samsung is working on new memory technologies that provide faster bandwidth inside hardware for data to travel between CPUs, storage and other computing resources. The company also announced it was partnering with Red Hat to ensure these technologies have Linux compatibility.
|
today's howtos
|








.svg_.png)
Content (where original) is available under CC-BY-SA, copyrighted by original author/s.

LLVM Benchmarks
Rust Performance Is Getting Hurt On LLVM 10 With Noticeably Longer Build Times
7-8% compile time slowdowns in LLVM 10
LLVM Issues
SESES Speculative Execution Pass Lands In LLVM With "Extreme Performance Implications"