Montag, 2. Februar 2015

MiniMetaMessenger, Concept of a meta-data-minimizing communication platform

Mini-Meta-Messenger


Meta-Data 

Intelligence agencies grab our data, and they grab our meta-data. Data is what we write and what we read, meta-data is who is writing it, who reads it and when. From that meta-data one can derive graphs of who is connected with whom and analyse the structure of a certain group, for example people with a differing political opinion. Having this information one can now take out the most important nodes of this graph (i.e. the most important people of the group) and thus destroy it.

In a sense meta-data is even more important to intelligence agencies than the data itself. Because the data that --- for instance --- two people meet to have a cup of coffee is not very meaningful by itself, but if one of the two people were known to be part of a group which threatens the current establishment and the other one a journalist, this message might indeed be of importance. At least it would show a potentially important connection.

Collecting communication data and meta-data threatens democracy. Because if people who speak out against current politics are by default under surveillance --- because everyone is under surveillance --- they will often refrain from speaking out. Surveillance stifles free speech.


Minimizing Meta-data and Data


I want to sketch out a concept of how a messenger could be produced which removes much of the meta-data: the Mini-Meta-Messenger.

Imagine a large dashboard on some server in the internet. Imagine if everyone posted her/his messages to other people on the board. Everyone could just read them. Obviously we don't want everyone to be able to read every message. That's why all these messages would be encrypted with the private key of the sender and the public key of the receiver.

To retrieve the messages for a particular user, this user just has to download all the messages and try to decrypt them with his private key. This will succeed for all the messages which have been encrypted with her/his public key. Hence, s/he would "receive" all messages which belong to her/him.

The remaining data and meta-data is, that a particular person uploaded a message (which cannot be read easily) by the intelligence agencies and many persons downloaded *all* the messages at some later time. There is no exploitable correlation between the two persons who send messages to each other, given that they are not the only ones using the service. Further more, the messages are encrypted, hence as well the data cannot be read by a third party. The only meta-data which would be left is: when is a person writing, how many messages does s/he write and on the other hand who is reading messages and how often.

Of course there is freenet which can do dezentralized full encryption of many services. But it requires effort and skill and time to get started and many people will not find stuff there which matters to them. That's why I think that maybe a simpler approach which is also easier for the people might attract more.


Details


Each person would --- upon assigning to this service --- upload her/his public key. Like that each participant could in principle send messages to every other participant.

Whilst everyone has to download every message (for the sake of hiding the meta-data), one could choose to decrypt only those messages which come from a certain group of persons. Although providing the information of who has sent which message may reveal already too much information.

Probably instead of always decrypting the whole messages, a shorter header could be encrypted separately. A message has been addressed to a particular person if this person succeeds in decrypting the message-header.

A lot of messages are created in a service like facebook etc. A "read all messages" approach doesn't scale well with the number of people. This can be mitigated somewhat by every person posting into a specific channel. Each reader listens to a couple of channels. That way, not all of the members are mixed (and thus the number of messages to read explodes), but still may are mixed and the extraction of meta-data is severely limited.


You are very welcome to leave your comments! Let me know what you think.
Creative Commons License MiniMetaMessenger, Concept of a meta-data-minimizing communication platform by Peter Speckmayer is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.



Freitag, 27. Juni 2014

A C++ Variant type using type_info

Many computer languages don't use strict typing at all or they do have variant types which can take any type from POD types like int and double to containers or self defined classes. In C++ there is no variant type. But does one need a variant type at all? I certainly know which types I will transport (by value, by reference or by pointer) over my interfaces. While this is usually true for a well designed project, sometimes situations come up where variants would be helpful. I try to sketch out one possible way of programming a variant in C++.

Suppose you have a couple of classes derived from the same interface. Each of the classes contains potentially different variable types. Some contain an integer and a string, another one contains a vector of int a third one contains a different combination thereof.
struct Interface  
{  
  Interface () {}   
};  
   
struct A : public Interface  
{  
  A () : Interface () {}  
   
  int length;  
  std::string name;  
};  
    
struct B : public Interface  
{  
  B () : Interface () {}  
    
  int length;  
  std::vector ages;  
};  
   
struct C : public Interface  
{  
  C () : Interface () {}  
    
  std::string name;  
  std::vector ages;  
};  


