Jul 06

URL shortener service: https://url.joor.net (pygmy)

Reading time: 2 – 2 minutes

Lately, I started running my own URL shortener service because of Google URL shortener service is going to shut down. Below there is a short video showing how the service runs and also there is a Google Chrome extension which I created for integrating the service with the browser.

For quick access and reference the URLs are:

Final notes:

  • Base URL is not the shortest one, but for my personal requirements, it’s more than enough.
  • Service is in early stages, especially the extension. Expect errors, bugs, and unavailabilities.
  • Service is open and free for everyone. But remember, the main purpose is my personal use.
  • I know that pygmy has more features than I publish but I don’t need them and I don’t want to maintain those parts of the applications.
  • I appreciate the effort of Amit for so good application.
Jul 05

A history of connectivity in Torrelavit: from 1.200bps using packet radio to 1Gbps on fiber optics

Reading time: 5 – 8 minutes

This is a chronology of my history using the Internet, and no-Internet, connections. I never thought this is going to be possible; currently, my Internet connection is faster than my local network. The best speed test that I’ve got so far is the one that you have in the attached screenshot using an old Dell Studio XPS with Linux Mint. The paradox is that more modern computers get worst performance than this one and all of them synchronize the network card to 1Gbps with the Mikrotik CloudSwitch which acts like a gateway applying NAT rules before the fiber optic bridge.

By the way, that news at home makes me spend some time remembering all the Internet connections I had at home since 1992. During Barcelona Olimpic games I was on Netherland with a holidays family trip in that trip we met a guy who told me how to connect two computers using a ham radio station, this technique is called packet radio. I was 15 and my life changed at that instant. The idea was using a radio station of 145MHz, or 433MHz (there were more frequencies but they are unusual) connect the speaker and mic of the radio station using an audio jack to a TNC (Terminal Node Control), or a Baycom, which are at the end of the day like a modem that converts analog audio signals to digital serial port signals. Using the serial port connected to the computer a terminal application was run for user interfacing with the network. Protocol used for the WAN network was AX.25 a variant of X.25, used in the past on most ATM networks, the packet radio network had not only client stations, also BBS (Bulletin Board Systems), Weather Stations, email, FTP, nodes (repeaters), and gateways to other WAN networks like Fidonet, and Internet. How to get those resources without a searcher like Google, it’s another story.

Exchange data was a nightmare, because communication was at a bandwidth of 1.200bps on a shared media, the air, using a simplex (half-duplex)  communication. In plain words, this means to send a 10KB pictures could take an afternoon and usually, terminals weren’t multi-task so you had the computer busy doing that all the time. The first time that I run a browser was for Gopher service which inspired Web service at some point, I had two use two computers one of them running as TCP/IP to AX.25 gateway and the other with Windows 3.1 running Mosaic and using IP over parallel port (PLIP) for exchanging data with those two computers. Mosaic was the first graphical browser of the story as far as I know. Finally, I remember that I developed a small implementation of TCP/IP stack over AX.25 on an EPROM for a TNC, it was very basic but good enough for mapping ham radio IDs and TCP/IP addresses. BTW, my ham radio ID was EB3EWH.

This part of the story lasted about 5 years, I remember the late 90s when good enough plain old telephone line (POTS) was installed at home and a super modern 9600bps telephonic modem which evolved very fast to different speeds up to 56K was the only option for connecting to the Internet. We used Infovía and Infovía plus a Telefonica service for getting data network instead of regular calls to the ISPs, really painful part of the story. Slow speeds also and really expensive services for what we get. Maybe the most fun thing about this part of the history was when someone at home pick up the phone and data connection was interrupted. Other roughly 5 years with this connectivity pattern.

In the early 2000s, I installed an ISDN line at home with two 64kbps at home, on those was permanently connected to the Internet and the other one was available for voice calls. ISDN was a really interesting and very stable technology I’m out of the market currently but I think it’s still possible to buy links using so old technology.  This part of the history was shorter than the previous ones and the funniest story was a thunderstorm and lighting day when the TR1 exploited in front of me I scared a lot.

At the end of 2002 a 256Kbps ADSL was installed on top of a new POTS line installed again at home. It was like a dream, finally, I was navigating with broad bandwidth. ADSL speed up to 2Mbps it was impossible to improve the speed to higher speeds than that because I’m too far from any ADSL distribution point. I remember in 2012 I was paying for 6Mbps internet connection which was the smallest possible to hire and my maximum speed was 1.9Mbps measured with the proper equipment for quality lines test. 

In the end of 2013 I installed a WiFi link with a guy who re-sell fiber optics connection in Sant Sadurní d’Anoia using a link to the Ordal which is a mountain that I can view from home, about 10km link using 5GHz frequency. Speed was 6Mbps/300kbps. This link was active until two days ago, but since August of 2014 the main Internet connection was using another WiFi link with a company called XTA (Xarxa de Telecomunicacions Alternatives), a.k.a. WifiPenedes which is part of the Guifi.net project. This is the same company which installed fiber optics at home the day before yesterday at home. The WiFi link that I had with WifiPenedes was 20Mbps/1Mbps and currently, with the fiber optics I have 1Gbps/300Mbps and there is no backup link with any other technology. BTW, I have a 4G subscription which can be used for emergencies.

