HNHacker News
TopNewBestAskShowJobs

arximboldi

1,199 karma · joined December 1, 2014

https://sinusoid.es https://sinusoid.al
submissionscomments
arximboldi··on Immer: immutable and persistent data structures for C++
Performance is one of the goals, so I am benchmarking everything. I run benchmarks on Travis, locally on my machine, and sometimes on a Raspberry Pi 3. You can check some of the reports here: https://public.sinusoid.es/misc/immer/reports/ (this is a bit hard to interpret without further comment).

So, the slowdown depends on the operation.

At the moment, comparing `immer::vector` to `std::vector`, example, for reading, using internal iteration (e.f. `for_each`) you get 1.5X, using iterators something like 2.5X, using [] something like 6X iteratively, something like 1.1 in random order.

Updating a single `int` element is like 100X. (This factor decreases with the size of the updated element, though!) But then, for example, `push_back` is only 1.1X std::list, and it does not rely on amortization, making it better for latency. Considering that you get access time similar to std::vector and persistence, it is a good deal. Also, with `flex_vector`, you get logarithmic slicing and concatenation, making these operations faster than for std::vector (when using big-enough vectors). Also, I am working now on _batch updates_ via transients, so if you update 10 elements in a row, you don't pay 10 times 100X (basically, you only pay the 100X once, which is very much ok for most use-cases, think like a 1microsecond tax per mouse click ;)

There are lots of trade offs one can make (in general, one can make updating a bit faster by making access a bit slower). Also, it depends a lot on the memory management strategy, which can also be customized.

arximboldi··on Immer: immutable and persistent data structures for C++
There is a tension between me wanting to use the fanciest shiniest features and me wanting it to be usable by the widest audience (even people using Microsoft compilers). I know of people that are still migrating their commercial code bases to C++14 that are interested in using them. It is probably in my best interest to support them, so it will take a while until I start using newer standards.

Anyways, the _implementation_ of the data structures themselves does not really benefit that much from C++17 (well, there might be some interesting stuff that I could do with hazard pointers...). However, people using the new concurrency stuff from the standard might really want to look into using immutable data structures to pass data between tasks.

arximboldi··on Immer: immutable and persistent data structures for C++
They may be located somewhere in the forest of continental post-structuralism somewhere between Derrida and Deleuze, even though this is a very structuralist assertion in a way, a contradiction that we shall embrace anyways. I wanted to deconstruct the data post-structures from Clojure and Scala following. The outcome is that I wrote code that I can barely understand, something that while burying my engineering career and speeking poorly of my intellectual abilities, might open me doors of the philosophical heavens.
arximboldi··on Immer: immutable and persistent data structures for C++
The typical way of doing garbage collection in C++ is via reference counting. This is the strategy used in the library by default.

However, this can be customized in the library. There is a brief description here: https://sinusoid.es/immer/memory.html

For example, one may choose between thread safe or thread unsafe reference counting (the later is much faster!). One may also plug in a conservative garbage collector, like `libgc` (https://github.com/ivmai/bdwgc). While reference counting is often considered to be bad for immutable data structures, I found out that this is not the case. They have very interesting interactions with move semantics and _transients_ (this is a feature that is still on the design phase though). I should write more about this somewhere, maybe in a blog or even as a paper.

arximboldi··on Immer: immutable and persistent data structures for C++
I plan to change it to a more liberal license for the first stable release (I should add a note to the readme). I still have to choose which one. The GPLv3 was chosen as an interim conservative option.

One way to help me choose one of the most liberal licenses is to get your company to join the sponsorship program ;)

Anyways, I and many others use plenty of GPLv3 software every day, let's agree to disagree on the "useless" part...

arximboldi··on Immer: immutable and persistent data structures for C++
It was meant as a half-joke picking on how everything is now "modern" on C++.

The half-serious part is that there has been a trend in the last few years in the "modern" C++ community against Copy-On-Write, heap allocation, shared pointers, etc. Immutability kind of brings new life to these concepts...

arximboldi··on Immer: immutable and persistent data structures for C++
Author here, open for questions :)
arximboldi··on A few drawings about Linux
I don't think that money is the problem here. Most Linux development is also money driven and most kernel developers nowadays are doing it to pay their bills. In a way, money can be a confirmation, to some degree, that you are actually providing value to someone.

In my opinion, the key is that Linux is libre software.