In your code you've created a container of pointers to the interface.
int main (int)
{
  std::vector myContainer;
  myContainer.push_back (new A ());
  myContainer.push_back (new B ());
  myContainer.push_back (new C ());
  myContainer.push_back (new B ());
}
For some reason you want to collect all the values of all the classes A, B and C which are stored in the container. One use case is logging. You want to extract the values of all of your objects and put them into a list, a diagram or maybe an xml file. You don't want to implement all the formatting options into the classes A, B or C, neither do you want to implement it in the interface. Maybe you plan on extending the logging feature with other views which you haven't defined yet. Obviously you want just to fetch the values and do the formatting in your logging code. Hence, the task is to be able to fetch all the different types of all the objects, preferably in an easy manner.

What are the options?

  • You could write a getter function for each variable type. This is a lot of work and everytime a new variable is added, the getter function has to be added in all classes (=more work). Some of the getter functions would not have useful values to return for some of the classes if the variable is not present in this particular class. 
  • You could try to cast the the interface to all the available classes. Once the cast succeeds, the specific getters could be used. 
  • Template getters? Templates and virtual functions don't mix well. 
  • Create a variant type which can hold all the necessary variables. 

Of all the mentioned ways, creating a variant type is the most convenient way to handle the situation. But how could we write such a variant type? 
Using a variant type the solution could look like this:
enum EnumDataKey
{
  eLength,
  eName,
  eAges
};

 
struct Interface
{
  Interface () {}  
  virtual Variant getData (EnumDataKey eKey) const = 0;
};
where the virtual getData function has to be implemented specifically for each of the derived classes. The enums serve to denote which data the function shall return. It could encode simply the data type (int, double, string, etc.) or---as in this case---serve to name a specific variable (e.g. length, name, ages).

But we don't have a variant type yet. 

We don't, and as written earlier, there is no such generic type in C++. There are several possibilities to achieve such a behaviour.
  • The first possibility would be to have a class which contains a member variable for each of the types which the classes might give back. This technique works, but it's not very elegant, because we'd have to carry around a fat data structure always. If we wanted to give back a new data type we'd have to amend the fat data structure by this new type. This is not flexible and error prone.
  • The second possibility is to try to store the variables as void pointers and use type_info to encode the type information. Then on the receiver side, the type has to be built again and filled with the data from the void*. I will explore this option in the following.
Copy constructor and assignment operator of type_info are private. No copying possible. But within the execution of a program, the command typeid returns for the same types always the reference to the same type_info object (see: type_info ). I want to exploit this. 

How to build a variant type?

We can program a variant type for C++ using two classes. A class which serves to carry the data and the corresponding type_info and another (templated) class which unwraps the carried data once it is needed again. I like the feature, that the middle man (the interface) doesn't have to know anything about which types might be wrapped. The type has to be known at the time of wrapping (obviously) and then by the receiver which un-wraps it. This technique is used in the boost::any type. Since boost is not available in every project, it's good to know the techniques to be able to self-implement it. I tried to add the explanation as comments to the code.
#ifndef  __WRAP_H__
#define  __WRAP_H__

#include <typeinfo>

class IsNullException {};
class IsIncompatibleException {};

// this class wraps an arbitrary data type and can be 
// transported over virtual member functions
class Wrap
{
public:
    // c'tor 
    Wrap () 
    : pValue (0)
    , pType (&typeid(void))
    , bDoDelete(false) 
    {}

    // c'tor for an arbitrary type
    // store the variable as non-const void* in pValue
    // remember the type information in pType
    template <typename T>
    Wrap (const T& value) 
    : pValue (static_cast(const_cast(new T(value)))) 
    , pType (&typeid(T)) // store the type info in pType
    , bDoDelete(true)  // we've done "new T", remember to delete afterwards
    {}

    // assignment operator to assign an arbitrarily 
    // typed variable to the wrapper 
    // store the variable as non-const void* in pValue
    // store the type info in pType
    // we've done "new T", remember that we have to delete it afterwards
    template <typename T>
    Wrap& operator= (const T& value) 
    {
        pValue = static_cast(const_cast(new T(value)));
        pType = &typeid(T);
        bDoDelete = true;
        return *this;
    }

    // get the pointer
    inline const void* getPointer () const { return pValue; }

    // get the type info
    inline const std::type_info& getTypeInfo () const { return *pType; }

    // if no variable has been set, the wrapper is empty
    inline bool empty () const { return pValue == NULL; }

    // do we have to delete it?
    inline bool doDelete() const { return bDoDelete; }

private:
    void*                 pValue;  // value information
    const std::type_info* pType;   // type information 
    bool                  bDoDelete; // has to be deleted
};
#include <typeinfo>
template <typename T>
class UnWrap
{
public:
    typedef T value_type;

    // c'tor which takes a wrapped value
    UnWrap (Wrap wrap) : pValue(0)
    {
        // check if the type of T corresponds to the type of the
        // wrapped object
        if (typeid(T) != wrap.getTypeInfo())  // if not
            throw IsIncompatibleException (); // throw an exception
        if (!wrap.getPointer()) // check that something has been wrapped
            throw IsNullException ();
        // cast the void* back to the desired type
        pValue = const_cast(static_cast(wrap.getPointer ()));
        // in case a clone has been created at wrapping
        // the UnWrap-type has the duty to delete the value
        // and thus free the memory
        bDoDelete = wrap.doDelete ();
    }

    // free the memory if UnWrap is the owner
    ~UnWrap() { if (bDoDelete) delete pValue; }

    // cast operator; enables UnWrap<anytype> to be casted to anytype
    // where anytype is the type provided to UnWrap
    // which has to be the same type as the one which 
    // has been wrapped. 
    operator const T& () const
    { 
        if (pValue==NULL) // just to be secure 
            throw IsNullException(); 
        return *pValue; // only const value is provided
    }

private:
    T* pValue;
    bool bDoDelete;
};
We can now use the variant type as sketched out in the following. In the printData function for each of the possible types it is tested if it can be unwrapped. If not, a exception is thrown, if yes, the value is unwrapped and then copied into a local variable and subsequently printed.
#include 
#include 
#include "wrap.h"

void printData (const Interface* data)
{
    // unwrap "eName" (a std::string)
    try
    {
        UnWrap<std::string> unWrapName (data->getData (eName));
        const std::string& name = unWrapName;
        // can do some formatting here
        std::cout << "name= " << name << std::endl;
    }
    catch (...)
    {
        // can do something in the case the data doesn't
        // contain eName
    }

    // unwrap "eLength" (an integer)
    try
    {
        UnWrap<int> unWrapLength (data->getData (eLength));
        const int& length = unWrapLength;
        std::cout << "length= " << length << std::endl;
    }
    catch (...)
    {
    }

    // unwrap "eAges" (a std::vector<int>)
    try
    {
        UnWrap<std::vector<int> > unWrapAges (data->getData (eAges));
        const std::vector<intT>& ages = unWrapAges;
        for (std::vector<intT>::const_iterator it = ages.begin (), 
             itEnd = ages.end (); it != itEnd; ++it)
        {
             std::cout << "age= " << (*it) << std::endl;
        }
    }
    catch (...)
    {
    }
}
The main function for testing this type prepares some data and calls the printData function. It is shown in the following.
int main (int)
{
  std::vector myContainer;
  myContainer.push_back (new A ());
  myContainer.push_back (new B ());
  myContainer.push_back (new C ());
  myContainer.push_back (new B ());
  
  //doSomethingWith (myContainer);

  // loop over all the data in the container 
  // (or whichever data structure is holding the data)
  for (std::vector::const_iterator it = myContainer.begin (), 
    itEnd = myContainer.end (); it != itEnd; ++it)
  {
      printData (*it);
  }
}
I hope this code helps you and you can adapt it to your own needs. This blog posting has been written with C++03 in mind. With C++11 features like declspec and auto as well as move semantics this variant type can be improved. Check out as well the implementations of variant-like types in boost (e.g. boost::any, boost::variant) if they fit your need. If you can use boost in your project, you might be saved from implementing such types by yourself.
You are very welcome to leave your comments! Let me know what you think.
Creative Commons License A C++ Variant type using type_info by Peter Speckmayer is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Dienstag, 10. September 2013

Countering the surveillance

The extent of the recently exposed world wide surveillance by the USA and the UK --- and probably by all the other nations as well --- is not very surprising to those who do have a certain technical knowledge. But it seemed to have surprised those who lack this knowledge. And to be honest, the extent to which we are all snooped on did surprise me somewhat.

OK, there we are now, we're watched for, we're terrorists until proven otherwise. What can we do about that?


Image of a Cataract by Rakesh Ahuja, MD, CC BY SA


Snooping

I'll first cover the necessities to be successful with snooping, then I'll go into what we could do to mitigate the snooping power of big multi-billion-dollar agencies like the NSA or the GCHQ.
Anyone and any agency who/which snoops relies on basic properties of the data and assumptions about the data. These basic properties and assumptions are:
  • Technical assumptions
    • the data can be retrieved
    • the data can be read and its information can be extracted
    • the signal in the data can be separated from noise
    • all this can be done with the available capacities 
  • Legal properties
    • either there exists the legal permission to do the snooping
    • or there is no entity which has the power to check and enforce the compliance 


Data retrieval

Data retrieval seems to be well under control by NSA and GCHQ and their befriended intelligence agencies. Data is gathered directly from the providers and from submarine cables as well as from satellites. This should cover most of the data especially if the most important hubs are controlled. 

Reading and extracting the information

The requirements to be able do this are, that data (or at least parts of it, such as metadata) are not encrypted or can be decrypted. Nowadays most of the data is not encrypted and the the few data which is encrypted might potentially be decrypted by NSA etc. (nobody knows if there exist non-published attack vectors against the usual encryption techniques and tools). We can assume here, that except in very special circumstances where persons want to explicitly keep information secret the intelligence agencies can read the data and gather the information.


Separation of signal from noise


What is the signal?

Of all the data which is collected it is the signal which is of major interest. And typically each piece of signal is hidden within vast amounts of noise. The first question to ask is "what is the signal?". Whilst in official statements it is always insisted on the signal being terrorists, there is very much reason to doubt this. Why that? Because the first thing in data analysis is to search for signal in data sets where it is likely to find signal in. But most of the data sets in which intelligence acencies are snooping is citizens' and companies interactions, countries which are "friends" and "allies" (I put these words in parenthesis, because friends and allies would normally not be spied on), politicians of trade "partners", the UN, the EU. These are all places where it is highly unlikely to find terrorists. That leads to the question of why are the mentioned data sources used? Well, governments and institutions like the UN and the EU are targeted most likely to commit industrial espionage, and to have a leading edge in negotiations of treaties like the currently negotiated ones (TPP etc.). The citizens are snooped on to discover people with dissenting opinions. If within all the data and analysis some terrorists are found then be it, but I'd reckon, that this happens mostly by accident and is not at all the top priority.

What is the difference between signal and noise?

