811
Shared-nothing architecture
A shared-nothing architecture (SN) is a distributed-computing architecture in which each node is independent and self-sufficient, and there is no single point of contention across the system. More specifically, none of the nodes share memory or disk storage. People typically contrast SN with systems that keep a large amount of centrally-stored state information, whether in a database, an application server, or any other similar single point of contention.

The advantages of SN architecture versus a central entity that controls the network (a controller-based architecture) include eliminating any single point of failure, allowing self-healing capabilities and providing an advantage with offering non-disruptive upgrade.
architecture  wikipedia 
19 days ago
Big Five Aspect Scales
* Openness to Experience, made up of the aspects Openness/Creativity and Intellect

* Conscientiousness, made up of the aspects Orderliness and Industriousness

* Extraversion and introversion, made up of the aspects Enthusiasm and Assertiveness

* Agreeableness made up of the aspects of Politeness and Compassion

* Neuroticism, made up of the aspects of Withdrawal and Volatility
psychology  wikipedia 
19 days ago
Conflict-free replicated data type (CRDT)
In distributed computing, a conflict-free replicated data type (CRDT) is a data structure which can be replicated across multiple computers in a network, where the replicas can be updated independently and concurrently without coordination between the replicas, and where it is always mathematically possible to resolve inconsistencies which might result.
architecture  concurrency  wikipedia 
19 days ago
erldocs
Welcome, erldocs is an alternative to the official erlang documentation.
erlang 
20 days ago
Erlang Programming Language
Erlang is a programming language used to build massively scalable soft real-time systems with requirements on high availability. Some of its uses are in telecoms, banking, e-commerce, computer telephony and instant messaging. Erlang's runtime system has built-in support for concurrency, distribution and fault tolerance.
erlang  programming-languages  concurrency  actor-model 
20 days ago
Erlang Factory
The Erlang Factory conferences provide inspiring talks, trainings and workshops with leading Erlang experts. The Erlang Factory SF Bay Area is the biggest Erlang event in the US, and Erlang Factory Lites are organised on a monthly basis across the US and Europe.
erlang 
20 days ago
Erlang Solutions
We’re a world-leading Erlang and Elixir consultancy.
erlang 
20 days ago
Nerves Project
Craft and deploy bulletproof embedded software in Elixir.
erlang 
20 days ago
Hex
A package manager for the Erlang ecosystem.
erlang  package-manager 
20 days ago
Phoenix Framework
A productive web framework that does not compromise speed and maintainability.
erlang 
20 days ago
Membrane Framework
The Membrane is easy to use abstraction layer for assembling mostly server-side applications that have to consume, produce or process multimedia streams. It is written in Elixir + C with outstanding Erlang VM underneath that gives us a rock solid and battle-tested foundation.

It is also the first multimedia framework that puts reliability and concurrency in the first place. It does not mean that we don’t care about performance, low latency or efficient memory use, but if we have to make a tradeoff, it is going to be made in favor of reliability and scalability.
erlang 
20 days ago
What is the difference between Alan Kay's definition of OOP and Carl Hewitt's Actor Model?
Subsequently, the Actors work remained more true to the original object ideas than our Smalltalk work at Parc.
alan-kay  carl-hewitt  actor-model 
21 days ago
Chat service architecture: protocol
We took six factors into consideration when choosing a protocol:

* Support for 1:1 messages, group chats, and offline messages. (These fundamental concepts support the development of player experiences like private messages, game lobby conversations, and pre- and post-game chats without the need to reinvent the wheel.)

* Built-in presence mechanisms. (These notify players of their friends’ availability.)

* Open specifications for transparency and auditability; a wide review scope;and, allowance for Riot-specific tuning.

* A proven security model. (This ensures we can protect the privacy of players.)

* An extensibility model. (This allows for custom behaviors.)

* Availability of open source projects. (This accelerates development and delivery of chat to players.)

We evaluated several alternatives and XMPP best satisfied all of the above factors.
chat 
24 days ago
The WhatsApp Architecture Facebook Bought For $19 Billion
WhatsApp server is almost completely implemented in Erlang:

* Server systems that do the backend message routing are done in Erlang.

* Great achievement is that the number of active users is managed with a really small server footprint. Team consensus is that it is largely because of Erlang.

* Interesting to note Facebook Chat was written in Erlang in 2009, but they went away from it because it was hard to find qualified programmers.

WhatsApp server has started from ejabberd:

* Ejabberd is a famous open source Jabber server written in Erlang.

* Originally chosen because its open, had great reviews by developers, ease of start and the promise of Erlang’s long term suitability for large communication system.

