Daniel Pocock: How did the world ever work without Facebook?

Share Button

Almost every day, somebody tells me there is no way they can survive without some social media like Facebook or Twitter. Otherwise mature adults fearful that without these dubious services, they would have no human contact ever again, they would die of hunger and the sky would come crashing down too.

It is particularly disturbing for me to hear this attitude from community activists and campaigners. These are people who aspire to change the world, but can you really change the system using the tools the system gives you?

Revolutionaries like Gandi and the Bolsheviks don’t have a lot in common: but both of them changed the world and both of them did so by going against the system. Gandi, of course, relied on non-violence while the Bolsheviks continued to rely on violence long after taking power. Neither of them needed social media but both are likely to be remembered far longer than any viral video clip you have seen recently.

With US border guards asking visitors for their Facebook profiles and Mark Zuckerberg being a regular participant at secretive Bilderberg meetings, it should be clear that Facebook and conventional social media is not on your side, it’s on theirs.

Kettling has never been easier

When street protests erupt in major cities such as London, the police build fences around the protesters, cutting them off from the rest of the world. They become an island in the middle of the city, like a construction site or broken down bus that everybody else goes around. The police then set about arresting one person at a time, taking their name and photograph and then slowly letting them leave in different directions. This strategy is called kettling.

Facebook helps kettle activists in their arm chair. The police state can gather far more data about them, while their impact is even more muted than if they ventured out of their home.

You are more likely to win the lottery than make a viral campaign

Every week there is news about some social media campaign that has gone viral. Every day, marketing professionals, professional campaigners and motivated activists sit at their computer spending hours trying to replicate this phenomenon.

Do the math: how many of these campaigns can really be viral success stories? Society can only absorb a small number of these campaigns at any one time. For most of the people trying to ignite such campaigns, their time and energy is wasted, much like money spent buying lottery tickets and with odds that are just as bad.

It is far better to focus on the quality of your work in other ways than to waste any time on social media. If you do something that is truly extraordinary, then other people will pick it up and share it for you and that is how a viral campaign really begins. The time and effort you put into trying to force something to become viral is wasting the energy and concentration you need to make something that is worthy of really being viral.

An earthquake and an escaped lion never needed to announce themselves on social media to become an instant hit. If your news isn’t extraordinary enough for random people to spontaneously post, share and tweet it in the first place, how can it ever go far?

The news media deliberately over-rates social media

News media outlets, including TV, radio and print, gain a significant benefit crowd-sourcing live information, free of charge, from the public on social media. It is only logical that they will cheer on social media sites and give them regular attention. Have you noticed that whenever Facebook’s publicity department makes an announcement, the media are quick to publish it ahead of more significant stories about social or economic issues that impact our lives? Why do you think the media puts Facebook up on a podium like this, ahead of all other industries, if the media aren’t getting something out of it too?

The tail doesn’t wag the dog

One particular example is the news media’s fascination with Donald Trump’s Twitter account. Some people have gone as far as suggesting that this billionaire could have simply parked his jet and spent the whole of 2016 at one of his golf courses sending tweets and he would have won the presidency anyway. Suggesting that Trump’s campaign revolved entirely around Twitter is like suggesting the tail wags the dog.

The reality is different: Trump has been a prominent public figure for decades, both in the business and entertainment world. During his presidential campaign, he had at least 220 major campaign rallies attended by over 1.2 million people in the real world. Without this real-world organization and history, the Twitter account would have been largely ignored like the majority of Twitter accounts.

On the left of politics, the media have been just as quick to suggest that Bernie Sanders and Jeremy Corbyn have been supported by the “Facebook generation”. This label is superficial and deceiving. The reality, again, is a grass roots movement that has attracted young people to attend local campaign meetings in pubs up and down the country. Getting people to get out and be active is key. Social media is incidental to their campaign, not indispensible.

Real-world meetings, big or small, are immensely more powerful than a social media presence. Consider the Trump example again: if 100,000 people receive one of his tweets, how many even notice it in the non-stop stream of information we are bombarded with today? On the other hand, if 100,000 bellow out a racist slogan at one of his rallies, is there any doubt whether each and every one of those people is engaged with the campaign at that moment? If you could choose between 100 extra Twitter followers or 10 extra activists attending a meeting every month, which would you prefer?

Do we need this new definition of a Friend?

Facebook is redefining what it means to be a friend.

Is somebody who takes pictures of you and insists on sharing them with hundreds of people, tagging your face for the benefit of biometric profiling systems, really a friend?

If you want to find out what a real friend is and who your real friends really are, there is no better way to do so then blowing away your Facebook and Twitter account and waiting to see who contacts you personally about meeting up in the real world.

If you look at a profile on Facebook or Twitter, one of the most prominent features is the number of friends or followers they have. Research suggests that humans can realistically cope with no more than about 150 stable relationships. Facebook, however, has turned Friending people into something like a computer game.

This research is also given far more attention then it deserves though: the number of really meaningful friendships that one person can maintain is far smaller. Think about how many birthdays and spouse’s names you can remember and those may be the number of real friendships you can manage well. In his book Busy, Tony Crabbe suggests between 10-20 friendships are in this category and you should spend all your time with these people rather than letting your time be spread thinly across superficial Facebook “friends”.

This same logic can be extrapolated to activism and marketing in its many forms: is it better for a campaigner or publicist to have fifty journalists following him on Twitter (where tweets are often lost in the blink of an eye) or three journalists who he meets for drinks from time to time?

Facebook alternatives: the ultimate trap?

Numerous free, open source projects have tried to offer an equivalent to Facebook and Twitter. GNU social, Diaspora and identi.ca are some of the more well known examples.

Trying to persuade people to move from Facebook to one of these platforms rarely works. In most cases, Metcalfe’s law suggests the size of Facebook will suck them back in like the gravity of a black hole.

To help people really beat these monstrosities, the most effective strategy is to help them live without social media, whether it is proprietary or not. The best way to convince them may be to give it up yourself and let them see how much you enjoy life without it.

Share your thoughts

The FSFE community has recently been debating the use of propriety software and services. Please feel free to join the list and click here to reply on the thread.

Powered by WPeMatico

Share Button

Ben Williams: F25 Updated Lives Available (4.11.6-201) — Linux-modder’s Tech Corner

Share Button

We in the Respins SIG are pleased to mention the latest series of Updated Live Respins carrying the 4.11.6-201 Kernel. These respins use the livemedia-creator tool packaged in the default Fedora repo and following the guide here as well as using the scripts located here. As Always there are available @ http://tinyurl.com/live-respins2 For those needing a non-shortened url that expands to https://dl.fedoraproject.org/pub/alt/live-respins/

via F25 Updated Lives Available (4.11.6-201) — Linux-modder’s Tech Corner

Powered by WPeMatico

Share Button

Corey ' Linuxmodder' Sheldon: F25 Updated Lives Available (4.11.6-201)

Share Button

We in the Respins SIG are pleased to mention the latest series of Updated Live Respins carrying the 4.11.6-201 Kernel.  These respins use the livemedia-creator tool packaged in the default Fedora repo and following the guide here as well as using the scripts located here.

As Always  there are available @  http://tinyurl.com/live-respins2

For those needing a non-shortened url that expands to https://dl.fedoraproject.org/pub/alt/live-respins/



Filed under: Community, F25, F25 Torrents, Fedora, Projects, PSAs, Volunteer

Powered by WPeMatico

Share Button

Cockpit Project: Cockpit Virtual Hackfest

Share Button

There’s a Cockpit Hackfest underway in Karlsruhe, Germany. We’re working on the
virtual machine functionality in Cockpit.


That means interacting with libvirt. Although libvirt has remoting functionality
it has no API that’s actually remotable and callable from Cockpit javascript code.
So Lars and Pavel started working on a DBus wrapper for the API.

At the same time, Martin is working on making the current
virsh based access to libvirt more
performant, so we don’t block on waiting until the DBus wrapper is done.

Lots of work was done understanding redux. The initial
machines code in Cockpit was written using redux, and we needed to map it’s
concept of models and state to the Cockpit way of storing state on the server
and UI concepts like dialogs. Everyone was involved.

