switching.software. Ethical, easy-to-use and privacy-conscious alternatives to well-known software

switching.software is a grassroots website, that is trying to let people know about ethical and easy-to-use alternatives to well-known websites, apps and other software.
Switching.software is a fork of a former website known as ‘switching.social’. It was created and maintained by an anonymous person and gained popularity in 2018 and 2019 – especially on the Fediverse.
Why can’t I paste commands into vi?
Running Vi IMproved 8.1 on an Ubuntu Gnome terminal ssh’d to a Debian VM, I need :set mouse= to be able to paste even in insert mode.
Welcome to the splinternet – where freedom of expression is suppressed and repressed, and Big Brother is watching
Electronic Frontier Foundation co-founder John Gilmore said that the internet routed around censorship. But what if the net stopped being one big, connected thing? National governments are busy walling off their own sections, and in some cases changing the technologies that underpin it. What’s more, they’re not stopping at their own borders.
There are terms for this sliced-up internet, with rules that vary between countries. Some call it digital balkanisation. Others, like Julie Owono, call it the splinternet.
This set of digital gated communities is growing. Russia has the Runet, its domestic internet infrastructure, which it has been working to make independent from the external internet since at least 2014. The country unplugged the Runet from the rest of the world a year ago in a test run to see how it would fare on its own.
Still, national calls to wall off portions of the internet are spreading. In 2013, then-Brazilian president Dilma Rouseff called on countries in the UN to build their own sovereign internet government structures. North Korea has Kwangmyong, a centrally administered network accessible only via a heavily monitored Linux distro called Red Star. Cuba has RedCubana, an alternative to the open net that houses Cuban versions of popular websites like Wikipedia, along with local apps. Iran has its National Information Network (aka the Halal internet), a government-controlled network that hosts Iranian sites and tracks all its users. It allows heavily moderated access to the outside world.
The battleground of this splinternet, and where we really see what’s at stake, is the African continent, where billions are yet to be connected.
China has invested just over $300bn in Africa in the last two decades. In 2018 President Xi Jinping pledged $60bn in assistance, investment, and loans, $10bn of which will come from Chinese companies investing in the region.
Chinese companies have been busy helping countries in Africa roll out everything from fibre networks to smart city initiatives and data centres, as the Australian Strategic Policy Institute has documented.
Pop!_OS Shell
Pop Shell is a keyboard-driven layer for GNOME Shell which allows for quick and sensible navigation and management of windows. The core feature of Pop Shell is the addition of advanced tiling window management — a feature that has been highly-sought within our community. For many — ourselves included — i3wm has become the leading competitor to the GNOME desktop.
How To Install Pop Shell Window Tiling Extension On Ubuntu 20.04 Or 20.10, Fedora 32 Or 33, Debian Bullseye Or Sid, And Arch Linux Or Manjaro
Tiling Windows in Openbox
Openbox is a stacking window manager, but there is a simple shell script called winfuncs, which can be used to tile the openbox stacked windows at any time. Winfuncs is based on wmctrl, an old command line tool that provides access for doing many neat things to many modern Linux window managers. This is almost as good as having a tiling manager; it only fails in that new windows opened after a tile has been completed will not be automatically put into the tiling scheme. Each time a new window is opened the tiling button or key has to be re-applied to include it in the tiling. Winfuncs generates two tiling modes, one displays the open windows in a rectangular matrix mode assigning the same area to each window and one stacks the windows in an orderly, regular manner in the upper left corner of the screen.
Openbox-tiling
Keybinds for tiling windows in Openbox
Organizing and Tiling Your Windows on #Openbox Using Only… Openbox
I first stumbled across the idea of using tiling with xtile and then etile, and they worked pretty okay. But I would have liked something native to Openbox and with a bit more configuration. So I was thrilled to see Thomas Hunter’s post about treating Openbox like a tiling windowmanager.
When Big Brands Stopped Spending On Digital Ads, Nothing Happened. Why?
What the heck is going on? Big brands turned off millions of dollars of digital ad spending, and saw no change in business outcomes. Small businesses tuned their digital marketing and reduced the number of ad impressions, clicks, and traffic to their sites, but saw business activity go up, instead of down.
Some brands paused digital ad spending in 2020, due to the pandemic. If they saw no change in business outcomes, they can be very selective in what spending they turn back on, because those expenses were not driving incremental business anyway. Other advertisers reduced the number of websites and mobile apps showing their ads by going to a strict include-list. This prevents the vast majority of fly-by-night fake sites and mobile apps from sapping their digital ad budgets. And finally, smart advertisers should run more controlled experiments like eBay did in 2012 and prove to themselves what portion of digital advertising truly drives incremental business outcomes, versus the portion of the spending that is just wasted to bot activity.
City roads. Draw all roads in a city at once

This website renders every single road within a city
La Colmena. Historias de un encierro
La Colmena es un podcast de crónicas sonoras donde trataremos de reflejar los días de confinamiento durante la crisis del coronavirus
COR. On Collaboration
Hola, gente contagiada. Este grupo de Telegram es una virus-emergency-version-conversation del programa radiofónico «On Collaboration». Qué supone o qué podemos aprender de lo que está haciendo la ciudadanía para apoyarse mientras la crisis, dentro de los tiempos en los que nos movemos con la familia en casa, y demás.
Como este grupo se convierte en podcast, nos comunicamos únicamente por notas de voz. Por favor, hablad mucho, o hablad poco, escuchad todas o no escuchéis ninguna de las notas de voz, sentíos cómodos en este grupo de hacer lo que queráis y cuando queráis de aquí adelante.
Hola gente contagiada de civismo, de curiosidad, de necesidad de aprendizaje, de compañía. Queremos recuperar las inteligencias colectivas, las estrategias, herramientas y vivencias en torno a la colaboración y los nuevos agenciamientos producidos en este contexto tan crítico y especial del Sars-Cov2 en nuestra realidad.
Pues, adelante.
Masks Work. Really. We’ll Show You How

When you wear a mask, “you protect yourself, you protect others, you prevent yourself from touching your face,” he said. And you signal that wearing a mask is the right thing to do.

Forest Bot: I make tiny forests!

A Mastodon bot that makes tiny forests.
Thunderbird’s New Home
There was a time when Thunderbird’s future was uncertain, and it was unclear what was going to happen to the project after it was decided Mozilla Corporation would no longer support it. But in recent years donations from Thunderbird users have allowed the project to grow and flourish organically within the Mozilla Foundation. Now, to ensure future operational success, following months of planning, we are forging a new path forward. Moving to MZLA Technologies Corporation will not only allow the Thunderbird project more flexibility and agility, but will also allow us to explore offering our users products and services that were not possible under the Mozilla Foundation. The move will allow the project to collect revenue through partnerships and non-charitable donations, which in turn can be used to cover the costs of new products and services.
Killed by Mozilla

A list of discontinued Mozilla products and services.
Amador Fernández-Savater: «El virus son unas lentes para ver la realidad, nos está diciendo cómo es nuestro mundo»
Gobernar es partir de un plan a priori, habitar es escuchar.
… hay que quedarse en casa. ¿Y la gente que no tiene casa? Hay que escuchar qué es lo que pasa para poder actuar en ello.
el virus son unas lentes a través de las que mirar la realidad.
La palabra Apocalipsis significa revelación. Se revela lo escondido. Estamos en un momento en el que, a través de lo que nos muestra el virus, podemos repensar la realidad y transformarla.
El modelo nos pone por debajo. Hay que pensar en una política sin modelos, partir de lo que está pasando.
La opción del libro es esta segunda: asumir activamente, no nostálgicamente, la condición de huérfanos de una revolución que no tiene apego a la realidad.
Esa idea de militancia nostálgica que dice que todo lo que no es el modelo es posmodernismo, es anclarnos a la tristeza y no escuchar lo que ocurre.
YESSS #22 – Warriors confiné.es
Confinement oblige, ça fait maintenant un mois qu’on zone presque toutes chez nous, mais on a tenu à vous concocter un épisode un peu spécial, dans l’espoir de vous redonner le sourire :).
Elles s’aiment, elles nous aiment et nous apprennent à nous aimer, elles se mobilisent ou bien elles stagnent et emmerdent qui ça dérange, elles diffusent, elles écrivent, elle partagent… nos warriors en confinement vont vous réconcilier avec vos corps, vos envies et non envies, et c’est de ça, JUSTE de ça dont on a besoin en ce moment.
Voilà donc un épisode auto-calin pour vous faire du bien !
ArchiveBox. Your own personal internet archive
ArchiveBox is a powerful self-hosted internet archiving solution written in Python 3. You feed it URLs of pages you want to archive, and it saves them to disk in a varitety of formats depending on the configuration and the content it detects. ArchiveBox can be installed via Docker (recommended), apt, brew, or pip. It works on macOS, Windows, and Linux/BSD (both armv7 and amd64).
València per l’aire
La plataforma social «València per l’aire» som una iniciativa organitzada de ciutadania col·lectiva, autònoma i plural. Els motius i finalitats generals que ens mouen cerquen solucions eficaces que milloren la qualitat de l’aire urbà de la ciutat de València i de l’entorn metropolità. Ens hem dotat de mitjans tècnics propis que són necessaris per a realitzar mesuraments i vigilància sobre la qualitat de l’aire. Produïm i difonem informació objectiva i socialment accessible sobre la contaminació de l’aire de València i la seua àrea metropolitana. També realitzem un seguiment continuat i unes valoracions especifiques per zones sobre la composició de l’aire i la presència de components tòxics.
NSA whistleblower Edward Snowden: ‘I don’t want to live in a society that does these sort of things’
PAN #44 Litio en Bolivia, accesibilidad digital y adicciones a las series
Comenzamos con un audio que nos envía Colectivo Disonancia desde Chile. Analizamos la relación entre Elon Musk y el litio de Bolivia. Hablamos sobre accesibilidad en el mundo de la tecnología. Cerramos con reflexiones en torno al enganche que tenemos a las series
BEM – Block Element Modifier
BEM — Block Element Modifier is a methodology that helps you to create reusable components and code sharing in front-end development.
BEM is a highly useful, powerful, and simple naming convention that makes your front-end code easier to read and understand, easier to work with, easier to scale, more robust and explicit, and a lot more strict.
The BEM approach ensures that everyone who participates in the development of a website works with a single codebase and speaks the same language. Using BEM’s proper naming convention will better prepare you for design changes made to your website.
Instagram Scraper
instagram-scraper is a command-line application written in Python that scrapes and downloads an instagram user’s photos and videos. Use responsibly.
etalab. Demande de Valeur Foncière

Cette application est proposée par Etalab, département de la DINUM, et permet de visualiser les données DVF (demandes de valeurs foncières), correspondant aux mutations à titre onéreux réalisées les 5 dernières années. Les données DVF brutes sont téléchargeables sur le site https://www.data.gouv.fr depuis le 24 avril 2019 et sont produites par la direction générale des Finances publiques. Vous y trouverez des informations sur le cadre technique et légal de cette publication.
A quoi correspond le prix affiché ?
Il s’agit dun prix «net vendeur», c’est-à-dire ne comprenant ni frais d’agence immobilière, ni frais de notaire. En cas de vente de mobilier (une cuisine équipée par exemple) avec le bien immobilier, le montant de ce mobilier n’est pas compris dans le prix affiché. La TVA est incluse.
What is the difference between venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv, etc?
PyPI packages not in the standard library:
virtualenvis a very popular tool that creates isolated Python environments for Python libraries. If you’re not familiar with this tool, I highly recommend learning it, as it is a very useful tool, and I’ll be making comparisons to it for the rest of this answer.It works by installing a bunch of files in a directory (eg:
env/), and then modifying thePATHenvironment variable to prefix it with a custombindirectory (eg:env/bin/). An exact copy of thepythonorpython3binary is placed in this directory, but Python is programmed to look for libraries relative to its path first, in the environment directory. It’s not part of Python’s standard library, but is officially blessed by the PyPA (Python Packaging Authority). Once activated, you can install packages in the virtual environment usingpip.pyenvis used to isolate Python versions. For example, you may want to test your code against Python 2.7, 3.6, 3.7 and 3.8, so you’ll need a way to switch between them. Once activated, it prefixes thePATHenvironment variable with~/.pyenv/shims, where there are special files matching the Python commands (python,pip). These are not copies of the Python-shipped commands; they are special scripts that decide on the fly which version of Python to run based on thePYENV_VERSIONenvironment variable, or the.python-versionfile, or the~/.pyenv/versionfile.pyenvalso makes the process of downloading and installing multiple Python versions easier, using the commandpyenv install.pyenv-virtualenvis a plugin forpyenvby the same author aspyenv, to allow you to usepyenvandvirtualenvat the same time conveniently. However, if you’re using Python 3.3 or later,pyenv-virtualenvwill try to runpython -m venvif it is available, instead ofvirtualenv. You can usevirtualenvandpyenvtogether withoutpyenv-virtualenv, if you don’t want the convenience features.virtualenvwrapperis a set of extensions tovirtualenv(see docs). It gives you commands likemkvirtualenv,lssitepackages, and especiallyworkonfor switching between differentvirtualenvdirectories. This tool is especially useful if you want multiplevirtualenvdirectories.pyenv-virtualenvwrapperis a plugin forpyenvby the same author aspyenv, to conveniently integratevirtualenvwrapperintopyenv.pipenvaims to combinePipfile,pipandvirtualenvinto one command on the command-line. Thevirtualenvdirectory typically gets placed in~/.local/share/virtualenvs/XXX, withXXXbeing a hash of the path of the project directory. This is different fromvirtualenv, where the directory is typically in the current working directory.pipenvis meant to be used when developing Python applications (as opposed to libraries). There are alternatives topipenv, such aspoetry, which I won’t list here since this question is only about the packages that are similarly named.
Standard library:
pyvenvis a script shipped with Python 3 but deprecated in Python 3.6 as it had problems (not to mention the confusing name). In Python 3.6+, the exact equivalent ispython3 -m venv.venvis a package shipped with Python 3, which you can run usingpython3 -m venv(although for some reason some distros separate it out into a separate distro package, such aspython3-venvon Ubuntu/Debian). It serves the same purpose asvirtualenv, but only has a subset of its features (see a comparison here).virtualenvcontinues to be more popular thanvenv, especially since the former supports both Python 2 and 3.
Recommendation for beginners:
This is my personal recommendation for beginners: start by learning virtualenv and pip, tools which work with both Python 2 and 3 and in a variety of situations, and pick up other tools once you start needing them.
PrivacyTools. Encryption and tools to protect against global mass surveillance

You are being watched. Private and state-sponsored organizations are monitoring and recording your online activities. PrivacyTools provides services, tools and knowledge to protect your privacy against global mass surveillance.
Videoconferencing Guide

Due to COVID-19, many folks are evaluating or using videoconferencing or video chat. This chart compares several popular systems.
HackCurio: Decoding the cultures of hacking
Hack_Curio is a video portal into hackerdom that helps explain why hacking is one of the most important phenomena of global culture and politics in the late 20th and early 21st century.
They are people of different kinds: they are young and old, men, women, and nonbinary. They are not invisible, immaterial, hidden or cloaked except, of course, when they want to be. Hackers are funny, and scary; hackers are do-gooders, and assholes; they write code; hunt for bugs; tell the government to fuck off; land in jail (and even break out of jail); they work for three-letter agencies and expose them; they secure and break into our systems; invent new laws; bitch and rant; whistle, hum, and rap.
USB-C Introduction: What You Really Need to Know About the Connector Taking Over the World

Whereas USB-A connectors have to be plugged into their ports in a specific orientation, the symmetry of the oval shaped USB-C connector head, along with the pin configuration within it, allows the USB-C connector to be completely reversible…
With two-way charging, a USB-C port has the potential to either output power in order to charge a connected device, or input power from a connected device in order to charge itself.
Alt Mode allows USB-C ports to transfer data/video via multiple interfaces, including the increasingly popular DisplayPort video interface. USB-C ports which are able to transfer DisplayPort signals are either called USB-C DisplayPort or DP Alt Mode. They allow you to connect video sources (e.g. PCs, Blu-Ray players, etc.) and display devices (e.g. TVs, projectors, etc.) that support DisplayPort to each other via their USB-C ports to broadcast high-definition video.
Twenty Minutes With A Pinephone
The last thing I’m going to mention, and this is on me not Pine64 in any way, it caught me off guard that it’s running Manjaro. It shouldn’t have since it’s on the box and on the phone itself, but it did. I’ve been using Mobian with Phosh on the PineTab, and Manjaro with Phosh looks pretty much identical, but obviously tools like apt aren’t there. Tomorrow when I have the chance to look around a little bit more, I’m going to have to get myself in the Manjaro head space instead of a Debian based distro. I’m looking forward to it.
Splinternet
The splinternet (also referred to as cyber-balkanization or internet balkanization) is a characterization of the Internet as splintering and dividing due to various factors, such as technology, commerce, politics, nationalism, religion, and divergent national interests. «Powerful forces are threatening to balkanise it», writes the Economist weekly, and it may soon splinter along geographic and commercial boundaries. Countries such as China have erected what is termed a «Great Firewall», for political reasons, while other nations, such as the US and Australia, discuss plans to create a similar firewall to block child pornography or weapon-making instructions.
City Quitters Book
What does it mean to leave the city behind? Can the reality of living in the countryside fulfil our desire for a better, simpler, more creative life? My book sheds a light on what rural life can be like today, with all its joys and challenges, providing a fresh look at the people and scenes thriving outside urban spaces.
From experimental co-habitation in a renaissance castle to oversized artworks on a farm, City Quitters offers a global perspective on creative post-urban life: 22 stories from 12 countries and five continents, all based in places with fewer than 10,000 inhabitants.
France GeoJSON

Le projet Github france-geojson propose au format GeoJSON les cartes des régions, départements, arrondissements, cantons et communes de France (métropole et départements d’outre-mer) à partir des données publiées par l’IGN et l’INSEE.
Ce site permet de rechercher, visualiser et télécharger individuellement chacun de ces fichiers dans un format optimisé. Pour plus de détails ou pour accèder à la version non optimisée des tracés, cliquez sur le bouton ci-dessous.
La tecnología 5G no reducirá la brecha digital y podría incluso empeorarla
La industria de la telefonía móvil está en las puertas de una nueva revolución, solo que es una que tiene poco o nada que ver con incrementar el acceso o la asequibilidad. De hecho, ni siquiera está claro cuándo el 5G empezará a funcionar en alguna escala. Según la propia estimación de la GSMA: “La adopción global del 5G será solo de alrededor de un 16% en 2025”.
Un problema fundamental es que el 5G no está centrado en los humanos. La comunicación entre los seres humanos es solo una pequeña parte del paquete, como también lo es el acceso a la información y el diálogo entre pares. Como enfatizaba mi texto previo, hay un enfoque importante en facilitar las comunicaciones de máquina a máquina (“Internet de las Cosas o IoT”) y en convertir al 5G en una plataforma de distribución mediática para televisión HD, gaming, realidad virtual y otros. Cuando la gente ya no es el foco intrínseco del sistema de comunicación, entonces algo fundamental ha cambiado en la naturaleza y el propósito de la red.
La tecnología 5G es increíblemente cara de desplegar, incluso en condiciones urbanas óptimas. Las estaciones base son caras y se necesita muchas de ellas, y además requieren una costosa infraestructura de soporte para operar, como cableado de fibra óptica de alta capacidad. Esto tiene sentido si quieres crear una red muy densa que pueda movilizar muchos datos a mucha gente en un área pequeña. Esto no tiene sentido para áreas rurales, donde generalmente tienes que cubrir pocas personas en un área grande. Como sabemos de nuestra situación actual, a las redes móviles se les dificulta< operar de forma sustentable en ambientes rurales donde las densidades de población y el ingreso disponible de la gente son menores. Es por esto que los operadores tienden a evitar construir cualquier cosa en este tipo de lugares. Si los grandes operadores deciden no construir en nuevos lugares, el hecho de que sus licencias de espectro sean nacionales, significa que otros no podrán construir redes. Adicionalmente, el 5G en la mayoría de los casos, requiere que los operadores acceden a nuevas bandas espectrales, lo que no es barato. Los operadores de tecnología móvil están invirtiendo grandes sumas de dinero para acceder a espectro de ondas milimétricas para 5G, cuyo uso no es factible en áreas rurales, ya que estas frecuencias muy altas no son adecuadas para cubrir grandes áreas.
¿Quién realmente necesita el 5G?
Además de las noticias que relacionan el 5G con el covid-19 y otras ideas conspiranoicas, aún no está claro que este tipo de tecnología tenga afectaciones a la salud, ya que hay controversia en los estudios y no se ponen de acuerdo. Lo que sí es seguro es que el 5G significa más fabricación de dispositivos, antenas, cables, servidores y aparatos de todo tipo, que se construyen con minerales, que se extraen de minas, que afectan gravemente a la tierra y el territorio. También llevará aparejada mucha obsolescencia y renovación de equipos, y por tanto, mayores cantidades de residuos tecnológicos, que irán a parar a vertederos, ríos, costas, que también afectarán gravemente a la tierra y el territorio. Es decir, a muchas personas.
Y estar a la última en tecnología para acceder a estas redes ¿significará trabajar más para consumir más tecnología? ¿En qué condiciones laborales? Pues con el 5G también se prevé más automatización en puestos de la industria y los servicios. Suena a más precariedad, deslocalización, desempleo. ¿O vendría acompañado de dignificación de otros puestos de trabajo y rentas básicas?
Pero también con consecuencias geopolíticas, como hemos estado viendo con la pugna entre Estados Unidos y China. ¿Dentro de unos años habrá varios Internet, según los bloques geopolíticos? Todo apunta a ello.
Rusia otorga el permiso de residencia permanente a Edward Snowden
Kucherena ha explicado que el estadounidense pudo beneficiarse de este estatus gracias a los cambios de la legislación migratoria rusa aprobados en 2019. El abogado también señala que la solicitud fue presentada en abril del presente año.
JavaScript — from callbacks to async/await
Asynchronous requests will wait for a timer to finish or a request to respond while the rest of the code continues to execute. Then when the time is right a callback will spring these asynchronous requests into action.
Generators
One use for generators is that they allow you to have async code looking like sync.
Instead of returning with a return, generators have a yield statement. It stops the function execution until a .next is made for that function iteration. It is similar to .then promise that only executes when resolved comes back.
Async/Await
This method seems like a mix of generators with promises. You just have to tell your code what functions are to be async. And what part of the code will have to await for that promise to finish.
How to run async JavaScript functions in sequence or parallel
The async and await keywords are a great addition to Javascript. They make it easier to read (and write) code that runs asynchronously. That includes things like:
API calls (using fetch or a library like axios);
Timeouts (though these need a little extra work); or
Reading/writing files if you’re using NodeJS.
I’m going to assume you’re familiar with Promises and making a simple async/await call. Where it can get tricky is when we have a whole bunch of tasks in an array. You might run through the array expecting calls to run one-by-one. But instead, they run through all together and don’t wait for each individual item to resolve. Or, you might find yourself with the opposite problem. You run through your array in a loop, wanting them to run in parallel. But instead, it waits and does them one by one. And sometimes, you try something and it doesn’t work at all. The program just continues after the loop instead of waiting until the calls are all done. You end up wondering if there’s something you’re missing.
JavaScript Promises: An introduction
Promises simplify deferred and asynchronous computations. A promise represents an operation that hasn’t completed yet.
A promise can be:
fulfilled – The action relating to the promise succeeded
rejected – The action relating to the promise failed
pending – Hasn’t fulfilled or rejected yet
settled – Has fulfilled or rejected
Ajax — Async, Callback & Promise
Promise is used to overcome issues with multiple callbacks and provide better way to manage success and error conditions.
Promise is an object which is returned by the async function like ajax. Promise object has three states
pending :- means the async operation is going on.
resovled :- async operation is completed successfully.
rejected :- async operation is completed with error.
There are two parts using a promise object. Inside async function (Part1) and where its called (Part2).
Part1 — Inside Async function,
Promise object is created.
Async function returns the promise object
If async is done successfully, promise object is resolved by calling its resolve method.
If async is done with error, promise object is rejected by calling its rejected method.
Part2 — Outside Async function
Call the function and get the promise object
Attach success handler, error handler on the promise object using then method
Cross Domain Call
By Default, AJAX cannot make cross domain call, browser will reject the calls to the different domain. In order to make cross domain call there are two options
Using CORS
Using JSONP
Both the options requires some server changes. It cannot be done purely using javascript.
CORS is the new way to deal with cross origin AJAX request. github api are CORS enabled. In order to enable CORS, response should contain Access-Control-Allow-Origin header with the domain value or * to work for all. Github has set as *.
JSONP can also be used if CORS cannot be enabled by server or for old browsers. JSONP actually uses script tag to get the data from the server. Script is allowed to be fetched from any domain, So in JSONP, we need to create a script with the url as src and the server has to wrap the response in a callback function. Response sent by server is actually a javascript code which contains data inside a wrapper function. In JSONP, there is no ajax call being made.
Download link for Google Spreadsheets CSV export – with Multiple Sheets
Every document in Google Sheets supports the «Chart Tools datasource protocol», which is explained (in a rather haphazard way) in these articles:
«Creating a Chart from a Separate Spreadsheet»
«Query Language Reference»
«Implementing the Chart Tools Datasource Protocol»
To download a specific sheet as a CSV file, replace {key} with the document’s ID and {sheet_name} with the name of the sheet to export:
https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}
The datasource protocol is quite flexible. Various other options include:
Response Format: Options include tqx=out:csv (CSV format), tqx=out:html (HTML table), and tqx=out:json (JSON data).
Export part of a sheet: Supply the range={range} option, where the range can be any valid range specifier, e.g. A1:C99 or B2:F.
Execute a SQL query: Supply the tq={query} option, such as tq=SELECT a, b, (d+e)*2 WHERE c < 100 AND x = 'yes'. Export textual data: Supply the headers=0 option in case your fields contain textual data, otherwise they might be cut out during export.