* The next few years were spent re-writing and modifying quite a few parts of ejabberd, including switching from XMPP to internally developed protocol, restructuring the code base and redesigning some core components, and making lots of important modifications to Erlang VM to optimize server performance.
chat  erlang 
24 days ago
How League Of Legends Scaled Chat To 70 Million Players
Making it work meant starting with XMPP as a base for chat. WhatsApp followed the same strategy. Out of the box you get something that works and scales well...until the user count really jumps. To make it right and fast, like WhatsApp, League of Legends found themselves customizing the Erlang VM. Adding lots of monitoring capabilities and performance optimizations to remove the bottlenecks that kill performance at scale.
chat  erlang 
24 days ago
Mattermost
As an alternative to proprietary SaaS messaging, Mattermost brings all your team communication into one place, making it searchable and accessible anywhere. It’s written in Golang and React and runs as a production-ready Linux binary under an MIT license with either MySQL or Postgres.
chat 
24 days ago
CoyIM
CoyIM is a new chat client that is safe and secure by default: no settings to change, no plugins to install, no computer configuration to change.
chat 
24 days ago
Converse
A free and open-source XMPP chat client in your browser.
chat 
24 days ago
Gajim
The goal of Gajim is to provide a full featured and easy to use XMPP client.
chat 
24 days ago
Pidgin
Pidgin is an easy to use and free chat client used by millions. Connect to AIM, Google Talk, ICQ, IRC, XMPP, and more chat networks all at once.
chat 
24 days ago
Spark
Spark is an Open Source, cross-platform IM client optimized for businesses and organizations.
chat 
24 days ago
Zulip
Zulip combines the immediacy of Slack with an email threading model.
With Zulip, you can catch up on important conversations while ignoring irrelevant ones.
chat 
24 days ago
Matrix
An open network for secure, decentralized communication.
chat 
24 days ago
XMPP
XMPP is the open standard for messaging and presence.
chat 
24 days ago
Online Games using XMPP-based Chat and Matchmaking
There is a growing number of games adopting XMPP for real-time signaling and chat.
chat 
24 days ago
Projects using XMPP Social
All of these projects make use of XMPP to enhance their social networking functionality.
chat 
24 days ago
Projects using XMPP-based Instant Messaging
There are many projects that have created an XMPP-based Instant Messaging network.
chat 
24 days ago
Crafting Interpreters
This book contains everything you need to implement a full-featured, efficient scripting language. You’ll learn both high-level concepts around parsing and semantics and gritty details like bytecode representation and garbage collection. Your brain will light up with new ideas, and your hands will get dirty and calloused. It’s gonna be a blast.
programming-languages 
5 weeks ago
Tackling Complexity in CQRS
The goal of CQRS is to enable representation of the same data using multiple models. Not scalability, not availability, not security, not performance. Same data in multiple models. That’s it. The rest is byproducts.
architecture 
6 weeks ago
Referential transparency
An expression is said to be referentially transparent if it can be replaced with its corresponding value without changing the program's behavior.
architecture 
6 weeks ago
.NET API Catalog
The catalog contains 707,691 APIs.
dot-net 
7 weeks ago
Concatenative programming language
For example, a sequence of operations in an applicative language like the following:

y = foo(x)
z = bar(y)
w = baz(z)

...is written in a concatenative language as a sequence of functions, without parameters:

foo bar baz
programming-languages 
8 weeks ago
Four Languages From Forty Years Ago
The 1970’s were a golden age for new programming languages, but do they have any relevance to programming today? Can we still learn from them?

In this talk, we’ll look at four languages designed over forty years ago – SQL, Prolog, ML, and Smalltalk – and discuss their philosophy and approach to programming, which is very different from most popular languages today.

