Recent Forum Posts
From categories:
page »
Dimitar Dimitrov (guest) 21 Mar 2017 00:37
in discussion Hidden / Per page discussions » A really hard problem

The value of these lines is as incentive, providing psychological comfort/sense of fulfillment to the developers, so that they can keep maintaining the parts of the code that do the actual work.

What is really more fascinating is that the very same people that decry the contrived complexity of the codebase, tend to rationalize it as they start groking it (sense of fulfillment), and then typically leave their mark by add yet another distinct layer of abstraction (psychological comfort). Rationally challenging, or (gasp) removing useless abstractions is looked upon as act of hostility to whoever added it.

by Dimitar Dimitrov (guest), 21 Mar 2017 00:37
Sriram Srinivasan (guest) 18 Mar 2017 05:53
in discussion Hidden / Per page discussions » Select Statement Considered Harmful

I think your argument is about structuring state machines, not that much about select. Without indepdependly schedulable lightweight threads, one is forced to conflate logically hierarchical (or peer) state machines all into one. I agree with you that with Goroutines, many state machines can be broken up into tinier, hierarchically related ones.

However, you still need select, since it is the equivalent of nondeterministic choice in CSP, and it is a primitive in the latter for a reason. So, point #2 just before your conclusion is not always possible because there is no linearization there. Independent signals (timeouts, cancellations, peer failures, aasync i/o completion etc) are all possibilities, and they may or may not happen. You have to account for a powerset of the possibilities in any execution.

The suggestion of putting all such signals into a single channel to avoid select is fraught with problems:

1. The receiver dictates the type of the channel to be the union of all incoming signals, so the source has to know details that it is completely unconcerned with.

2. Erlang has the model you suggest. At the same time, the language has built-in support for selective receive (which is select in a different form), yet head of line blocking gets in the way more often than you think. In Go, you have to build selective receive yourself, but the essential problem doesn't go away.

3. Flow control affects all sources. There are good arguments against unlimited buffering, and bounded buffered channels impose flow control: one busy source can basically keep out another source feeding to the same channel.

4. This scheme doesn't get rid of nondeterminism anywway, because the first thing the receiver must do is to demultiplex the message and process it. It is identical to the select code.

by Sriram Srinivasan (guest), 18 Mar 2017 05:53
Ravindranath Akila (guest) 17 Mar 2017 15:18
in discussion Hidden / Per page discussions » Why should I have written ZeroMQ in C, not C++ (part I)

I like your reasoning about exception handling and crippled initializations. May I ask though, why do you say Java is messy?

by Ravindranath Akila (guest), 17 Mar 2017 15:18
Apostolis (guest) 27 Feb 2017 08:45
in discussion Hidden / Per page discussions » Digital encoding. Legacy software. Evolution.

Yet, so many sociology / economics papers do not take evolution into account :

Axelrod's paper on the evolution of cooperation has 33000 cites, but its argument is not evolutionary but
game theoretic.

Find the error in the above paper and get a digital cookie.

by Apostolis (guest), 27 Feb 2017 08:45
yoshi_120 (guest) 16 Feb 2017 15:40
in discussion Hidden / Per page discussions » SRE's review of Democracy

The probleme with these points is that what you call "democracy" has never been democracy. Democracy not exist in modern nation bacause The Founding Fathers of USA and most influent people during French Revolution has never be democrate. On the contrary they describe democracy like chaos and Plebe dangerous power;

The word democrate is during dark age a rare word and used by few erudite and describe Ancient Greece political model. The using of word increase during modernity but the original sens has been perverted.

Worst, the Old Regime of France during monarchy is more democratic than modernity. The King of France not really manage his kingdom. He prefer fuck woman and hunting. Their is a great autonomy of township with votation of things with hands or black and white balls. Even during plague people made assembly across river.

Francis Dupui-Déri (Quebec)
UQAM Interview
Démocratie Histoire politique d'un mot aux USA et en France

Cornelius Castoriadis - Une leçon de démocratie (Chris Marker 1989)

by yoshi_120 (guest), 16 Feb 2017 15:40
Apostolis (guest) 12 Feb 2017 10:25
in discussion Hidden / Per page discussions » SRE's review of Democracy

Consider this for your next chapter.

A. The software is rewritten in a literate programming style, like a book that can be understood by people.
B. Create an issue tracking system, that is easy to use by society in which society provides feedback.
C. Provide a "croudfunding" site where society takes decisions about and funds changes in the governing structures.
D. Have programmers do the changes.

This might look like fiction but it is exactly what I am working on. So maybe people will call you the next Jules Verne after that :)))) .

by Apostolis (guest), 12 Feb 2017 10:25

Hm, it's a fantasy, don't take it too seriously. My point was to attack the idea that the democracy as we know it is, in Winston Churchill's words: "The worst form of government, except for all the others." In reality, if you look at the system from system-engineering perspective, it's easy to imagine piecemeal improvements to the system that would make it work better. For example: More transparency. More checks and balances. Better feedback loops etc.

by martin_sustrikmartin_sustrik, 12 Feb 2017 09:26
Apostolis (guest) 11 Feb 2017 17:13
in discussion Hidden / Per page discussions » SRE's review of Democracy