Of course will be nice to go deeper with each of those points, finding anecdotes I lived with those 26 years of history connecting to wide area networks (WAN) maybe one day I’ll find the priority for sharing so amazing moments and people that I met thanks to those networks. If I have to admit that networking changed my life and I have had access to a broad knowledge thanks to that. Thank everyone and every company which makes this possible, it has been a pleasure to enjoy this fantastic processes. I finish accepting the challenge to improve my LAN for getting the best from my new Internet connection.

Jun 06

Portable FTP server for Windows

Reading time: 2 – 2 minutes

Usually, simple things are the best, in the case I want to recommend an FTP server for Windows. This is a really simple but super useful FTP server for Windows. I’m using in Windows 10 and it works perfectly. Configuration is done in less than 10″ and installation is not required, I love that. Super portable.

Don’t expect sophisticated options but the most useful and advanced ones are there. If you need something like that my recommendation is:

Quick’n Easy FTP Server Lite by Pablo Software Solutions

Just a summary and extracted from the product webpage this is a summary of features:

  • Simple, intuitive and cool looking user interface, with several pages for managing the users, configuration and security.
  • Easy to setup using the build-in FTP Server Setup Wizard. 
  • Add new user accounts with the User Account Wizard.
  • Support for systems that are a part of a network with a router and/or firewall.
  • Configuration is saved in XML format.
  • Realtime server trace, which displays every command and it’s reply on the screen.
  • Everything can also be logged to a file.

Screenshots are always lovely, some of them are:

Finally just say THANKS Pablo for such good job and so useful stuff.

Jun 05

Android ROMs and maintenance

Reading time: 1 – 2 minutes

Some day ago I had problems with two mobile devices, the last one was with Nexus 7 tablet; the problems started because of so stupid issue I confused my Nexus 7 V2 (2013) with a V1 (2012) and of course flashing recovery and system images everything was broken. Finally, I had to re-flash stock images for recovery and system. In the middle of the process and thanks to XDA-Developers, I found a really useful toolkit called SkipSoft

I just want to remark the work done by people of SkipSoft and give thanks to them for their great work. They simplified long processes downloading and flashing images to my devices to a simple wizard process with their scripts.

BTW, thanks also to Pof who gave me the inspiration for solving my mistakes flashing improper images to the Nexus 7.

May 03

Truncate docker logs

Reading time: < 1 minute Sometimes when a container is running for a long time especially when docker logs command is called the logs dump is extra long and then a recurrent search on google for reminding how to truncate a file is mandatory for avoiding this repeating task this is the trick that it saves me from that uncomfortable long log dump.

truncate -s 0 $(docker inspect --format='{{.LogPath}}' CONTAINER_ID)
May 02

HTTPie – command line HTTP client

Reading time: 1 – 2 minutes

I imagine you are used to using curl for many command line scripts, tests, and much more things. I did the same but some weeks ago I discovered HTTPie which is the best substitute that I’ve ever found for curl. Of course, it’s also available for a lot of Linux distributions, Windows, and Mac. But I used it with docker which is much more transparent for the operative system and easy to update. To be more precise I use next alias trick for using this tool:

alias http='sudo docker run -it --rm --net=host clue/httpie'

Official website: httpie.org

Let me paste some highlights about HTTPie:

  • Sensible defaults
  • Expressive and intuitive command syntax
  • Colorized and formatted terminal output
  • Built-in JSON support
  • Persistent sessions
  • Forms and file uploads
  • HTTPS, proxies, and authentication support
  • Support for arbitrary request data and headers
  • Wget-like downloads
  • Extensions
  • Linux, macOS, and Windows support

From the tool webpage a nice comparison about how HTTPie looks like versus curl.

Mar 21

Linux: Mounting file as a partition

Reading time: 1 – 2 minutes

When we have a file with a ‘dd’ of a full disk and we want to mount a partition of that disk, we have to use an offset for jumping to the beginning of the partition that we want to mount.
Using ‘fdisk’ command we can find the partitions of that disk copied inside a file.

fdisk -l FILE_WITH_DISK_INSIDE

Once partition table is shown there is a column called ‘Start’ using the corresponding number in this column for the partition that we want we can obtain the offset required for our mounting point. Reasoning behind that is multiply start sector per number of bytes per sector.

# OFFSET = START * 512
mount -o ro,loop,offset=OFFSET FILE_WITH_DISK_INSIDE /mnt

I hope thanks to this technical note next time that I forget how to get the offset I find it fastly.

UPDATE 2018/08/29:

If you don’t want to do that manually, there is a small tool called losetup which maps the partitions of a disk image on a file.


# example, attaching partitions to loopback devices
losetup -P /dev/loop0 DISK_IMAGE
# just mount the devices now, they are /dev/loop0pX where X is the number of the partition
# dettach this assignament:
losetup -d /dev/loop0

Mar 07

socat tip: create virtual serial port and link it to TCP

Reading time: < 1 minute Create a virtual serial port and publish it on TCP port:

socat pty,link=/dev/virtualcom0,rawer tcp-listen:2101

In another computer, for instance, another virtual port can be created and connected to the previous one:

socat pty,link=/dev/virtualcom0,rawer tcp:SERVER_IP:2101

If in any of those both sides we want to open a real serial port, for instance, in the server case we can run:

socat /dev/ttyS0,rawer tcp-listen:2101

More information on socat manpage.