We’ll come away with some practical principles that are still very applicable to modern development. And you might discover your new favorite programming paradigm!
programming-languages 
8 weeks ago
Remote only
1. Hiring and working from all over the world instead of from a central location.
2. Flexible working hours over set working hours.
3. Writing down and recording knowledge over verbal explanations.
4. Written down processes over on-the-job training.
5. Public sharing of information over need-to-know access.
6. Opening every document to change by anyone over top down control of documents.
7. Asynchronous communication over synchronous communication.
8. The results of work over the hours put in.
9. Formal communication channels over informal communication channels.
programming-culture 
10 weeks ago
FuGet
This site is a nuget package browser combined with an API browser. The package browser uses the nuget.org API to display all the packages in their index. The API browser combines the XML documentation and the metadata of the package's assemblies to help you explore and learn. Try the API search box to quickly find code, and use the code tab to see how the library works. You can also diff two package versions to see what's changed.
dot-net 
10 weeks ago
Open FileStream properly for asynchronous reading/writing
On Windows, when you want to open/create a HANDLE (which the file ultimately is) and use overlapped operations (which is just a different name for asynchronous operations in Windows operating system), you need to specify “asynchronous” flag. On FileStream that’s the FileOptions.Asynchronous (or the isAsync bool parameter) in constructor. As you can guess, this does matter for await.
dot-net 
11 weeks ago
Jordan B Peterson - Quora
Jordan B. Peterson is author of Maps of Meaning, a U Toronto prof, and a clinical psychologist. He studies two main areas: the psychology of belief, including religion, mythology and political ideology; and the assessment and improvement of personality, including the prediction of creativity and academic and industrial performance.
psychology 
11 weeks ago
What’s the waiter doing with the computer screen?
… and suddenly realized that it was a perfectly ordinary whiteboard felt-tip pen. The headwaiter just draw an ”X” over their booking, directly on the computer screen!
programming-culture  ux 
may 2018
Beautiful Racket
How to make your own pro­gram­ming lan­guages with Racket.
books  functional-programming 
may 2018
The Oforth Programming Language
Oforth is an imperative, dynamic typed, stack-based language.

Oforth is a Forth dialect (Oforth is for Object + Forth). It keeps Forth mecanisms while implementing a full object model.
programming-languages 
march 2018
Why is functional programmig seen as the opposite of OOP rather than an addition on it?
So: both OOP and functional computation can be completely compatible (and should be!). There is no reason to munge state in objects, and there is no reason to invent “monads” in FP. We just have to realize that “computers are simulators” and figure out what to simulate.
alan-kay  oo  functional-programming 
march 2018
Gall's law
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. – John Gall
wikipedia  systems-theory 
february 2018
Notify.js
Notify.js is a jQuery plugin to provide simple yet fully customisable notifications. The javascript code snippets in this documentation with the green edge are runnable by clicking them.
css 
january 2018
Whistled language
A whistled language is a system of whistled communication which allows fluent whistlers to transmit and comprehend a potentially unlimited number of messages over long distances.
linguistics 
january 2018
Reason
Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.
programming-languages 
december 2017
The Ekmans' Atlas of Emotions
The Atlas of Emotion is a tool to help people better understand what emotions are, how they are triggered and what their effects are, and how to become aware of emotions before acting on them.
paul-ekman  body-language 
december 2017
What can you use Natural Language Processing for?
Natural Language Processing (NLP) comprises a set of techniques that can be used to achieve many different objectives. Take a look at the following table to figure out which technique can solve your particular problem.
linguistics 
november 2017
QueryStorm
Being a modern language with access to a rich ecosystem of libraries, C# can be immensely helpful both for automation and data processing in Excel. The goal of QueryStorm in this regard is to make C# easily available in Excel in order to help developers, db professionals and data scientists make better use of Excel. The C# scripting engine in QueryStorm is powered by the Roslyn compiler.
dot-net 
november 2017
Stuff Every .NET App Should be Logging at Startup
Unless all you build are HelloWorld applications which never get deployed anywhere you almost certainly have come across cases where either you or your support team have had to figure out:

* What is causing that OutOfMemory exception?
* Why is there such a performance degradation after the last release?
* Why is the DLL I have referenced not doing what it is supposed to?
* What system is my app running in?
* What arguments the app has started with?
* What version of JSON.NET is the app using?
* ...
dot-net 
november 2017
qutebrowser
qutebrowser is a keyboard-focused browser with a minimal GUI. It’s based on Python and PyQt5 and free software, licensed under the GPL.
browsers 
october 2017
Essential Image Optimization
A free book on modern image optimization techniques. Formats, decoders, techniques for efficient compression and more are covered.
web 
october 2017
Rob Pike's 5 Rules of Programming
Rule 1: You can't tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you've proven that's where the bottleneck is.

Rule 2: Measure. Don't tune for speed until you've measured, and even then don't unless one part of the code overwhelms the rest.

Rule 3: Fancy algorithms are slow when n is small, and n is usually small. Fancy algorithms have big constants. Until you know that n is frequently going to be big, don't get fancy. (Even if n does get big, use Rule 2 first.)

Rule 4: Fancy algorithms are buggier than simple ones, and they're much harder to implement. Use simple algorithms as well as simple data structures.