Who is the reviewer and who appointed him in that position?

You see, the problem is the democratic change and control of the governing structures.

In the foundation series, there were scientists that were able to predict the future of society and alter its course.

I think that it is time to incorporate in our fiction that the all-seeing eye that is able to view society from above and take decisions is society itself.

by Apostolis (guest), 11 Feb 2017 17:13
catbrainland (guest) 10 Feb 2017 21:42
in discussion Hidden / Per page discussions » Be just or be data-driven?

One bit martin (perhaps intentionally to spark the discussion) left out. The machine can most certainly become racist, because our current ML techniques pretty much amount to "generalizations box" - it's a magnifying glass of our collective data, including prejudices - but not true consciousness making its own decision.

In practice - because of institutional racism, a lot of black people are overrepresented in crime in the US. We feed this past overrepresented data as the learning dataset and the machine creates neuron weight circuitry for "aha! black person, most likely a criminal!". Incidentally, it's the exact same mechanism how prejudice self-amplifies in the general population, too.

One possible approach could be "opinion affirmative action". Basically introduce reverse bias in the input data against known prejudices - even if it counters past statistics. And hope that it will break the previous feed-back loop of self-fulfilling prophecy (fe. assumptions that black people are criminals is what actually may set em on criminal path).

Same goes for a lot of ML systems. You won't get justice, only a coarse statistical estimation based on previous observations - but not true rational reason, unless you give it far, far more data (as well as advanced reinforced ML training techniques such as generating hypotheses from the corpus and testing those). This is far more difficult than just dumping some narrow database data from the past, yet is what most commercial "screening" oughta do, otherwise they merely automated the coarsest of human prejudice.

by catbrainland (guest), 10 Feb 2017 21:42
Apostolis (guest) 06 Feb 2017 14:25
in discussion Hidden / Per page discussions » Few thoughts on current political situation

You consider that it is political corruption that people do not like.
Let me generalize it to say that it is political decisions that are against the majority of the people that they do not like.

Now why does political corruption exist? Politicians have political power but they cannot benefit from it individually. The only thing they can do is to sell their political power for money. If the organizations that give them money are democratic, then in a limited sense, we would have some sort of democracy.

But companies are not democratic. They are not accountable to the people for what they do. People work 1/3 of their life in them. Moreover, the Capitalist economy is in crisis, something that the people cannot control.

In conclusion, it seems that the lack of democracy in both the company level, as well as the whole economy level is at fault.

2. Not direct democracy but real democracy.

There are statistical methods to check whether the opinion of the people coincides with the decision of a governing body. We need to build evolvable decision making structures and check whether those structures take decisions that are in agreement with the people's.

If they are not, we evolve them again until we have the correct structure. Each field of inquiry requires a different structure.

by Apostolis (guest), 06 Feb 2017 14:25
Thomas (guest) 06 Feb 2017 11:34
in discussion Hidden / Per page discussions » Few thoughts on current political situation

Hi Martin

I agree with most of your overall analyse but I have doubts about your proposed solution.

Many issues require in depth studies, analysis, and extended debate - something you can't expect everyone to invest into on all matters.

The complex nuances will make the vast majority of voters susceptible to "easy solutions", populism, appealing rhetorics and slogans.

Strategies involving multiple steps will be launched simultaneously just to be down voted by supporters of another strategy, leaving behind half-attempts. Each step would have to be championed even though people agreed on the overall strategy.

We would have constant fundraising and lobbyism leading to democracy-fatigue.

Smaller/frequent elections would mean less turnout which would make each vote more susceptible to both legal lobbyism and corruption.

Let's use foreign policy on the Middle East as an example. How many people do you know, have the actual knowledge about history, politics, anthropology, war, finance, strategy, relations among the countries, groups, etc., etc. in that region to have a qualified opinion? I certainly don't. Would you feel comfortable about answering a question such as: "Should we impose a sanction on X" followed by pages specifying exactly what, who, when in details only 0,01% of the population have ever heard about?
Would you want to spend weeks studying this in detail to vote qualified?
Anyone saying "X caused war, Y will fix it" does not have a clue.

I don't believe in direct democracy. Quite the opposite. I think we might need more layers - some that are closer and thus easier to hold accountable and debate with.
The first layer should be so close that you can pick someone you trust by their values to represent you, someone close enough that you can talk to them. Their votes should be transparent, and when you don't understand or is worried, you can debate with them and either be settled or move your vote.

by Thomas (guest), 06 Feb 2017 11:34
Martin Sustrik (guest) 05 Feb 2017 08:00
in discussion Hidden / Per page discussions » Code Generation & Visual Smog in Code (part I)

I am not sure. Imagine LISP writing LISP. The problem is that while you can easily read the code of the generator, the generated code is spread throughout the source code and thus not easily readable.

by Martin Sustrik (guest), 05 Feb 2017 08:00

Hello Martin,

Having come here after discovering nanomsg, I have ended up spending the last two evenings reading multiple articles (almost all of them) from your blog, which I find very interesting and thought provoking.