Andreas, Garrett have been working on designs for creating a virtual machine
and editing virtual machines. Dominik started work on implementing that code.

Marius worked on deletion of virtual machines, and already has a
pull request open.

Stef worked is working on the integration tests for the virtual machine stuff
and is booting nested VMs using nested images.



Powered by WPeMatico

Share Button

Richard W.M. Jones: virt-builder Debian 9 image available

Share Button

Debian 9 (“Stretch”) was released last week and now it’s available in virt-builder, the fast way to build virtual machine disk images:

$ virt-builder -l | grep debian
debian-6                 x86_64     Debian 6 (Squeeze)
debian-7                 sparc64    Debian 7 (Wheezy) (sparc64)
debian-7                 x86_64     Debian 7 (Wheezy)
debian-8                 x86_64     Debian 8 (Jessie)
debian-9                 x86_64     Debian 9 (stretch)

$ virt-builder debian-9 
    --root-password password:123456
[   0.5] Downloading: http://libguestfs.org/download/builder/debian-9.xz
[   1.2] Planning how to build this image
[   1.2] Uncompressing
[   5.5] Opening the new disk
[  15.4] Setting a random seed
virt-builder: warning: random seed could not be set for this type of guest
[  15.4] Setting passwords
[  16.7] Finishing off
                   Output file: debian-9.img
                   Output size: 6.0G
                 Output format: raw
            Total usable space: 3.9G
                    Free space: 3.1G (78%)

$ qemu-system-x86_64 
    -machine accel=kvm:tcg -cpu host -m 2048 
    -drive file=debian-9.img,format=raw,if=virtio 
    -serial stdio

Powered by WPeMatico

Share Button

Rahul Bhalerao: Designing for scalability – a startup perspective

Share Button

What is scale? Is it the number of customers a company has? Is it the number of products that are sold? Is it the amount of revenue the company makes? Is it the amount of infrastructure one has? Or is it the number of features the product has? Well, it can be all of this or none of this. When an organization talks about scale it is not just a number. When an economist talks about it, again it’s not just a number. For an economist, the scale is about doing more with less. Scale is about perspective, about relationship between two or more variables that ultimately help you generate optimum value for your efforts.

Consider this, let’s say you are into making a lollipop. Selling 10 lollipops you earn $100 revenue of which $10 is you profit and $90 is the cost. When you increase you production you start selling 100 lollypops and earn $1000 revenue with $100 as your profit and $900 as cost. Did you really benefit from the scale here? In absolute terms, of course. In terms of ratios though, nothing has changed. Your costs are still 90% of the revenues, your cost per lollipop is still $9. Is this the scalability you would like to achieve for a sustainable business? From economic perspective, there is zero gain from this scaling as the law of economies of scale has not been realized. What if your costs actually shoot up and become $950? You are indeed not benefited from the scale. What if tomorrow, the demand for lollipops shrinks suddenly and you end up selling only 50 of them? Would your costs still be at 90% or what if the extra infrastructure that you have bought for higher production pushes your costs to $800? This is a very simple example, but the point here is that when you talk about scalability, it is not just the gigantic numbers we throw out, it is about the relationship between them and how do you benefit the most out of it.
Check out this cartoon from xkcd on what scale is not:
Source: xkcd.com/1737/

A good scalable system, whether it is manufacturing or IT, inherently must have two properties:
  1. Higher the scale (of production), lower must be the cost per unit of produce
  2. It must be a bidirectional scalability, meaning, it should be possible to scale upwards for higher demands and scale downward for lower demands with minimal impact on cost per unit of production.

The first property comes from economics while second comes from technology. This is what the entire cloud computing economy is based on. If this is not considered while designing a software system on cloud, it may turn out to be a futile exercise of following the herd on to the cloud without reaping the true benefits of a truly scalable application and cloud infrastructure. 
It is important to understand that scalability does no come as an off the shelf product, just hosting your site on cloud won’t make it scalable. It is important to understand that true scalability lies in the design. The design of not just the infrastructure but also the software would eventually impact the total scalability. Think of it in terms of web 2.0 practices. Had there been no extensive use of ajax methods and caching techniques, we would still be loading pages after pages jamming the networks, overloading the servers, apart from tiring the users with 90s internet.
While the established big players have already learned the tricks of the trade through experience and past failures, they have indeed evolved with and helped building the right ecosystem for computing scalability, the most startups don’t see the opportunity to do it right since the first step of implementation. Let’s talk about all these factors that would affect scalability and how a startup/new project can cope with it in detail in further posts.