Rule 5: Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.
rob-pike  programming-culture 
september 2017
Hack
A typeface designed for source code.
typography 
september 2017
AtF Spark
Data can be hard to grasp – visualising it can make comprehension faster. Sparklines are a useful tool but creating them for the web has always required code. Removing the need for code makes it more accessible. If you can use type, you can use Spark.
typography 
september 2017
Inconsolata
It is a monospace font, designed for code listings and the like, in print. There are a great many "programmer fonts," designed primarily for use on the screen, but in most cases do not have the attention to detail for high resolution rendering.
typography 
september 2017
The Interface font family
Interface is a font for highly legible text on computer screens.
typography 
september 2017
A Brief, Incomplete, and Mostly Wrong History of Programming Languages
1987 - Larry Wall falls asleep and hits Larry Wall's forehead on the keyboard. Upon waking Larry Wall decides that the string of characters on Larry Wall's monitor isn't random but an example program in a programming language that God wants His prophet, Larry Wall, to design. Perl is born.

1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"

1991 - Dutch programmer Guido van Rossum travels to Argentina for a mysterious operation. He returns with a large cranial scar, invents Python, is declared Dictator for Life by legions of followers, and announces to the world that "There Is Only One Way to Do It." Poland becomes nervous.
programming-culture 
september 2017
Eve
Eve is a modern relational language for writing data-driven programs without the boilerplate.
programming-languages 
september 2017
Chance versus Randomness
Chance and randomness are closely related. So much so, in fact, that to say an event happened by chance is near enough synonymous in ordinary English with saying it happened randomly.
philosophy 
august 2017
WhatRuns
Extension that helps you identify technologies used on any website at the click of a button.
tools 
august 2017
Carneades.org
In the modern world we are assailed each and every day by opinions disguised as fact. The talking heads from the realms of religion, science, politics, and the media claim to posses knowledge. In this gladiatorial arena of argumentation too often the victor is the loudest voice, not the strongest argument. The mob chooses the views that live and die on the basis of their heart, their fears, or their pain. Rarely do they include their head. Why worry about the great riddles of life when there are so many unwatched cat videos? Having grown weary of this lifestyle of panem et circenses, I long to journey back across the Mediterranean to a land of logos and arete. If you share this sentiment, I implore you, continue reading and aide me in this quest.
philosophy 
august 2017
Cargo cult programming
Cargo cult programming is a style of computer programming characterized by the ritual inclusion of code or program structures that serve no real purpose. Cargo cult programming is typically symptomatic of a programmer not understanding either a bug they were attempting to solve or the apparent solution (compare shotgun debugging, deep magic). The term cargo cult programmer may apply when an unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some program code from one place to another with little or no understanding of how it works or whether it is required in its new position.

Cargo cult programming can also refer to the results of applying a design pattern or coding style blindly without understanding the reasons behind that design principle. Examples are adding unnecessary comments to self-explanatory code, overzealous adherence to the conventions of a specific programming paradigm, or adding deletion code for objects that garbage collection would have collected automatically.
programming-culture 
august 2017
Google’s Ideological Echo Chamber
* Google’s political bias has equated the freedom from offense with psychological safety, but shaming into silence is the antithesis of psychological safety.

* This silencing has created an ideological echo chamber where some ideas are too sacred to be honestly discussed.

* The lack of discussion fosters the most extreme and authoritarian elements of this ideology.

* Extreme: all disparities in representation are due to oppression

* Authoritarian: we should discriminate to correct for this oppression

* Differences in distributions of traits between men and women may in part explain why we don’t have 50% representation of women in tech and leadership. Discrimination to reach equal representation is unfair, divisive, and bad for business.
programming-culture 
august 2017
HTTPie
HTTPie—aitch-tee-tee-pie—is a command line HTTP client with an intuitive UI, JSON support, syntax highlighting, wget-like downloads, plugins, and more.
tools 
july 2017
What is PECS (Producer Extends Consumer Super)?
The principles behind this in Computer Science is named after

* Covariance - ? extends MyClass,
* Contravariance - ? super MyClass and
* Invariance/non-Variance - MyClass

The picture below should explain the concept.
functional-programming 
july 2017
Red Programming Language
Red is a next-gen programming language, strongly inspired by REBOL. Main features are:

* Human-friendly syntax
* Homoiconic (Red is its own meta-language and own data-format)
* Functional, imperative, reactive and symbolic programming
* Prototype-based object support
* Gradual and multi-typing
* Macros system
* Rich set of built-in datatypes (50+)
* Both statically and JIT-compiled to native code
* Cross-compilation done right
* Produces executables of less than 1MB, with no dependencies
* Concurrency and parallelism strong support (actors, parallel collections)
* Low-level system programming abilities through the built-in Red/System DSL
* Powerful PEG parser DSL included
* Cross-platform native GUI system, with a UI DSL and drawing DSL
* Bridging to the JVM
* High-level scripting and REPL console included
* Visual Studio Code plugin, with many helpful features
* Highly embeddable
* Low memory footprint, garbage collected
* Single-file (~1MB) contains whole toolchain, full standard library and REPL.
* No install, no setup
* Fun guaranteed!
programming-languages 
july 2017
Computing History at Bell Labs
And in the late '30s, George Stibitz had an idea that some of the work that they were doing on hand calculators might be automated by using some of the equipment that the Bell System was installing in central offices, namely relay circuits. He went home, and on his kitchen table, he built out of relays a binary arithmetic circuit. He decided that binary was really the right way to compute.
programming-culture 
june 2017
TempleOS
Development for TempleOS began in 2003 after Davis suffered from a series of manic episodes that left him briefly hospitalized for mental health issues.

Davis is a former atheist who believes that he can "talk with God" and that God told him the operating system he built was God's third temple. According to Davis, TempleOS is of 'Divine' intellect due to the inspired nature of the code. According to Davis, God said to create the operating system with 640x480, 16 colors display and a single audio voice. The operating system was coded in a programming language developed by Davis in C/C++ called "HolyC".
programming-culture 
june 2017
History of the browser user-agent string
And so Microsoft made their own web browser, which they called Internet Explorer, hoping for it to be a “Netscape Killer”. And Internet Explorer supported frames, and yet was not Mozilla, and so was not given frames. And Microsoft grew impatient, and did not wish to wait for webmasters to learn of IE and begin to send it frames, and so Internet Explorer declared that it was “Mozilla compatible” and began to impersonate Netscape, and called itself Mozilla/1.22 (compatible; MSIE 2.0; Windows 95), and Internet Explorer received frames, and all of Microsoft was happy, but webmasters were confused.
internet-culture 
june 2017
Turing tarpit
Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.
programming-culture  wikipedia 
june 2017
Immutable data structures are not as good as you think they are
If such case, the Immutable may still be a worthy investment, but only if write operations on the data structure are not very common, and you must have your application in a language that has some functional capability, preferably with a lot of free memory, and a good GC.
concurrency 
june 2017
History of Actors
I’m going to cover the classic actor model using Agha’s presentations as a guide; then I’ll compare it to E, a communicating event-loop actor language, and to Erlang, a process actor language.
actor-model  erlang 
june 2017
Memoization
In computing, memoization or memoisation is an optimization technique used primarily to speed up computer programs by storing the results of expensive function calls and returning the cached result when the same inputs occur again.
wikipedia  architecture 
june 2017
Debugging managed code memory leak with memory dump using windbg
This task is not as hard as it sounds like. I just simply used the below 9 steps to debug one possible memory leak at work a while back.

1. .symfix and .reload -f
2. .loadby sos mscorwks!
3. !VerifyHeap
4. !EEHeap
5. !dumpheap -stat
6. !dumpheap -type
7. !do
8. !threads
9. kb
dot-net 
may 2017
What lies beneath async/await in C# ?
That is because the compiler generated (notice the CompilerGenerated attribute) additional class in which the whole „magic” happens – state machine.
dot-net  concurrency 
may 2017
A Generation Lost in the Bazaar
But to anyone who has ever wondered whether using m4 macros to configure autoconf to write a shell script to look for 26 Fortran compilers in order to build a Web browser was a bit of a detour, Brooks offers well-reasoned hope that there can be a better way.
programming-culture  nix 
may 2017
The Truth About Lisp
Lisp was invented a long time ago, before java, before C, before fortran, before computers, before people, before the earth was built. the universe itself is a lisp program so trivial that no true lisper would even bother implementing it.
programming-culture  functional-programming 
may 2017
« earlier      
actor-model agile alan-kay angular ants architecture biology body-language books browsers carl-hewitt chat comics compilers concurrency csp css david-ungar dojo don-syme dot-net drugs erik-meijer erlang events functional-programming git github hans-j-boehm hosting human-machine internet-culture javascript javascript-history javascript-libs joe-armstrong keyboards leslie-lamport licenses linguistics ml mongodb nintendo nix node oo package-manager papua-new-guinea paul-ekman pdf persistent-data-structures philip-wadler philosophy programming-culture programming-for-kids programming-games programming-languages programming-papers programming-talks psychology python redis research rich-hickey rob-pike rust rx scrum sicp snippets startup systems-theory tech-articles tony-hoare tools typography ux vcs versioning vim web wikipedia wittgenstein

Copy this bookmark:



description:


tags: