Software development is changing rapidly and the tool stack has yet to catch up. As we see, the value of IDEs diminishes as developers are less inclined to edit the code now. More and more of the work is browsing and talking to LLMs, less and less is coding and debugging. About 8 years ago I gave a talk at the internal JetBrains conference "Code is hypertext, IDE is a browser". Those points look even more relevant now: effective browsing of code and history is a prerequisite to effective understanding. Understanding underlies everything now. No understanding = no control, then a developer is like a rider who fell
| <keymap version="1" name="XWinNumpadized" parent="Default for XWin"> | |
| <action id="Back"> | |
| <keyboard-shortcut first-keystroke="ctrl alt left" /> | |
| <mouse-shortcut keystroke="button4" /> | |
| <keyboard-shortcut first-keystroke="ctrl o" /> | |
| </action> | |
| <action id="ChangeSignature"> | |
| <keyboard-shortcut first-keystroke="ctrl f6" /> | |
| <keyboard-shortcut first-keystroke="shift ctrl j" /> | |
| </action> |
| #!/bin/bash | |
| # | |
| # ThinkPad P1 performance tuning | |
| # | |
| # general-purpose power saving | |
| #/usr/sbin/powertop --auto-tune | |
| # Turn off the PROCHOT bit; it throttles the CPU at 80'C | |
| FLAGS=`/usr/sbin/rdmsr 0x1fc -d` |
| #!/bin/bash | |
| REPO=$PWD | |
| TEST_ROOT=`tempfile -d ~/tmp -p swrm_` | |
| rm -rf $TEST_ROOT | |
| mkdir -p $TEST_ROOT | |
| cd $TEST_ROOT | |
| git clone $REPO | |
| cd swarm |
| TodoApp.prototype.initSwarm = function () { | |
| this.storage = new Swarm.SharedWebStorage ('webst', {persistent:true}); | |
| this.host = Swarm.env.localhost = new Swarm.Host (this.ssnid, '', this.storage); | |
| this.wsServerUri = 'ws://'+window.location.host; | |
| this.host.connect (this.wsServerUri, {delay: 50}); | |
| }; |
| var app = app || {}; | |
| (function () { | |
| 'use strict'; | |
| // print every op to the console | |
| Swarm.debug = true; | |
| // ... | |
| // compose a WebSocket URI to connect back to the server; |
To mark the special day of January the 30th I release this article addressing my previously made observation that most crypto messaging schemes are cheaply compromised by non-cryptographic means, i.e. by seizing servers, buying companies, server-side wiretapping, social network analysis and other means.
The point of this article is to introduce a completely end-to-end encrypted messaging scheme that is resistant to the aforementioned
Jay Kreps of LinkedIn recently made an [excellent detailed 360' overview][log] post explaining why log is an underlying data structure of pretty much everything in distributed systems. Well, I feel tempted to add that same holds true for collaborative editing (like in Google Docs and others). Also, I'd like to point out the relation between partially ordered logs, the offline-first approach, AP systems and the so-called Web 3.0 (like in Meteor, pouchdb and others).
[log]: http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying The Log: What every software engineer should know about real-time data's unifying abstraction
Any real-time approach to collaborative editing decomposes a document into a sequence of atomic operations. The most known one is OT, also there is the WOOT/CRDT based family, including CT. GDocs is an OT system. I did a CT system currently in beta at http://letters.yandex.ru. Note that letters is a tiny pilot project