Powered by WPeMatico

Share Button

Alexander Todorov: Producing coverage report for Haskell binaries

Share Button

Recently I’ve started testing a Haskell application and a question I find
unanswered (or at least very poorly documented) is how to produce coverage
reports for binaries ?

Understanding HPC & cabal

hpc is the Haskell code coverage tool. It produces the following files:

  • .mix – module index file, contains information about tick boxes – their type
    and location in the source code;
  • .tix – tick index file aka coverage report;
  • .pix – program index file, used only by hpc trans.

The invocation to hpc report needs to know where to find the .mix files in order
to be able to translate the coverage information back to source and it needs to
know the location (full path or relative from pwd) to the tix file we want to

cabal is the package management tool for Haskell. Among other thing it can be used
to build your code, execute the test suite and produce the coverage report for you.
cabal build will produce module information in dist/hpc/vanilla/mix and
cabal test will store coverage information in dist/hpc/vanilla/tix!

A particular thing about Haskell is that you can only test code which can be
imported, e.g. it is a library module. You can’t test (via Hspec or Hunit) code which
lives inside a file that produces a binary (e.g. Main.hs). However you can still
execute these binaries (e.g. invoke them from the shell) and they will produce a
coverage report in the current directory (e.g. main.tix).

Putting everything together

  1. Using cabal build and cabal test build the project and execute your unit tests.
    This will create the necessary .mix files (including ones for binaries) and .tix
    files coming from unit testing;
  2. Invoke your binaries passing appropriate data and examining the results (e.g. compare
    the output to a known value). A simple shell or Python script could do the job;
  3. Copy the binary.tix file under dist/hpc/vanilla/binary/binary.tix!

Produce coverage report with hpc:

hpc markup --hpcdir=dist/hpc/vanilla/mix/lib --hpcdir=dist/hpc/vanilla/mix/binary  dist/hpc/vanilla/tix/binary/binary.tix

Convert the coverage report to JSON and send it to Coveralls.io:

cabal install hpc-coveralls
~/.cabal/bin/hpc-coveralls --display-report tests binary


Check out the haskell-rpm repository
for an example. See job #45 where there is now
coverage for the inspect.hs, unrpm.hs and rpm2json.hs files, producing binary executables.
Also notice that in
the function parseRPMC is now covered, while it was not covered in the
previous job #42!

.travis.yml snippet

  - ~/.cabal/bin/hlint .
  - cabal install --dependencies-only --enable-tests
  - cabal configure --enable-tests --enable-coverage --ghc-option=-DTEST
  - cabal build
  - cabal test --show-details=always

  # tests to produce coverage for binaries
  - wget https://s3.amazonaws.com/atodorov/rpms/macbook/el7/x86_64/efivar-0.14-1.el7.x86_64.rpm
  - ./tests/test_binaries.sh ./efivar-0.14-1.el7.x86_64.rpm

  # move .tix files in appropriate directories
  - mkdir ./dist/hpc/vanilla/tix/inspect/ ./dist/hpc/vanilla/tix/unrpm/ ./dist/hpc/vanilla/tix/rpm2json/
  - mv inspect.tix ./dist/hpc/vanilla/tix/inspect/
  - mv rpm2json.tix ./dist/hpc/vanilla/tix/rpm2json/
  - mv unrpm.tix ./dist/hpc/vanilla/tix/unrpm/

  - cabal install hpc-coveralls
  - ~/.cabal/bin/hpc-coveralls --display-report tests inspect rpm2json unrpm

Thanks for reading and happy testing!

Powered by WPeMatico

Share Button

Neville A. Cross – YN1V: Sensor ultrasónico HC-SR04 en Icaro