Once it has been established what the signal is, the data analyst can go on searching for the differences between signal and noise. Let's for a moment assume, that signal is "dissenting voices". If all those people would use a site like dissentingvoices.com (I made this up) for chatting, emailing, videoconferencing etc., then it would be easy as long the site is publicly accessible. Just take all these people and snoop on them. Then crack down on these people and you've eliminated the opposition. But real life is not that easy. Services like facebook and google are used by all types of people. Within them some which might have opposing views. All together the separation of signal and noise will probably be based on what sites you've visited, what comments you've written, what sites you're looking at, what sites you are posting and what your friends are doing. If some of your friends are visiting football sites frequently, you might be into football as well. If friends send around a party invitation, you might go to this party as well. If some of your friends oppose fracking and pipelines, you might oppose fracking and pipelines as well. If you are, then you are signal. If you actually are not opposed fracking and pipelines, you are noise from the point of view of data analysis. You might be flagged as signal, but actually you are not. You are a false positive. Obviously there are true positives (opposition in our example), then there are true negatives (people you've identified as not dissenting and who are wholeheartly in favor of fracking and pipelines) but there are as well false positives (people who your data analysis would put into the "opposition" bin, but which are not there) and false negatives (people who oppose these things, but which your algorithm didn't catch). And often there's not just true and false, but there will be a lot of gray area. You might be against fracking, but only if it is near your house.

Signal efficiency and purity

If you'd like to catch all the signal you just say, that every communication is "signal" and you, for sure, get all the signal. But you're swamped with data which you --- even with big data centers --- cannot dig through and you certainly cannot follow up on all the data because there you are limited by manpower. I presume, that take all the data they can work on with their available capacity and try to get this data as pure as possible. Still, the NSA (and their befriended snooping services) will get false positives (communications flagged as suspicious, but which in reality isn't) and false negatives (communications which are flagged as OK, but which should be signal).


What can be done to counter snooping

Encryption

Encrypting all the signal (chat, email, web-surfing, voice, etc.) by anyone would an obvious response that worked. Encryption can be done on the service provider level and/or on a personal level.

    Encryption on the provider level

Encryption on the provider level can be organized to be reasonably convenient for the user, just as more secure authentication methods like two way authentic authentication are not at all difficult to use and are barely noticed once set up. Encryption on a provider level is for sure a good thing, but whilst it helps against petty criminals it has been shown that it doesn't help against government backed snooping. It has made their quest for snooping more difficult, but it certainly hasn't stopped it. The service providers are either bought, coerced or forced into cooperating with the intelligence agencies. With the encryption happening on the providers' side all the data will find its way to the snooping agencies.

    Encryption on the personal level

Encryption on a personal level is less convenient. A major hurdle for encryption is the adaption rate. As long as only the a couple of geeks use encryption it is practically useless except to keep very specific data secret. To any person without public key one cannot send encrypted emails. That's it with encryption to spoil surveillance. But *if* we all did use encryption and *if* the NSA could decrypt at least some encryption techniques (which is probable), their computers still would have to work more on each message. Working more means more computing time spent and the results would be obtained more slowly. This is like hitting the breaks of the NSA. Yes, they wouldn't be stopped completely, but they could not analyse so much data. 


Be noisy

The snooping analysis can be screwed up by adding noise to the data. This makes distinguishing signal from background harder. More data has to be sifted through and less of the valuable data is found.

Adding noise means transforming ordinary messages from ones which are analyzed thoroughly by the NSA into messages which have to be analyzed, thus "stealing" the NSAs computing time. An easy way is to just add a couple of keywords to each email, maybe just put it into the signature. Something like

"Dear NSA, This email is important! That's why I want you to read this carefully:
Exposure to so much knowledge over social media is infectious–one of life's great joys. I am so enriched."
This page helps you to pick nice phrases: http://nsa.motherboard.tv/

Adding noise means adding random connections and communications. Imagine for every email you'd send another email with a suspicious message (containing probable NSA keywords) to a random email-address around the globe. The NSA would have to dig through double the amount of emails and they would have to filter out all these messages. They couldn't just throw them out, because there would be all the keywords in there which they are searching for. They would have to add and analyze tons of new connections between people which do not have any real connection.

It would even better to add non-random noise. If all the messages would have senders and receivers which would follow a bigger pattern (i.e. look like a network of people exchanging suspicious messages) it would be even more difficult for the NSA to filter that out and not take it for the real thing.

Of course nobody will do the hassle and send random emails to random people. But imagine if there were a computer virus which did that. Instead of sending spam advertising for crappy products the virus would send suspicious emails from imaginary people to imaginary people.

No email left behind

My emails are important. Period. My fear is, that the importance of my emails (e.g. "Hey Tom, how about cinema tonight?") is underrated by the NSA and thus this email is thrown out instantly and never gets to see a decent data analyst. I think this is deeply unfair. Maybe the importance could be enhanced (further to adding keywords) by sending the email directly (BCC or CC) to the indendet recipients at the NSA or the politicians which are in favor of snooping. I mean, if they wouldn't want to read my emails, they would oppose total surveillance. Hence, they want to read the emails and that's they should read my emails. The nice side effect of this is, that if I were a bad person (translation: identified target of the NSA because of some reason) I'd add a connection to the politician or NSA worker. If the NSA goes two to three layers of separation deep, they would find this person now already in the first layer. Great! 
Politicians probably get a lot of email and therefore the politicians are probably soon taken out of the equation. The same is true for the NSA boss. But NSA employees (and GCHQ employees or those of any other of the implicated snooping agencies) would add a nice angle into the agency itself. And it would be very justified, because my emails should be seen by a human data analyst. It's disrespectful if my emails are seen by software alone. 

"Encrypt" the data for computers, not for people


The NSA can filter emails and messages if they are easily readable by a computer. If there were a plugin for the email program which would transform the text you just wrote into a jpeg-image with a nice flower background, your recipient still could read the email. But the NSA could not. A single analyst could, and they could employ OCR programs to read the text, but they can't do that for all the emails because it would cost them too much computing time. The drawback would be, that you couldn't search in your emails for text and your email program couldn't do intelligent filtering by the message. That makes emails less convenient. But on the other hand, your less snooped on.


Use surveillance against politicians


What if all the surveillance capacity would be used to track politicians and discover corrupt behavior. If we'd track where the 1000 most important politicians of a country, whom they are talking to, what they are talking, what emails they are writing, what websites they are watching, whom they are talking by telephone, etc. Well then, we could ensure that none of their behavior is related to corruption. It is certainly easier and cheaper to watch the steps of politicians than to watch the steps of all the people of the world. And I presume, that it would be much more efficient in order to maintain freedom of the people and democracy. We could even include the 1000 most wealthy persons of a country into the mandatory surveillance list.

If such laws would be enacted, imagine how fast politicians would work on crippling the snooping capability of the NSA and other intelligence agencies. I predict that within four weeks, there would be laws and an efficient oversight entity which would limit the NSAs reach and data retention.



You are very welcome to leave your comments! Let me know what you think.


Creative Commons License
Countering the surveillance by Peter Speckmayer is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


Montag, 18. Februar 2013

Poached

Poaching is a major threat to wild animals. Drones would be a means to hunt down poachers and prevent them from killing animals from endangered species to harvest their horn, skin or other body parts. 
CC BY-ND 2.0, by Laurens from Crazy Creatures, flickr


He supported his rifle on a branch of the tree which had provided him with shadow for the last hours. His off-roader was parked just a few steps away beside him. He looked through the telescope and found the Rhino. He adjusted the rifle on his shoulder and put the animal into the cross-hair. He aimed for the shoulder blades and then a bit left towards the neck. 

One clean shot and he'll gonna make a little fortune. A good income. It was a great month so far. He had already gotten another Rhino ten days earlier. He'd cut the horn and he'd left all the rest to rot in the hot sun. It was useless to him. He wouldn't get any money from that. He sold the horn for a good price to a retailer who searched for international customers, mostly chinese TCM "doctors" or some rich guy who believed in TCM. Maybe he'd cut some skin off the animal which would be sold in small pieces as souvenirs to whomever had enough money left and got thrilled when seeing a piece of dead, nearly extinct animal. He'd heard, that the horn ---if crushed--- could make a better price than even gold. 

It would really be a great month. He felt the burst of excitation that always rose up shortly before the shot. Then there was a whirring sound. Panic! It seemed that it wouldn't be such a good month after all. There was only one chance left, a good shot, a master's shot. He turned around to where from he had perceived the whir. There he saw it, the drone was approaching. He lifted his rifle, shot - and missed. Then there was a little burst of fire below the drone. The small rocket left a trace of smoke. This was the last thing he perceived. He was dead before he could consciously feel the explosion. The car and the tree lit up as well. The explosion scared all the animals in the area and caused them to run fast. The rhino ran as well. 


Poaching the poachers

Violence is usually not an educated answer, but sadly sometimes it is the only answer which leads to viable results. Year after year species are brought close to extinction, some are extinct entirely. Reduction of zones on which animals like lions, tigers, elephants, rhinos many other species can roam, hunt, eat, mate without the interference of humans is an important contribution to the reductions in population sizes of these animals. The most senseless thing which is done and which brings the remaining small populations over the edge into extinction is poaching.

The best solution would be to go for those people who are the final buyers of the animal products coming from poaching and the retailers and thus eradicate the market. But those people are either rich, or in countries where the protection of animals is not on the top of the priorities. And there are many potential buyers. Hence, even if we could get a bunch of them, there would be still so many left who'd buy the horn, testicles, etc. The other place where poaching could be intercepted is at the place of origin of the animals. The problem there is the immense area which has to be monitored. The notorious lack of money and means for the protection of animals is countered by the large amount of money which can be gained by poaching these animals.

 A larger area has to be monitored, and it has to be done cheaper. That's where drones come into play. Compared to people, drones can be deployed much easier, they can watch large areas, they don't need pilots seated on the plane. Drones can be equipped with powerful weapons which are largely sufficient to counter the poacher's arms and they can stay a long time in the air. Given that about one third of all US military planes are already unmanned aerial vehicles (drones), using some of them for going after poachers would not decrease the usual military use significantly. The US could therefore help out the affected countries of there would be the political will. I urge to create the political will to take action!

You are very welcome to leave your comments! Let me know what you think.


Creative Commons License
Poaching by Peter Speckmayer is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Donnerstag, 17. Januar 2013

Weakness

Weak !
(CC BY-SA 3.0 by PatriciaR , referenced here)


Nobody wants to be the weakling. Even less so the people in powerful positions. They feel comfortable with their perception that they can move initiatives, laws, policies and - of course - block them.


Powerful Positions of Big Companies

Positions hold by big multinational corporations are powerful positions, because those companies, and in some cases rich individuals, have the money to back these positions up with PR, limitless litigation, buying politicians, buying laws and whatever further unlawful extensions of their company toolbox.
These positions are most often oriented solely on the short term profits of the company and of their leaders. Hence if those positions align with human rights, sustainability, protection of biodiversity, climate change, etc. it is only because of lucky coincidence.


Interaction with Politicians

More often these big players want to preserve their unsustainable business model and trample over people and nature to maintain their way. Politicians who help to implement and preserve these positions and put them into law get rewarded with money from the companies, either to be used for their personal well being or to cement their power position in the political landscape.


Weak

These politicians will now mirror the wish list of the company which pays for them in the political arena. Being backed up by large amounts of money and a machinery which can crush everyone who dares to step in their way those politicians feel powerful. What they don't realize is, that they are actually quite weak. They are just a tiny  gear. They are used. They only walk the way of the least resistance. 


Tell them!


Maybe we should tell them more clearly. They are weaklings. The people admired in history are not those who went the easy way, but those who went the hard way. The people admired in history are not those who were focused on increasing their personal profit and personal wealth, but those who risked their personal interests to achieve freedom for the people who achieved the well being of the people and  who achieved a better protection of the nature. These people (sometimes politicians) were strong. 

The others are weaklings. They flow with the stream, Let's tell them that!


You are very welcome to leave your comments! Let me know what you think.

Creative Commons License
Weakness by Peter Speckmayer is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


Freitag, 12. Oktober 2012

Good taxes

(public domain)

Working for the society


People in some jobs do good and important things for society. And people in other jobs clearly don't. Sounds pretty obvious.

I'd like to give some examples of jobs of which I think, that they are good good for society: nurse, teacher, medic, sewerman, fireman, ...

As discussed already in a recent blog post, the amount of money people earn mostly depends on their proximity to the source. The source being the flow of money. People who work in the financial industry can deviate a lot of money into their own pockets, and because they can, they do. Nurses on the other hand---to name a specific example---are far away from the source and thus are not able to deviate money into their pockets. Hence, they have to live of the leftovers trickling down.

I consider this as a problem for society. But there are ways out.

Ways out


IMO, there are basically two solutions to this problem:
  1. Regulate the wages of the people
  2. Regulate the taxes people have to pay

Regulating the wages directly would deprive the employers of the possibility to provide reward those who do good work. Since I think, that rewarding good work is a necessary ingredient to get good work done, I therefor don't like the this option.

The second option is the regulation of taxes. This is already somehow implemented in progressive tax systems where the tax rate rises progressivly with the income. Whilst this provides a redistribution of some of the wealth in the society, it treats the nurse equal to the stock market broker. The broker just earns so much more, that even with a progressive taxation he still goes home with so much more.

What income taxes should depend on


My proposal is, that taxes should not only depend on the income, but as well on the type of job which is done and its value for the society. I imagine different tax rates depending on both, on the income and on the type of job. Maybe it should be even depend on the work the company does as well.

It is of course difficult to set for each type of work the value the society gains, and probably nobody wants to give that power to a small group of politicians. Especially as today's politians don't seem to be too resistant to lobbying or even being bought completely.

But there is one entity in each nation which could have the power. It's the people. I imagine one default progressive tax by for all jobs. But all citizens can then up- and down-vote for the taxes for a specific type of job in a specific salary band. The votes of all the people and those who didn't vote is then taken. The tax for a bankster earning 10 Million Euros a year could then be set to maybe 99% by the people, if they got the feeling, that banksters don't do any good for the society. On the other hand, the fireman who saves lifes or the staff of a retirement home, who earns much less might be awarded with only 10% taxes, or maybe even 0%, who knows what people think is a fair value.

I think, this could be a really fair system. It would provide an incentive for people to work in jobs where they would help the society instead of in jobs which are just there to rip off a large share of money from the financial stream for their own profit. We are the society after all, that's why we should aim for improving our all wellbeing, ... not only mine or yours or his.

Technicalities


Of course, there are some technicalities to be solved, such as which groups of jobs are there and which job belongs to which of the groups. There is as well the issue, that some bankster might try to redefine his job description from "managing a large equity fund and firing people at will" to "cooks food for the poor". Certainly this is not desired and has to be avoided.

Ideally voting would be over the internet, but it has to be ensured, that as well computer illiterate persons can have their say. How should the calculation being done? In what time-spans the tax rate should be held constant after a change; a week, a month, a year, not at all? Hence, there are technicalities, but hey, technicalities have to be solved each and every day. I don't see any reason why such a system couldn't be implemented.



(CC BY-SA)



(public domain)

You are very welcome to leave your comments! Let me know what you think.

Creative Commons License
Good taxes by Peter Speckmayer is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.


Montag, 17. September 2012

Demand ! the responsibility

Money (Source: Wikipedia, public domain)

What defines how much people earn?




Why do some people earn the worth of a luxury yacht per month,
whilst others barely can buy enough food for their family?



Let's first point out some things which are *not* the reasons for earning a lot:

  • working hard
  • working a lot
  • doing stuff which is valuable for the society

Of course, working hard and working a lot might be a necessary ingredient for some career paths where large paychecks can be picked up, but it certainly is not a garantee. There are many people which do work hard and a lot, but earn too little to live and too much to die. If doing stuff which is valuable for the society would make you earn more, nurses, teachers, social workers, etc. would earn loads of money. But they don't.

A good education backed up with a university degree will probably increase your income compared to people doing similar things as you but who don't have that degrees. Education is a factor, probably an important one to decide in which salary band you will move around. But education is not the dominating factor which determines if you are going to earn well or if you are really earning a lot.


The dominating factors


Be close to the source

What seems to be the dominating factor on income is the closeness to the source. And the source is the stream of money. People in financial "industry"---as if this kind of work had ever deserved the denomination industry---earn on average much much more than the rest of the population. It's because they are close to the stream of money and have the possibility to deviate a fraction of this stream into their pockets. But it is not just like "hey, they are doing a good job and that's why they get their big bonuses". As it has been again demonstrated in the recent crisis, when the big financial companies win, they win, and they pay the big bonuses. When they loose, they convince the politicians to pay them their losses with tax payers money. And since they were so efficient in getting the tax payers money, the bonuses are as high as ever. The mantra of investment banks etc. could be something like: "If we win, we win big and you get nothing. If we loose, you loose big because you pay our losses such that we win again". Either way, they win and you (hello fellow tax payer) and I, we loose. If these companies would have held responsible for their losses, maybe they would be a little bit more careful the next time. But since everything went so smooth for them, they will go along as they came along so far. What could have done in the mortgage crisis for instance: Instead of rescuing the banks and handing them over unlimited amounts of money, one could have used the same amount of money or even less to rescue the people with the mortgages. But of course, the mortgage payers---although many---don't have their well payed lobby groups ready to influence the decision making in politics.


Be a manager

Then there is a further important factor for earning more than others which is, having a management position. The higher up in the company's hierarchy the more money the manager gets. Finally your pockets will be filled with even more money if the company is really large (we're talking here about several thousand employees). Bosses of these companies really get paid a lot. One could suspect, that they are overpaid. Don't get me wrong. The positions of the leaders are important ones. A company without leaders would resemble more a couple of chicken in their hen house. I agree as well, that a leader should be payed better given her/his responsibilities. But there remains the obvious question: are they really able to add so much value to the company with their work, that they would earn these many million dollars per year?

It's sometimes argued, that by paying these bosses a lot one gives credit to their responsibilities. But at the end what we can observe, when it comes to responding to these responsibilities---when a boss had failed dramatically---he (it's usually a male) gets the golden parachute easing up his life. And most of the time---if he likes to---he gets soon the chance to drive another company into the abyss. And if this is not enough, another one will follow. The heavy weighing responsibility will finally be carried by the fellow workers with the small pay. In the best case their wages get decreased, but more often the workers are simply just laid off.