Windows has to deal with lots of old drivers and userland software that are arcane binary blobs. In the Linux world, most software running on it is libre and the community can evolve it to work with newer systems. This is specially true for drivers, since most drivers are GPL and kept in the kernel source tree. This promotes a healthier relationship between the companies and individuals involved where, through shared ownership, everybody is on the same boat.

arximboldi··on I don’t like computers
Yes, that sums it up very well... Doing "good technology" can helps up feel better about our profession (and this is fine) but adding more tech to the problem is not going to help.

On the other hand, while doing tech we are building organizations and interactions between people. We can explore new forms of cooperative non hierarchical organization. Building coops and companies that enable people to survive without having to choose to eat or be eaten, and setting up examples that can inspire new forms of organizing other parts of society. This is something that motivates me lately.

I recently read Reinventing Organizations by Laloux, and although the book is very flawed philosofically, I like how it talks about alienation without even mentioning the word, with lots of examples that people without a political activist background can relate to. It also reminds me of the Anarchist Moral by Kropotkin, which more than a century before tried to show optimism by looking at all the emerging cooperative structures in our society that too often go ignored.

arximboldi··on I don’t like computers
Yes, interesting initiatives do exist! Still, "making a living" contributing to them is hard. But there are also coops exploring how to build non-alienating organizations... (I can thing of Igalia, I don't work for them but I keep it as inspiration for when/if I want to start a coop: http://igalia.com/)

There are some sparks of hope. And I am very thankful to all those that light them up.

But when most people do the other way around and it is sometimes hard not to indulge into a bit of self-doubt and think: am I maybe the crazy one?

arximboldi··on I don’t like computers
This article was very touching. I'm 28 and I feel exactly the same way. I have spent quite some time thinking about the topic. I have even used the same words in conversations with friends.

There is a generation of people that got into computers because they were a tool for empowerement and creativity. When I was a child, my younger sister would create movies editing frame by frame in MS Paint while I would learn Pascal to make a sequencer to play "melodies" using the PC speaker bell commands. Her friend would learn HTML to create a manually updated blog where she would post fantasy short stories. In the Internet, we all hang around with nicknames in chat rooms and learn to make flashy websites and get through the chain emails from relatives. We needed no Netflix or Facebook to share stuff, we had P2P and email and IRC. Then we learnt about GNU/Linux: the ultimate tool to get control of our machines. It was all organized chaos, instant communication that no one could control, limitless creativity, the ultimate dream of a post-capitalist anarchist society...

At some point, some got to believe that if only these tools would become mainstream, the mainstream would adopt these values. A techo-revolution!

This overestimated the transformative power of technology. What happened was otherwise: technology is now mainstream and has become a tool for social control and the ultimate frontier of consumerism. Tech didn't change society, society changed tech...

I still want to believe in these utopic values. But I understand that it is a long way traveled in little steps whose significance is hard to see while at it. In the meantime it's often tiring and lonely to live in the computing underground. One has to explain people why you don't have a smartphone (and it gets harder to reach people without having Wassapp and so on), one has to explain relatives why you don't want to work for BigTechCorp, while tryin to stay "up to date" one has to go through the angry rants of Apple users on HN [1] or the celebration of the new Micro$oft facelift, and the collective systemic submission in the startup world in this new gold rush...

The hardest part for me is to find stuff that I can do well and that I find valuable to the world... and still get paid for it. And I am an Software Engineer, the profession of the future! How can I be so obnoxious to have plenty of well paid jobs around me and not be interested in them? This makes me very sad and makes me feel deeply alienated...

---

[1] You are not angry because of the design of a computer, you are angry at the realization that you are so personally invested in a technology that you have no control of, but has control over you!

arximboldi··on Ask HN: What are the best personal project websites you've seen?
More self-promotion: https://sinusoid.es/

Built using ClojureScript. Ethernal WIP. https://github.com/arximboldi/sinusoides

arximboldi··on Why companies make their products worse
This is why liberal economics are such a conservative force. Their hide moral arguments by embedding them in a loop: "this how things are, there are some good things, so how things are is good". Then they also use the argument the other way around and in the end, there is no way to bring up the possibility of change or challenging the status quo: "What? You don't like how things are? Poor thing, cheer up! Maybe you are not trying hard enough?". The underlying truth is that how things are is good for them and the capitalists that fund them. Then they will rationalize whatever excuse to pretend that it is also good for the rest of us.
arximboldi··on The Free-Time Paradox in America
More on the topic: http://www.primitivism.com/future-primitive.htm
arximboldi··on The Free-Time Paradox in America
Not working is not the same as inaction. It is more of the opposite. Unleashing ones creative potential once relieved from the alienating burden of salaried work.
arximboldi··on Is Running Good or Bad for Your Health?
I'm 28, relatively thin, been running casually sometimes, and also got knee pain after a few months last time I got into running more seriously. I stopped for a while, did various strengthening exercises that I found on Youtube and most importantly adapted the to front-middle strike.

For this, I also got low drop (4mm) shoes, which made adapting the strike so so much easier.

The knee pain is now gone and I feel that my leg is in better shape--strength better distributed--because of the front strike.

arximboldi··on How Dropbox Hacks Your Mac
Yeah, admittedly I also tried with a Pi 1 but it was too slow, now I have a Pi 3 for that.
arximboldi··on How Dropbox Hacks Your Mac
I use Syncthing: https://syncthing.net/

Totally distributed, works like magic. Being distributed means you do have to blindly trust a third party, but also that don't have to worry about $ per megabite. For example, one of the machines I have in my Syncthing network is a Raspberry Pi with a 3TB drive getting a backup of my laptop $HOME and important stuff from other machines all the time.

arximboldi··on This Is What Python Beginners Have to Deal With
You know what puts off beginners?

Articles plagued with stuff like "this is horrible", "this is shit" and so on and son.

I see too often articles that just try to denigrate other technologies, saying that they suck, they are horrible, they are shit, they should be considered harmful, etc, just to try to make the author sound smart-assed.

The truth is that most stuff is the way it is for a reason. Maybe the situation has evolved and the reason is no longer valid, or maybe the people that built the thing had different goals than you. But understanding why it was valid for the other person and why it is maybe not valid for your use-case in an empathetic way will only make you a better engineer. We are all smart people trying our best to achieve something using technology. We are on the same boat. Let's stop insulting each-other.

If I was a novice and saw and article like this, I don't think I would want to hang out with such an overreacting crowd. Python is a libre project: instead of insulting other people's work to sell your book, try improving it. I can understand why proprietary software sometimes sucks -- it is disempowering -- but with libre software you are just kindly given a gift. If you don't like it, improve it and give back to the community, don't denigrate.

arximboldi··on Now that anyone can be a DJ, is the art form dead?
In fact. Although on some genres, digital is still very disregarded. This happens a lot here in Berlin, specially on the techno scene. I can understand how for non-techies digital is somewhat alienating---vinyl is more sensorial and helps having a more intimate relationship with the music.

However, I find that as a developer for me digital is less alienating. I play with Mixxx, a libre DJ software, and I have dug in the guts of its code... its digital wires feel intimate to me. I have also built a framework for scripting it [1] and tweak or rebuild the scripts for a specific event. Analog is for me more rigid and limiting.

I expect that as coding becomes more common in the general population, digital will be perceived less and less alienating and the current elitism around vinyl will fade...

[1] https://github.com/arximboldi/mixco

arximboldi··on Free as in Health Care
Technically, it's #ccc on black :-) And I actually find it nice to read. I would complain about the wide lines instead... I may rephrase the Spanish say: there are tastes to every color, or colors to every taste...
arximboldi··on The Future of Planet Mozilla
I know a few relatives that used RSS integration in Firefox even though they do know nothing about tech. You just had to click the orange icon to subscribe and you would get the list of news on a dropdown in the bookmarks bar.
arximboldi··on Guido van Rossum: “PDF Must Die.” (2014)
I use this tool to reflow PDF papers for an e-book reader: http://willus.com/k2pdfopt/
arximboldi··on Unity raises $181M round at a reported $1.5B valuation

    In general people in Denmark don't have a 
    ton of money to invest after paying taxes.
In general people in the US don't have a ton of money to invest after paying healthcare, education, suburban commute, mortage, etc.
arximboldi··on Facebook Messenger begins testing end-to-end encryption using Signal Protocol
Thanks a lot for your work on Matrix. It is definitely one of the projects (like Syncthing, IPFS or GNU Social) that gives me enough hope to not run to the caves so early :)
arximboldi··on Facebook Messenger begins testing end-to-end encryption using Signal Protocol

    Hundreds of millions use Messenger from a web browser.
    No secure way to verify code or store keys without 
    routing through mobile.