Share Button

Para conectar un sensor ultrasónico HC-SR04 a una placa Icaro vamos a usar el conector P16 a como se muestra en la siguiente imágen.

Opcionalmente podríamos tomar corriente del banco de sensores analógicos.

En Icaro Bloques podemos ir a Archivo -> Ejemplos y escoger la carpeta hc-sr04 y abrir el ejemplo llamado ping.icr

Este firmware lo que hace es mostrar la distancia en centimetros en valores binarios en la barra de leds de la placa.

Powered by WPeMatico

Share Button

Neville A. Cross – YN1V: Icaro Bloques 1.0.8-3 y Pingüino Bootloader Versión 4

Share Button

Icaro Bloques llega a la versión 1.0.8-3 y trae como principal cambio el uso del bootloader de pingüino  versión 4.

Este bootloader esta escrito en sdcc3 y entre los cambios notables está que es más pequeño y nos deja más espacio para nuestro firmware.

El cambio se ve impulsado por problemas con en Fedora 24 y 25 en la comunicación serial. En algunos casos no se lograba montar adecuadamente el dispositivo ACM, aunque en algunos casos el PIC se colgaba al inicializar. Lo que uno veía era que la luz de estado del PIC se apagaba justo después de encender, haciendo un parpadeo de un lapso apagado largo y un breve destello.

Lo más novedoso es el proceso de ejecución y carga de firmwares. Ahora la placa entra en estado de ejecución del firmware al encender y solo entra en la rutina de carga al apretar el botón reset.

Con el nuevo bootloader el proceso de carga del firmware cambia. Los pasos son a como siguen:

  1. Dar click en el botón de “Compilar” en Icaro Bloques para compilar el firmaware
  2. Dar click en Cargar para enviar el firmaware al PIC
  3. Oprimir el botón de reset en la placa. (El led de estado parpadea de forma continua)
  4. Dar click “Aceptar” en la ventanita lanzador.py que nos muestra la comunicación de la PC y la placa
  5. Dar click en OK en la notificación del resultado de la carga.

La carga es mucho más rápida.

Otras ventajas del nuevo bootloader es que se han trabajado las librerías, y por ejemplo ahora el control de servos es más preciso.

Si bien Icaro Bloques 1.0.8-3 tiene por defecto comunicarse con la versión 4 del bootloader uno puede editar el archivo /home/user/.icaro/config.ini

turtlear = /usr/share/sugar/activities/TurtleBlocks.activity/turtleblocks.py
dir = firmware
sdcc = sdcc-sdcc

bootloader = v4

Solo hay que reemplazar el número 4 por un número 2. Con ese cambio estaremos listos para correr el programa con PICs que tengan aun el bootloader de la versión 2 de pingüino.

Pilas no esta disponible en Icaro Bloques 1.0.8-3 debido a que no se ha trabajado las nuevas librerías para comunicación Bulk. Sin embargo se ha optado por avanzar debido a los grandes problemas de comunicación con el firmaware de tortucaro para comunicación CDC.

Powered by WPeMatico

Share Button

Mathieu Bridon (bochecha): Blender is on Flathub

Share Button

I have been maintaining Flatpak builds of
Blender for some time, now. In fact at the time I
started Flatpak was still called XDG-App. 🙂

As of today, my Blender builds are now on Flathub, and
I will stop updating my personal repository.

One of the benefits of moving it to Flathub is that it is a shared resource,
where others can maintain the app so that it doesn’t rely solely on me. Another
one is that Blender is now available on i386, x86_64, but also ARM and Aarch64.

You can add the Flathub repository and install Blender from it as follows:

$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
$ flatpak install flathub org.blender.Blender

At this point you can run Blender from
your favourite graphical environment, or from the command line:

$ flatpak run org.blender.Blender

Don’t hesitate to
let us know if you
encounter any issue with this build which is not an upstream bug. (compare with
the upstream bundle)

Note: If you had previously
installed Blender from my repository,
you’ll want to uninstall it first:

$ flatpak uninstall org.blender.Blender
$ flatpak remote-delete bochecha

Powered by WPeMatico

Share Button