Behave well


To have companies which behave well , we have to make the leaders responsible for their decisions, not only the companies as a whole (e.g. pharmacy trials on Nigerian children). If an oil company destroys a region in the Niger Delta (just to provide a random example) just to get out the crude oil, or if an oil company spills large quantities of oil to the Gulf of Mexico (just another random example), who is held accountable for that? Most of the time it is no one. Maybe sometimes the company is held responsible. They then have to pay an amount of money which is just a fraction of their quarterly profit and a fraction of the profits they gained from exploiting (and destroying) this region. What happens to the executives who are responsible for the mess? They go on. Nothing happens to them.

If we want to see responsible behavior from companies, we have to hold the people in the company responsible for their decisions and actions---foremost the bosses. It's them who have the responsibility and the power to decide how the company should handle the issues and who have the wages which correspond to this responsibility. They have to be sued personally for their decisions.


Make them respond them to their responsibilities!

Once this is done reliably, the CEOs of the big multinationals will think more carefully before harming environment or people. Companies which don't rely upon destroying nature or exploiting people are in disadvantage. Once the other options are not any longer available, the playfield is leveled for the good of the society.

We ! have to demand the responsibility , because no one else will do it for us



You are very welcome to leave your comments! Let me know what you think.

Creative Commons License
Demand ! the responsibility by Peter Speckmayer is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.