I wouldn't use the web version if they had not disabled Jabber access... and then I could use OTR.

This trend makes me very sad... IM networks are getting more centralized as ever. I don't feel thankful for this kind of development. End-to-end encryption should not be a feature of the service provider, but the client. The way this works with Whatsapp/FB/Google just requires us to believe that their proprietary client is actually doing what it promises. And for me that I don't have a smartphone they just don't even promise anything.

I just wish I could use XMPP or Matrix with my non-nerdy friends. There was this time Google seemed to not be evil with GTalk/XMPP, but then... The business cynicism that dominates this industry, allowing people to claim that they "connect people" at the same time that they put everyone in digital prisons, makes me really want to leave computing and go live in a cave.

arximboldi··on Woman wins $10k judgment against Microsoft for forced Windows 10 upgrade
My friend sent me the link to the slow computing/technology sobereignty project:

http://tianguis.cordoba.cc/que-hacemos/soberania-tecnologica...

arximboldi··on Woman wins $10k judgment against Microsoft for forced Windows 10 upgrade
> Whether the OS is proprietary isn't the important facet of this issue.

The OS being proprietary is an important issue. With libre software, lightweight forks that still work in old hardware can be maintained. Also, the software stack can be customized. Note that it's not security patches what makes software slow, but the zillions of layers of indexers, UI frameworks written in three layers of dynamic languages, etc that are included in a desktop environment. A modern GNU/Linux distribution function decently on old hardware as soon as you swap the desktop environment. With either you upgrade to a 20GB OS with a desktop environment that requrires 2 gigs of ram and so on, or you are stuck with an unsupported Windows XP.

> Custom software initiatives make sense for people who have a high aptitude and the time to undertake them. This use case doesn't fit the vast majority of people who use computers.

The average american watches 4 hours of TV a day [1] and they spends more time on Facebook than taking care of their pets [2] and takes weeks of training in order to get a driving license. I think the average person has the time to spend one or two days, when they upgrade their computer, pairing with a technician to get to understand the software they have and how it works and how to protect themselves. It's a matter of priorities. Sadly, for a lot of the software industry, an empowered userbase is not in their best economic interest.

[1] https://www.csun.edu/science/health/docs/tv&health.html

[2] http://www.bloomberg.com/news/articles/2014-07-23/americans-...

arximboldi··on Woman wins $10k judgment against Microsoft for forced Windows 10 upgrade
"Holding back the industry"

No!

I think we, the software industry, are very irresponsible when it comes to __planned obsolescence__ [1]. Computers from 10 years ago are very capable of doing most things common users want to do nowadays. However, many modern operating systems and applications make these computers unusable.

We are forcing users to upgrade software, and because of all the layers of cruft accumulated in this software, they are then forced to upgrade their hardware too. This just adds to a spiral of consumerism that is going to destroy our planet.

Like most of us, I like developing with the latest high level fancy cutting edge stack; but we have to remember that it's not the society's duty to empower the tech industry but the other way around. It is our role to help people solve people's their problems, and in ways that are effective socially and ecologically and does not create waste. This also means, making sure that hardware does not become obsolete because of our carelessness, lazyness or selfabsorpion as software makers.

Also, alternatives do exist.

I know someone in Cordoba (Spain) that recently started a __slow computing__ cooperative, inspired by this article [2]. His goal is to bring tech experts and ordinary people together to build custom solutions adapted to their needs. They have users go to them and do an interview with them. Then, they make a GNU/Linux and libre software installation for them, often reusing old hardware, adapted to their personal needs, and do the teaching necessary. I find this a very interesting approach, that solves the security problem both by installing updated software that does not create hardware obsolescence, and educating users so they regain control of their machines.

There is no valid excuse for Microsoft here. Your argument is the perfect example of how proprietary software puts end users as servants to the interest of owners of the proprietary code that control their machines.

[1] https://www.wikiwand.com/en/Planned_obsolescence [2] https://newrepublic.com/article/121832/pleasure-do-it-yourse...

arximboldi··on Reasons not to use (i.e., be used by) Facebook
Open source does imply rights to alter and redistribute:

https://opensource.org/licenses https://opensource.org/faq#free-software

The terms Free Software and Open Source are the same from a technical point of view, to the extent that they describe the same set of software. However, they are different in that they connote different views about the world---people saying free (or libre) software take a stance in that software should be free in order to build more just society, while people saying open source don't necessarily take a political stance with regard to software, and often see licensing only from a business point of view.

← PreviousPage 9 of 10Next →