I just wanted to mention that for the problem of writing code which writes code which writes code … which solves a problem, also fitting would be perhaps a homoiconic language.


by Papa RoachPapa Roach, 04 Feb 2017 01:07
Martin Sustrik (guest) 02 Feb 2017 12:45
in discussion Hidden / Per page discussions » Structured Concurrency

Unfortunately, I have no experience with Rust. But generally speaking, yes. Structured concurrency is just a programming paradigm and should be doable in any language that supports concurrency.

by Martin Sustrik (guest), 02 Feb 2017 12:45
Greg Edwards (guest) 01 Feb 2017 00:13
in discussion Hidden / Per page discussions » Structured Concurrency

Your description sounds very close to how Rust handles concurrency via the borrow-checker etc., so I wonder if Rust could be extended to implement what you are recommending.

by Greg Edwards (guest), 01 Feb 2017 00:13
Sean Charles (guest) 31 Jan 2017 12:48
in discussion Hidden / Per page discussions » The Second Use Case for Literate Programming

I used noweb many years back to produce a series of Fully documented Drupal 6 modules to great effect. Admittedly I am a big fan of LP and fortunately the client only wanted a solution that worked. Armed with Leo editor (an awesome tool) and the notion of LP I wrote and delivered a dozen custom Drupal modules that integrated with external systems.

The beauty of LP in this case was, as the author states, in being able to describe the intention of each part of the code and I also highlighted key areas where external changes might affect things e.g. a different URl endpoint or database or such like.

I think there *is* a future for LP but not in the mainstream. Having worked in that stream for many years, and trying not to be disrespectful, the "main stream" doesn't care about a beautiful thing like LP, all it wants is a solution on time and on budget and it doesn't care how it got there.

If you have done LP you know that it can be very slow BUT you don't get issues (well not many) later. You could say that current BDD/TDD/CI tools make LP redundant but I am not sure. If there is one thing I truly hate it is "docblock comments" that are out of date or just plain wrong. This is not to say that somebody couldn't just hack the code part of an LP file and not update the text, or, worse, edit the code directly because they didn't understand how to use tangle and weave and in that one second they broke the entire thing because the LP source is now no longer accurately describing the live code base.

There are so many issues to resolve, there are no tools to support LP in the sense that PHPStorm or RubyMine support development.

A long way to go… but I think LP will live on… at least in my heart anyway!

by Sean Charles (guest), 31 Jan 2017 12:48
hyfrey (guest) 23 Jan 2017 16:03
in discussion Hidden / Per page discussions » Structured Concurrency

gRPC is rpc framework open sourced by google that support context between client and server. It support many languages.

by hyfrey (guest), 23 Jan 2017 16:03

Maybe a suitable proxy question is "do you use Emacs"?

I ought to love Emacs: it's a fully programmable environment. But I just can't cope with memorising Ctrl-A Meta-B Meta-A sequences. I can't even exit the damned thing; I open a new shell, use 'ps' and send it a 'kill'.

All I want to do is edit a file. I want to be thinking about the interesting problem in hand, not the tool.

But of course, there are others who absolutely love Emacs and couldn't be without it. I think their brains are wired differently. Perhaps I just have a mental block against multiple modifier keys, particularly when there is no such labelled key on the keyboard - although thinking of the sequence as "Ctrl-A ESC B ESC A" doesn't really help either. Does an editor *really* need to be that hard to be productive?

Reference: doing this for nearly 40 years. I started back in the days of things like PET Basic and Borland Turbo Pascal. Hence I can cope with sequences like Ctrl-K X, and for preference I use the "joe" editor which still has them :-) But for complex searching I'll still shell out to the command line and use grep.

by Brian (guest), 19 Jan 2017 15:22
Brian (guest) 19 Jan 2017 13:33
in discussion Hidden / Per page discussions » The Cost of Abstraction

A common unhelpful abstraction is the implicit polymorphism in dynamically-typed OOP languages - when in the majority of cases it's not even needed.

Consider a function like this pseudocode:

func foo(s):

do something with s.length()

This is polymorphic: which length() method is called depends on the type of 's' at runtime. You may have a lot of trouble locating the correct length() method in the source, especially if this code calling point is deeply nested and you have to work backwards to try to infer the type of 's'.

But in many cases, func foo may be written only to make use of objects of class Bar. It could have called the one possible function explicitly:

func foo(s):

do something with Bar.length(s)

Bar.length is exactly one function and can be quickly located in the source code. (Its implementation *might* even do different things depending on the type of s, but this would be localised)

In statically-typed languages you write func foo(Bar s) of course, restricting the type of s. What I'm saying is, you *could* have made the intent clear even in the dynamically-typed language as well; but most people don't, relying on dynamic method dispatch to save a few characters of typing.

The OOP approach also leads to unnecessary design quandries. If you have code which acts on an instance of a and b, should it be or I would rather just write foo(a,b) and the problem goes away. foo is still an abstraction, but at least its implementation (and hopefully documentation) can be easily located.

by Brian (guest), 19 Jan 2017 13:33

Have to say, you have a great bias against China.

by RocWay (guest), 14 Dec 2016 08:33
page »
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License