Development seq2vid

seq2vid 0.2 released

After 10 months of development, my command-line video composer seq2vid has a new release! This new version 0.2 has several new features and improvements.seq2vid

What is seq2vid?

seq2vid is a command-line video composer for GNU/Linux. It reads a sequence of texts, images, and videos defined in a text file and renders them all into a video. seq2vid can compose videos much faster than conventional (GUI-based) video editing software. It can also be deployed in batch processes and for automatically generating videos out of dynamic content. It is a free software project (GPLv3+ licensed) hosted on GitLab.

What’s new in seq2vid 0.2?

New features for users
  • A new textblock segment type: Now you can have segments with long, left-justified text blocks (commit, segment reference in the wiki).
  • A new fade transition style: You have the option between morph (the default transition effect) and fade to switch between your segments (commit). With fade, segments fade to/appear from the background.
  • New controls for extracting portions of a video: In video segments, you can now specify start_time and end_time parameters to include only a part of the video between two time points (commit).
  • New option for transition times: With the new parameter time_transition_pre, you can override the transition time for the previously defined segment (commit). This is especially useful for the POST segments of templates.
  • New and refined examples: Now you can get a better idea of what seq2vid is capable of, by reading the examples page of the wiki, or by looking at the examples directory in the code.
Fixes and enhancements
  • Better I/O management: Input/output files are now read/written where the seq file resides, not where the seq2vid scripts do. Several paths are also searched automatically to find assets mentioned in the input sequence files (commit).
  • Better temp file organization: All temporary files are now stored in a system-provided directory, usually inside /tmp (commit).
  • Default output video size: Dimensions of the output video now match those of the input video by default. A reasonable chain of priority is added for overriding the default video dimensions in the sequence and/or template file (commit).
Internal changes for developers and large deployers
  • There is a new page in the wiki that explains how seq2vid works.
  • seq2vid now defaults to ffmpeg (instead of libav-tools) for handling most video processing tasks (thank you hnrzi ?). The dependency on mencoder still exists though, since it produces higher-quality videos in some cases (commit).
  • A new unit test system has been added—currently containing 6 tests—for a fast and reliable development process. Tests are based on output file checksums, and the system provides an option to easily calibrate the tests for each development environment.
Known issues
  • In Fedora 26, fonts defined in the default template cannot be found. This is due to mismatch in the font naming conventions between Ubuntu and Fedora. This causes warning messages when building segments. Nevertheless, fonts are replaced by available system fonts as fallback.
  • In openSUSE Leap 42.3, the fallback mechanism for non-existing fonts does not work. This causes the text to not show up in the video output. A temporary workaround is to make sure that fonts are defined with exactly the same names as installed in the system.


It’s easy to use seq2vid. All you need is a GNU/Linux box with a few multimedia libraries installed. Grab the the code, uncompress it, and start playing. I will appreciate your comments, suggestions, and especially feature requests!

Development Hardware

Live hardware hacking!

Recently I did something that I never thought would be possible: I short-circuited a chip on a laptop while it was on, and by that I could get some work done!

My goal was to remove the BIOS supervisor password from an old Thinkpad laptop that I bought second hand. The owners themselves forgotten what the password was, so I thought I would give the laptop a hand to free itself up!

But there was a little problem! According to Lenovo’s official documentation, the only way to reset/remove the BIOS supervisor password was to replace nothing less than the entire laptop motherboard ?.So, is there really no way to remove the supervisor password from this laptop’s BIOS? Well it turns out there is! Thanks to the always amazing tinkerer community on the Internet, I found about a way to remove supervisor password from Thinkpad laptops. But honestly, I did not really believe what I read until I did it myself ?.


How did I remove the supervisor password?

First, I had to find the EEPROM chip on my motherboard. I found it from a page that lists the location of this chip in many Thinkpad models. Apparently, this chip is where the supervisor password is physically stored and enforced in the hardware.

Then, I removed the keyboard…Then the palm rest…And finally, this is the EEPROM chip.

The next step was to use a screwdriver to short-circuit two pins (SCL and SDA) on the EEPROM chip. After turning on the computer and just before pressing F1 to load the BIOS setup, I short-circuited the two pins on the EEPROM chip. The timing for doing this was very critical and it took many unsuccessful tries, but eventually the BIOS loaded with the supervisor password apparently disabled.

When the BIOS setup screen loaded in a temporarily liberated state, without disconnecting the two pins, I reset the supervisor password to blank. (I leave it as a fun exercise to the reader to imagine me with one hand holding the screwdriver in place and with the other hand pressing keys on a wobbly keyboard that hangs from the laptop by a thin wire ?) Finally, I released the screwdriver and let the laptop reboot. After that, there was no supervisor password left on the BIOS ?.

Clearly, I do not really understand what I did in this process! I still don’t exactly know what an EEPROM chip is and what it does. Nevertheless, the whole thing worked, and I did something that I’d never done before: live hardware hacking on a running computer!